找回密码
 注册
查看: 4497|回复: 2

CentOS7环境部署虚拟ceph集群

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-12-13 08:54:05 | 显示全部楼层 |阅读模式
二 ceph简介
  • 分布式存储
  • ceph层次结构
  • 最简部署方式:一个管理节点、一个mon节点、两个osd节点) C' n3 z- p) [2 h4 X, ~- i5 s* {3 v
三 环境准备
  • 镜像选择4 h2 p/ k& Y  g" m8 D. l# ]
CentOS-7-x86_64-Minimal-1810.iso
- f- Z8 D5 R3 a
  • 资源配置
    ) C8 t4 h0 K9 T/ l5 F' F! W
mem:1G$ h/ ]; Z2 c' K
disk:50G
! O! G6 ~5 n5 }' H- Fcpu:1core
; U) @" E. b2 Y: i' R
  • 虚拟机名称
    7 K8 K! I  L/ u$ w# Y+ B; Q
ceph
/ b- `) ^( c! q6 z
  • 虚拟网络选择
    ' F, [$ V  o) }! s( B
NAT:default
  `4 z" O' }, M0 d2 K4 v4 i
四 ceph节点工具安装本节操作在上一节创建的虚拟机中执行, P- \( K3 r- I! H
  • 安装常用网络工具
    6 O! h! ?  @/ e6 F9 T) [) m; S( r
yum install net-tools -y# t6 w& J( v* ?
  • 网络修改,使用静态IP
      f5 U0 Y" U5 q
ifconfignetstat -rn: ?, p# }6 I, ~7 l6 o
结果如下图:! y4 S3 y4 J7 _$ g; R0 C

# j3 {+ P" a$ H+ D! T8 Q
' E# b! {0 j# P& m" j3 b5 G$ C( Z+ Yhttp://upload-images.jianshu.io/upload_images/6582575-6319afd9d040f3f3.png?imageMogr2/auto-orient/strip|imageView2/2/w/756/format/webp4 B  k, _6 L5 A0 I( k  r9 Q7 y! J
9 a! a8 H6 X8 p
CEPH_Node_01.png( v5 V! U2 T, ?1 `( v5 z
4 d* K& o: o4 |% t  v
) _! P9 E! L2 p' g+ ^* h0 ~
将这些信息写到配置文件中固化:
+ g" s2 j; u: A0 Y# ]2 m. I修改DNS0 g/ y1 q1 k7 q) n$ Z& [
echo "NETWORKING=yes" >> /etc/sysconfig/networkecho "DNS1=114.114.114.114" >> /etc/sysconfig/networkecho "DNS2=8.8.8.8" >> /etc/sysconfig/network% P6 a. t; U8 V! q- ?
修改静态IP
1 R) N1 l2 P% j5 Mvi /etc/sysconfig/network-scripts/ifcfg-eth0
4 V1 C$ o: [$ Z8 M( {修改如下配置,其他配置不变2 j5 n% C. i7 U7 w: F) y, Z8 n$ |! [
#BOOTPROTO="dhcp"  //这一行需要注释掉BOOTPROTO="static"NM_CONTROLLED=noIPADDR=192.168.122.122 //IP 和原先IP一样也可NETMASK=255.255.255.0GATEWAY=192.168.122.1
& V) M; V' x# a添加主机名1 G& Z7 E( }7 _. K% B$ }8 R' |
echo "192.168.122.122 node" >> /etc/hosts echo "192.168.122.123 node1" >> /etc/hosts echo "192.168.122.124 node2" >> /etc/hosts echo "192.168.122.125 node3" >> /etc/hosts
) t3 T% F" y- k; ?  x9 [0 l; U重启网络服务7 E! \; W# J7 \- \* P* }! C4 d
service network restart
) f3 b! S5 l1 \/ s
NOTE:如果你是ssh到这个虚拟机的,会失去连接,可以关闭终端重新连接, T) I# w8 h/ O$ }+ e
  • yum相关
    0 [4 a; y& }! |
  • 安装第三方源管理工具, i: b- o1 ~3 I: G: H2 N
yum install -y https://dl.fedoraproject.org/pub ... est-7.noarch.rpmyum install -y yum-plugin-prioritiesyum install -y yum-utils
; Q5 A' B: P3 q! C# z& h
  • 源配置# P" p7 v$ u0 i6 J8 f
    创建ceph源配置文件,并打开编辑
    % [& h  V; R1 o. h- p8 c& p
touch /etc/yum.repos.d/ceph.repovi /etc/yum.repos.d/ceph.repo
( g- Y! }" I8 F6 e4 W3 S在文件中写入如下内容! C. u/ [1 {5 h. s
[ceph-noarch]name=Ceph noarch packagesbaseurl=http://download.ceph.com/rpm-luminous/el7/noarchenabled=1gpgcheck=1type=rpm-mdgpgkey=https://download.ceph.com/keys/release.asc
5 R7 y0 L+ k/ o/ f4 L$ d3 ?. R0 B更新yum源& \, K# G* |$ g3 y; d' \3 e4 M% v$ a
yum update -y4 t! a% \- A- c5 w) M1 t
  • 时钟相关  R+ `. P  k2 y3 f  Z1 }  y
yum install -y ntp ntpdate ntp-doc
2 E4 C" n3 j6 G' v3 R  B
  • 关闭防火墙& B0 ^, k: G" B: l% s4 H; B" l
firewall-cmd --zone=public --add-service=ceph-mon --permanentfirewall-cmd --zone=public --add-service=ceph --permanentfirewall-cmd --reloadiptables -A INPUT -i eth0 -p tcp -s 192.168.122.0/24 -d 192.168.122.254 -j ACCEPTiptables-save sudo setenforce 0# Z3 ^4 s  O0 F! T! L, |
  • ceph部署用户; B' ?4 c6 O  j! k
    创建用户' ]( ?  x$ C. @4 w8 r2 a
useradd -g root -m cephD -d /home/cephDpasswd cephD* Z1 J9 u1 O0 p& m. ]0 f$ `
免密码权限
% L0 s) {5 b; a* y3 ]9 n$ lecho "cephD ALL=(ALL)NOPASSWD: ALL" | sudo tee /etc/sudoers.d/cephDchmod 0440 /etc/sudoers.d/cephD
3 W# n& M' K2 T5 y8 l2 h' r五 ceph节点clone本节操作在宿主机执行9 w. }  L. u* E% a1 z6 }! }
  • 获得root权限
    ( c( t+ P1 [3 y" i( k4 J
sudo su
& z) K/ n. s, Q" w/ w/ a
  • 关闭虚拟机ceph
    0 V* {1 e& T: f
virsh shutdown ceph4 d4 r9 C/ T  J
  • clone出ceph-1、ceph-2、ceph-3节点
    + E1 d$ s5 s8 \" [& B( i1 g
virt-clone -o ceph -n ceph-1 -f /home/data/ceph-1.qcow2virt-clone -o ceph -n ceph-2 -f /home/data/ceph-2.qcow2virt-clone -o ceph -n ceph-3 -f /home/data/ceph-3.qcow2/ i: t9 X! v- {6 [* u2 b. q
注:ceph为管理节点,ceph-1为mon节点,ceph-2、ceph-3为osd节点4 k, x$ S% G+ S+ \* s; h! a+ O# I
  • 挂载硬盘
    , U* {8 M% d4 ~
  • 创建硬盘镜像
    & y0 ~9 C3 I2 F# W
qemu-img create -f qcow2 /home/data/osd1.qcow2 50gqemu-img create -f qcow2 /home/data/osd2.qcow2 50gqemu-img create -f qcow2 /home/data/osd3.qcow2 50g
: Q2 B8 D0 d3 u; f$ u! x
  • 修改配置文件,将磁盘挂载到虚拟机(以ceph-2为例)# A' A+ Q$ h7 p' M/ a: s1 @3 c
virsh edit ceph-25 J: s$ h8 ~! {) B
添加如下内容到domain.devices节点下3 a0 L1 j# s0 U- _0 _
<disk type='file' device='disk'>      <driver name='qemu' type='qcow2' cache='none'/>      <source file='/home/data/osd2.qcow2'/>      <target dev='vdb' bus='virtio'/> </disk>$ R# ?) z1 @4 `" ^# ^# e
  • 启动虚拟机1 j, m: d6 s, ?$ y  c
virsh start cephvirsh start ceph-1virsh start ceph-2virsh start ceph-3
0 _! f+ O  ^3 v3 }2 @0 ]查看虚拟机状态6 w+ k6 q- F, ^! D# |1 d
virsh list --all' x, K# r, }5 z2 v

6 z# x. \* t* Chttp://upload-images.jianshu.io/upload_images/6582575-ddef4a93268cde15.png?imageMogr2/auto-orient/strip|imageView2/2/w/475/format/webp
4 b: i4 V: R) O
8 F6 v% b* B) e* H2 b
CEPH_Node_02.png( r. u- Z  f, j) }
2 y, S& X% C) c. T+ Z
  • 修改虚拟机IP
    ' C  }! h% ~5 b; Z6 d/ S  v6 XKVM进行clone操作之后,虚拟机IP也被clone了,在同一网段中,IP冲突,需要手动修改(以ceph-1为例)
    " [% g# L6 s" s
virt-viewer -c qemu:///system ceph-1) i# e: a  P7 R* f8 s" K0 r* `  i
进入控制台,root登陆,修改eth0的IP
& M% J# C& ]' ^$ K1 t; K" {vi /etc/sysconfig/network-scripts/ifcfg-eth0" Y: X0 l( t6 c% m
修改IPADDR,不与其他虚拟机冲突/ A- Z$ B; @& y& g9 n! T* y' K
IPADDR=192.168.122.123! ~# E' a7 w8 i. I7 _# Y
重启网络服务! b( n# \# o8 ~: [8 ]
service network restart
% e9 w7 ]# c; {修改 ceph-2、ceph-3的IP为124、1255 h0 l; J9 a. G% J4 V6 F0 L
六 ceph-deploy 部署ceph集群本节操作在虚拟机ceph[ceph管理节点]上执行4 R6 `2 w: Y1 ?( V5 @8 D
  • 安装ceph-deploy
    ! Z* i9 E! t$ F; T) B, Q
yum install -y ceph-deploy4 G. q0 d! w6 z' b' @7 ]
  • 部署用户的免密码登陆其他节点) q5 e; N$ {* b3 k
su - cephD
( q8 K( t( {' h( i, [8 m9 o7 i生成SSH秘钥,不输入密码,全部[enter]
; y3 R- M8 M' p# N+ o5 B7 Qssh-keygen
# _' i5 o; g3 v4 h
( v* h" h9 W  ?  ^% ~" ihttp://upload-images.jianshu.io/upload_images/6582575-b0afce24da2d3c9c.png?imageMogr2/auto-orient/strip|imageView2/2/w/611/format/webp
& P& E8 _+ z! d7 s% |: X
% G- \( ^! v- U" O
CEPH_Node_03.png
0 v8 Q3 e- q6 ]0 H' q
$ t1 z/ e0 _3 O' i0 a
; d# ^4 c9 k9 u5 w0 B/ d2 ~添加信任,执行以下操作# r8 s& {6 ^% p( _
ssh-copy-id cephD@node1ssh-copy-id cephD@node2ssh-copy-id cephD@node3* c, y! f, M& |& U) B6 I$ E+ g
cd ~;touch ~/.ssh/config;vi ~/.ssh/config
: w! D, W5 L# v4 f  y输入如下内容
% n+ m: |" @# R, J, XHost node1    Hostname node1    User cephDHost node2    Hostname node2    User cephDHost node3    Hostname node3    User cephD
- b; U% u' \  h& H: \1 u7 C7 a" P
  • 创建集群
    $ H; W% B3 d' Z* @
cd ~;mkdir my-cluster;cd my-cluster;ceph-deploy new node13 E; E4 k6 f3 Y" j  z
结果如下:
( Q0 `  ]9 c! M1 L% F& J3 W; d/ `2 r! A  v. ^; R; `4 [, e' i! K

( d# b: l' @& e9 Hhttp://upload-images.jianshu.io/upload_images/6582575-1e2620e0391192b9.png?imageMogr2/auto-orient/strip|imageView2/2/w/839/format/webp% K2 j' {) B4 K( I! ~! H
8 |2 O4 C$ a% R3 C7 j
CEPH_Node_04.png
" e% F3 v+ d9 T( N* ^3 |# }! j- v4 M& O

) Q- a3 D6 z- ~修改OSD默认数量为2, _! s3 F) a* g4 H' C
echo "osd pool default size = 2" >> ceph.confecho "public_network = 192.168.122.0/24" >> ceph.conf
% `8 m: k& K, c
  • 集群安装ceph& Q$ T: W; y* W4 I3 t) P
ceph-deploy install --release luminous node node1 node2 node3. Z* S/ d# d* `  [5 ?
; ^. T! y* M% H, M
http://upload-images.jianshu.io/upload_images/6582575-0ae9958bb7a46686.png?imageMogr2/auto-orient/strip|imageView2/2/w/725/format/webp3 |2 f5 i6 ?! V6 _1 q6 P

: t# E& T- m* n3 yCEPH_Node_05.png
" z/ d+ T) c; R* j- d
& v1 V6 Z( ?& G) R
  • 初始化ceph-moni服务3 b# N, c# }6 C6 g" x
ceph-deploy mon create-initial
7 S9 ]6 `% g1 t; D2 T: K: [- Z
7 L3 K0 V6 `& Lhttp://upload-images.jianshu.io/upload_images/6582575-1de180078709ccc6.png?imageMogr2/auto-orient/strip|imageView2/2/w/721/format/webp; d4 P+ f) q. {$ T- @! n! x0 v
* b$ O$ P; T2 U1 N1 N) |4 Z
CEPH_Node_06.png; I; C3 Q; U1 }- i9 B" I7 j

' @0 j- y1 N$ S) w! f) O2 m
  • 拷贝管理员配置到各个节点' T6 i# L" s% h( \6 S
ceph-deploy admin node node1 node2 node3
, @* S- y+ F3 y- {' [2 [
  • 安装管理例程9 _. i3 ^( J: s2 I, F* X7 j
ceph-deploy mgr create node1 - u- W8 m$ B7 e# G: f9 i) `6 w& m# w
NOTE:mgr和moni是什么关系
7 U( V. K! H/ v2 }# P
  • 添加OSD节点
    % o, C+ r4 v9 F+ p9 M# i
ceph-deploy osd create --data /dev/vdb node2ceph-deploy osd create --data /dev/vdb node38 U- j* Z. Y+ D- x2 U! D
9 z8 \, e0 F4 e3 ~- O
http://upload-images.jianshu.io/upload_images/6582575-858fea0c1ddfdc61.png?imageMogr2/auto-orient/strip|imageView2/2/w/722/format/webp
7 n9 H$ c% r4 h. I0 U" K  c

8 |, \% l' m: T( xCEPH_Node_07.png; c3 l1 r, K, l. K5 ]. B

& w6 V: O4 X4 f4 U
  • 查看ceph集群状态+ [4 A; O& g( _
ssh node1 sudo ceph healthssh node2 sudo ceph healthssh node3 sudo ceph health
- A1 L2 V- R% d% W% R+ u2 D# d0 T& U! W3 n% }/ e; j5 Q/ Q* D
http://upload-images.jianshu.io/upload_images/6582575-c64d213a876a4f0b.png?imageMogr2/auto-orient/strip|imageView2/2/w/472/format/webp
( T  n: z: W7 L4 q

8 `2 ?- S6 V9 b" Z, ^CEPH_Node_08.png: z3 x% \  z: T
% p  [: E9 Z" Z6 O) E/ y) x
ssh node1 sudo ceph -s6 V' m1 n( m; s* b
+ \! i( e; @+ ?" `
http://upload-images.jianshu.io/upload_images/6582575-b86aedb7d28f262d.png?imageMogr2/auto-orient/strip|imageView2/2/w/660/format/webp
" Z4 {! j: ?  s! y, o
5 }2 l& W( U) B+ e
CEPH_Node_09.png
& I. |, b1 o# d9 l' a- D7 N2 U) H# ?, D, C! t0 p
  • 集群扩展1 i/ f* `7 j) L' ?) [+ B7 v+ G( t
  • 新增元数据服务节点; b; d% \' d7 R- D' _- J
ceph-deploy mds create node1ceph-deploy mds create node2
, k8 M" R- \* B9 C
  • 新增ceph-moni
    ) |" l7 u" U- n! V1 @: P+ P
ceph-deploy mon add node2 ceph-deploy mon add node3
* O- m& I  j7 Q6 M: x! _: U
NOTE:现在集群三个节点都运行了ceph-moni ?
- A% l9 B! S2 v; c; K& t- L
  • 新增管理例程节点9 o6 |9 [5 M( K
ceph-deploy mgr create node2 node34 v( ~% M7 g: N- d
  • 新增rgw实例3 T/ u" x# |3 a, `& S9 l' v8 A1 D
ceph-deploy rgw create node1ceph-deploy rgw create node2
8 R# \* c. q( C! n  q; c
  • pool操作
    1 H  P5 u/ \! e8 @+ b, A* q  C$ z
ceph osd pool create mytest 8  //创建ceph osd pool rm mytest //删除5 f. C: H; e: H* _  z( I5 k2 U
  • 对象操作4 O3 ]. o' Z6 b# }# f
[cephD@node my-cluster]$ rados put test-object-1 ceph.log --pool=mytest[cephD@node my-cluster]$ rados -p mytest lstest-object-1[cephD@node my-cluster]$ ceph osd map mytest test-object-1osdmap e26 pool 'mytest' (5) object 'test-object-1' -> pg 5.74dc35e2 (5.2) -> up ([1,0], p1) acting ([1,0], p1)[cephD@node my-cluster]$ rados rm test-object-1 --pool=mytest9 `" i% x& w  f/ ^7 u
七 ansible 部署ceph集群本节在ceph主机以cephD用户执行7 K) t0 v8 Z& _. Q* d6 s; J
  • 准备工作
    $ ~. `* |9 ^3 G# G
  • 卸载ceph集群3 z4 i. ^1 ?& W" Z7 R
cd ~/my-cluster;ceph-deploy purge node node1 node2 node3ceph-deploy purgedata node node1 node2 node3ceph-deploy forgetkeysrm ceph.*
0 d; c  p+ l7 I3 P& r! F
  • 安装python-pip工具, ?6 Q( j% r+ E' ?. i
cd ~;sudo yum update -y;sudo yum install -y python-pip;( S% s5 U8 L  f- i3 G" n( i! p* J
  • 安装ceph-ansible) E" m% I" r' g( _/ v& |3 F' K
  • 安装ansible-2.6.4% T; q: P7 L4 x' K, r8 n! V
sudo yum install -y PyYAMLsudo yum install -y python-jinja2sudo yum install -y python-paramikosudo yum install -y python-sixsudo yum install -y python2-cryptographysudo yum install -y sshpasswget https://releases.ansible.com/ans ... .ans.noarch.rpmsudo rpm -ivh ansible-2.6.4-1.el7.ans.noarch.rpmansible --version
  n) \+ E7 F6 ]5 C) }; g4 O
' W4 J3 e3 K1 O: _http://upload-images.jianshu.io/upload_images/6582575-794b0da59192c239.png?imageMogr2/auto-orient/strip|imageView2/2/w/1031/format/webp
5 @5 p% ~3 k! m! T! ?. D
6 e# R9 D5 W0 J9 V8 O( N) k' w
CEPH_ANSIBLE_02.png
- U4 ^. ~6 |: j9 d/ q* [
( V. Q/ Q" c; O: R
  • 下载ceph-ansible
    7 b+ Z) V$ s7 k3 y; b0 M$ u8 h
cd ~;sudo yum install -y git;git clone https://github.com/ceph/ceph-ansible.gitcd ceph-ansible;git branch -a|grep stable
8 F) `% E; E+ \" o结果如下:
& F2 x* G  i0 G, J
; v9 p8 m: w8 N) Z; S0 u6 g( y. v* `
http://upload-images.jianshu.io/upload_images/6582575-91657a2dd15e6f50.png?imageMogr2/auto-orient/strip|imageView2/2/w/618/format/webp! N6 z. |- o% P- c, ?+ [

8 @% w- L  _: z  ~0 aCEPH_ANSIBLE_01.png9 T  {+ Q, J& C# ^

! `, l8 W4 p* A- P6 c
  • 发行版说明
    : b2 c1 }" r7 e* x
[td]
ceph-ansible分支
ceph版本
ansible版本
stable-3.0
jewel 和 luminous
2.4
stable-3.1
luminous 和 mimic
2.4
stable-3.2
luminous 和 mimic
2.6
master
luminous 和 mimic
2.7
  • 选择stable-3.2,解决python依赖# l6 ]  K3 a5 C; v7 R; `" Z
git checkout stable-3.2sudo pip install -r requirements.txtsudo pip install --upgrade pip
7 G8 w; Z. m1 V  b- g' [
  • 配置Inventory集群主机: }3 ]2 M7 K9 D9 @
sudo chmod 0660 /etc/ansible/hosts sudo echo "[mons]">>/etc/ansible/hostssudo echo "node1">>/etc/ansible/hostssudo echo "node2">>/etc/ansible/hostssudo echo "[osds]">>/etc/ansible/hostssudo echo "node2">>/etc/ansible/hostssudo echo "node3">>/etc/ansible/hostssudo echo "[mgrs]">>/etc/ansible/hostssudo echo "node1">>/etc/ansible/hostssudo echo "node2">>/etc/ansible/hostssudo echo "node3">>/etc/ansible/hosts3 }1 q, ]$ w( W# Y1 c: Q
  • 配置Playbook部署指令
    : g* B8 |2 P8 B! D: ?
cp site.yml.sample site.yml
9 g  F9 K3 }% B$ W; e' k2 Z
  • 配置ceph部署0 r" C0 c- t# t6 A1 f, D
cp group_vars/all.yml.sample group_vars/all.ymlvi group_vars/all.yml------############ INSTALL ############ceph_origin:repositoryceph_repository: communityceph_stable_release: luminousceph_stable_repo: "{{ ceph_mirror }}/rpm-{{ ceph_stable_release }}/el7/x86_64"......monitor_interface: eth0......public_network: 192.168.122.0/24osd_objectstore: filestoredevices:  - '/dev/vdb'osd_scenario: collocated------7 q4 f( X7 I3 z! E. A( k9 @
  • 安装执行6 }- ~, x$ w1 Z; w# p/ b3 V# s7 ?
ansible-playbook site.yml -vvceph -s
4 g+ L. p9 K/ l8 s0 z# W
NOTE:-vv 提示更多错误信息
% O  I& F+ r- n# [2 H, C' r4 J
PLAY RECAP ********************************************************************************************************************************************************************************************************node1                      : ok=165  changed=26   unreachable=0    failed=0   node2                      : ok=248  changed=35   unreachable=0    failed=0   node3                      : ok=176  changed=26   unreachable=0    failed=0   INSTALLER STATUS **************************************************************************************************************************************************************************************************Install Ceph Monitor        : Complete (0:07:34)Install Ceph Manager        : Complete (0:07:58)Install Ceph OSD            : Complete (0:01:09)Wednesday 27 March 2019  02:50:32 -0400 (0:00:00.065)       0:17:19.385 ******* =============================================================================== ceph-common : install redhat ceph packages --------------------------------------------------------------------------------------------------------------------------------------------------------------- 274.13s/home/cephD/ceph-ansible/roles/ceph-common/tasks/installs/install_redhat_packages.yml:16 -------------------------------------------------------------------------------------------------------------------------ceph-common : install redhat ceph packages --------------------------------------------------------------------------------------------------------------------------------------------------------------- 230.22s/home/cephD/ceph-ansible/roles/ceph-common/tasks/installs/install_redhat_packages.yml:16 -------------------------------------------------------------------------------------------------------------------------ceph-common : install centos dependencies ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 104.34s/home/cephD/ceph-ansible/roles/ceph-common/tasks/installs/install_redhat_packages.yml:9 --------------------------------------------------------------------------------------------------------------------------ceph-common : install centos dependencies ----------------------------------------------------------------------------------------------------------------------------------------------------------------- 93.92s/home/cephD/ceph-ansible/roles/ceph-common/tasks/installs/install_redhat_packages.yml:9 --------------------------------------------------------------------------------------------------------------------------ceph-mgr : install ceph-mgr package on RedHat or SUSE ----------------------------------------------------------------------------------------------------------------------------------------------------- 78.47s/home/cephD/ceph-ansible/roles/ceph-mgr/tasks/requisite.yml:2 ------------------------------------------------------------------------------------------------------------------------------------------------ceph-mon : create ceph mgr keyring(s) when mon is not containerized --------------------------------------------------------------------------------------------------------------------------------------- 18.35s/home/cephD/ceph-ansible/roles/ceph-mon/tasks/ceph_keys.yml:61 ---------------------------------------------------------------------------------------------------------------------------------------------------ceph-osd : manually prepare ceph "filestore" non-containerized osd disk(s) with collocated osd data and journal ------------------------------------------------------------------------------------------- 12.11s/home/cephD/ceph-ansible/roles/ceph-osd/tasks/scenarios/collocated.yml:53 ----------------------------------------------------------------------------------------------------------------------------------------ceph-osd : activate osd(s) when device is a disk ----------------------------------------------------------------------------------------------------------------------------------------------------------- 9.93s/home/cephD/ceph-ansible/roles/ceph-osd/tasks/activate_osds.yml:5 ------------------------------------------------------------------------------------------------------------------------------------------------ceph-config : generate ceph configuration file: ceph.conf -------------------------------------------------------------------------------------------------------------------------------------------------- 7.68s/home/cephD/ceph-ansible/roles/ceph-config/tasks/main.yml:77 -----------------------------------------------------------------------------------------------------------------------------------------------------ceph-mon : collect admin and bootstrap keys ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 6.42s/home/cephD/ceph-ansible/roles/ceph-mon/tasks/ceph_keys.yml:2 ----------------------------------------------------------------------------------------------------------------------------------------------------ceph-mon : create monitor initial keyring ------------------------------------------------------------------------------------------------------------------------------------------------------------------ 5.64s/home/cephD/ceph-ansible/roles/ceph-mon/tasks/deploy_monitors.yml:22 ---------------------------------------------------------------------------------------------------------------------------------------------ceph-mgr : disable ceph mgr enabled modules ---------------------------------------------------------------------------------------------------------------------------------------------------------------- 5.45s/home/cephD/ceph-ansible/roles/ceph-mgr/tasks/main.yml:32 --------------------------------------------------------------------------------------------------------------------------------------------------------ceph-config : generate ceph configuration file: ceph.conf -------------------------------------------------------------------------------------------------------------------------------------------------- 4.88s/home/cephD/ceph-ansible/roles/ceph-config/tasks/main.yml:77 -----------------------------------------------------------------------------------------------------------------------------------------------------ceph-common : configure red hat ceph community repository stable key --------------------------------------------------------------------------------------------------------------------------------------- 4.35s/home/cephD/ceph-ansible/roles/ceph-common/tasks/installs/redhat_community_repository.yml:2 ----------------------------------------------------------------------------------------------------------------------ceph-common : configure red hat ceph community repository stable key --------------------------------------------------------------------------------------------------------------------------------------- 4.07s/home/cephD/ceph-ansible/roles/ceph-common/tasks/installs/redhat_community_repository.yml:2 ----------------------------------------------------------------------------------------------------------------------ceph-config : create ceph initial directories -------------------------------------------------------------------------------------------------------------------------------------------------------------- 4.06s/home/cephD/ceph-ansible/roles/ceph-config/tasks/create_ceph_initial_dirs.yml:18 ---------------------------------------------------------------------------------------------------------------------------------ceph-common : purge yum cache ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 3.59s/home/cephD/ceph-ansible/roles/ceph-common/tasks/installs/configure_redhat_repository_installation.yml:23 --------------------------------------------------------------------------------------------------------ceph-common : configure red hat ceph community repository stable key --------------------------------------------------------------------------------------------------------------------------------------- 3.27s/home/cephD/ceph-ansible/roles/ceph-common/tasks/installs/redhat_community_repository.yml:2 ----------------------------------------------------------------------------------------------------------------------ceph-config : create ceph initial directories -------------------------------------------------------------------------------------------------------------------------------------------------------------- 3.27s/home/cephD/ceph-ansible/roles/ceph-config/tasks/create_ceph_initial_dirs.yml:18 ---------------------------------------------------------------------------------------------------------------------------------ceph-config : create ceph initial directories -------------------------------------------------------------------------------------------------------------------------------------------------------------- 3.12s/home/cephD/ceph-ansible/roles/ceph-config/tasks/create_ceph_initial_dirs.yml:18 ---------------------------------------------------------------------------------------------------------------------------------* a6 \9 N. r  a; D+ l
检查集群状态8 l6 T# n8 o" K, E* L- v; t1 h% d
cephD@node ceph-ansible (stable-3.2) $ ssh node1 sudo ceph -s  cluster:    id:     bb653ada-5753-4672-9d3b-b5e92846b897    health: HEALTH_OK   services:    mon: 2 daemons, quorum node1,node2    mgr: node2(active), standbys: node3, node1    osd: 2 osds: 2 up, 2 in   data:    pools:   0 pools, 0 pgs    objects: 0 objects, 0B    usage:   214MiB used, 89.7GiB / 90.0GiB avail    pgs:     
) k. N; M/ V) H/ f' v$ t其他操作可以参考【七 使用ceph-deploy安装】第7步之后的操作9 {/ @0 T1 Y( C2 b0 \/ B: E8 |5 x
NOTE:本节安装没有ceph-admin节点,所以node节点上是没有ceph的,所有ceph操作需要在node1上执行:$ {- L  j8 X/ g! x  K
ssh node1: M) Y4 w7 c# D& ^! c7 A5 g
八 离线部署本章在cceph主机以ephD用户执行
' U# x1 B, n+ n- C
  • 搭建本地仓库
    & }, L9 i. c( Z4 BCentOS7搭建本地仓库--CEPH
  • 使用ceph-ansible部署; w) ]8 S" s) l) N
    参考【七 ansible 部署ceph集群】
  • 与第七章不一样的地方* G! b9 x: I2 M. I! o/ J
  • 安装python-pip工具注意点/ }/ I$ r9 l/ Z
sudo pip install -r /home/cephD/ceph-ansible/requirements.txt --find-links=http://192.168.232.129/repo/python/deps/ --trusted-host 192.168.232.129* u. @, g% M$ I6 k
  • 配置ceph部署注意点" [# w" [4 ]6 N. d
cp group_vars/all.yml.sample group_vars/all.ymlvi group_vars/all.yml------############ INSTALL ############ceph_origin:repositoryceph_repository: customceph_stable_release: luminousceph_stable_repo: "http://192.168.232.129/repo/ceph/luminous/"......monitor_interface: eth0......public_network: 192.168.122.0/24osd_objectstore: filestoredevices:  - '/dev/sdb'osd_scenario: collocated------. Q) T9 H0 _3 v/ }0 I+ a  ]8 r
  • 提醒
    3 s5 n+ T3 g' T/ m) a1 t, W9 x& }; \ceph-ansible 部署ceph集群的时候 cephD用户的一系列操作也是必要的
    0 h- j% Y) y3 S/ I7 C2 |6 t
九 操作集群
  • 启动所有守护例程9 ^  a6 |7 ^: x7 b/ f3 u) j
sudo systemctl start ceph.target/ u( d- m7 m% d8 g- @# j
  • 停止所有守护例程$ x7 A/ s3 E+ n0 s
sudo systemctl stop ceph\*.service ceph\*.target
6 X( A1 A5 h9 {5 H0 b- V十 问题&解决
  • [ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph'+ _# n8 g/ y9 ~. K8 G7 S$ h
    Solution:等待20分钟,再次执行(有时候,由于网络原因,yum install -y ceph ceph-radosgw 时间会超过300s,造成超时)
  • [node1][WARNIN] Another app is currently holding the yum lock; waiting for it to exit...
    ) j* w) ]7 s7 BSolution:等待,或者通过[ps -ef|grep yum]找到锁住的指令进程,cancel掉之后,以此执行yum指令
  • 安装特别慢
    - b$ n. P7 @* y8 MSolution:可以不在一个命令中安装,经测试,支持并行安装,如下:$ L# D5 ?( [6 |$ H7 Y/ k0 d* s
ceph-deploy install --release luminous node &ceph-deploy install --release luminous node1 &ceph-deploy install --release luminous node2 &ceph-deploy install --release luminous node3 &
9 K7 v2 }6 N% Z! K
  • auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring  ---- ceph quorum_status --format json-pretty
    % A( Q; H0 ?( n7 R) r, G
sudo cp * /etc/ceph/sudo chown cephD:root /etc/ceph/*1 u0 U0 J* a  h/ {
  • [ceph_deploy.rgw][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; ...
    ! ~6 q! l5 ]- H- q( `8 u& B  o0 {
ceph-deploy  --overwrite-conf rgw create node10 o. g2 U3 c: w! [8 V* e6 T
  • [ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
    . |- ~6 q+ G3 |1 Q; S( {; S) V, L
echo "public_network = 192.168.122.0/24" >> ceph.confceph-deploy --overwrite-conf config push node node1 node2 node3
* h" E7 F4 q  J- z* O
  • mgr和moni有啥区别3 W+ i$ C3 n( u
    在luminous版本之前,mgr进程包含在moni进程内部,L版开始拆分出来
    ' ~% g2 Z9 L; f& [

+ R' r' T1 j7 p' ]& B
1 b, I* ]0 D3 H: W

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-12-13 11:49:33 | 显示全部楼层
继续上节ceph 安装继续配置配置 Mgr4 V9 H% }- `$ c+ E9 x4 t1 d9 z$ l
: r, Y9 z& a; n$ t- @5 B3 H
  #  ceph-deploy mgr create ceph1:mon_mgr ceph2:mon_mgr ceph3:mon_mgr  Q" J5 t' b/ ?* Q

: J& ]+ T: t" v$ M, h: X开启 dashboard (在任一 mon_server 节点上)
( h" i! _) E8 o4 Z$ ^
- ]1 _% ?7 r  V: n4 [3 J$ Z  # ceph mgr module enable dashboard
- H  C( ^3 v# M7 ]) X+ n8 j
8 B3 `8 L  g9 U* A) t9 |8 g到此处mgr 配置完成。
- e' p" Z% P' w: R
9 R. D2 H! E4 v1 d- N在浏览器访问:http://mgr-server-ip:7000/
. O1 p  Q! O1 d/ l) C, h6 y% Q; [: e* A. K0 V
  7 F! I3 |7 g: x, Y$ J" X/ X

6 W' d6 b) ]8 t7 r
7 c1 ]6 X  n( k5 y5 d6 e0 x5 ~$ s5 T. n5 n- o  E% R
提醒:目前 mgr 功能模块可能还存在选举问题,如果多mgr 节点都开启,可能会出现web页面取不到数据,建议只开启一个mgr节点服务,然后关闭其他节点mgr服务。) s' k3 ]. P  u* g
$ H9 L4 W( Q8 H& ^, V5 u. N* }

1 `+ [8 V+ L0 s0 B# z$ q7 Q4 t! X4 ^: h; Z; M
7 ?8 h5 I& D0 G3 J- |9 l
9 }% K2 Y, \% @/ z& p
. R/ w/ V6 S8 M0 G2 S
3 P! H/ ^/ P; C5 [( ^2 B+ E9 D2 i! d
设置dashboard 端口和IP
% A! j; K5 P* q/ ?+ P. ^% c- ~2 a; F- A9 P( D' ?
  # ceph config-key set mgr/dashboard/server_port 7000   (指定集群dashboard的访问端口。可以不用配置,默认7000端口。)
( {$ }, \4 i2 B0 W4 N0 ?2 _& h4 D1 u4 }
  # ceph config-key set mgr/dashboard/server_addr $IP       (指定集群 dashboard的访问IP)/ L5 M8 c/ T) K

$ c, L' U. _. `8 @" k# {' q# J) \服务重启:
! @' F% P2 @- v* d, N
. h8 A" E1 S  z0 B9 A/ S; N2 Y  ]6 V  # systemctl restart ceph-mgr@mon_mgr# z6 a4 c( H' _* w! T
" j8 T, q  l1 C! w' j+ c
; x3 w( g. H3 Q+ o" u) G% ^% [
# `7 V* r1 j. @4 J
更新:* x  {7 B( [1 H0 U. O  G
, E+ M1 k" m' h) l1 L
mimic版  (nautilus版)  dashboard 安装
( ?- |* n! v' G0 s& `. P& P6 P6 a* s2 m: P$ W% c4 s
  如果是  (nautilus版) 需要安装 ceph-mgr-dashboard
8 ]4 A: @* T  u& C7 [2 p
- w1 C' r1 [3 y# |& t) A+ h  # yum install -y ceph-mgr-dashboard
* T+ e  K* O; s* x# V* n6 m: D3 j; m' k) m7 \# ?. s; a# R
1、添加mgr 功能
0 I5 v3 E1 H4 w8 N+ Q1 I1 i% C+ c, G3 K$ c: D
  # ceph-deploy mgr create node1 node2 node3, }& E2 z# O, T. Q( v
- r9 _( u  V  l* H: R7 _1 f
2、开启dashboard 功能  N; e. V  V. ^' z3 f
5 V4 `$ P: J. m& @
  # ceph mgr module enable dashboard  j' w8 f$ [* a& E  W

5 k7 y  t( J3 x" t+ Q% _$ q8 t3、创建证书/ x% O5 R7 [3 k& }* A0 [
/ P* x8 v. k, D" P7 q) B
  # ceph dashboard create-self-signed-cert; q* H8 `" S; ]9 ]' g
  p2 B1 Y" m  d
4、创建 web 登录用户密码8 w3 k: T6 y' d2 o/ A

' i/ B# y2 q3 d. s% C9 M  # ceph dashboard set-login-credentials user-name password6 Z1 J& i) B6 y# G2 j, T

5 H5 W2 Y& h0 C- x2 {. i5、查看服务访问方式; x/ d' c' T7 x+ g
' Z: Z6 v5 h4 F$ @& x" l
  # ceph mgr services: y0 [+ X* o% O# W) }

6 h4 _8 Q! C$ o

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-12-13 12:06:16 | 显示全部楼层
Step 1.admin node Enable epel (Extra Packages for Enterprise Linux) repository、ceph.repo配置文件
9 E, I4 O1 B) I, f/ d复制代码
8 O. h% ^3 z4 ]+ C( S* C% d* s& x# 认证,但我显示系统证书崩溃,请重新注册,就先跳过了; T" J  l, m- Z! C6 f+ M/ X
yum install subscription-manager' b/ k2 i* O8 E4 E
subscription-manager repos --enable=rhel-7-server-extras-rpms
' ]0 K" u+ ]% C
' Z7 Y, n/ y. n# l7 K6 P5 Fyum install -y https://dl.fedoraproject.org/pub ... latest-7.noarch.rpm* X" P$ ]# ~2 @2 `  |1 u" H
安装参考:$ m9 k0 n- v- d6 I3 {
http://www.mamicode.com/info-detail-1287279.html3 M6 A7 b2 v& g, v# B3 ~& X" R
复制代码
$ s/ x5 ?8 O% r9 l 7 f  a9 _0 m4 T
7 S" R2 D/ ^1 I8 l* n
文件位于控制节点(即admin node)的 /etc/yum.repos.d/ceph.repo! n) z6 D7 W( f% Z! z/ m+ i

; Y  v7 H5 Q! f; E- m复制代码- O5 @- Y/ N! P$ G- H9 T  \! u& H
[ceph-noarch]4 u/ E% g( E4 B
name=Ceph noarch packages
; Y& z- N7 k6 D" S# baseurl=https://download.ceph.com/rpm/el7/noarch
, N4 L! Y/ e# ubaseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch" B0 r6 p+ L4 T# S. [& b3 @
enabled=1, m- U- @, A: O
gpgcheck=1
/ Q1 M- U6 {2 }& ntype=rpm-md
9 d" j9 B1 f8 k# gpgkey=https://download.ceph.com/keys/release.asc
8 u; Q1 P8 ~, w0 ]* ~5 q( agpgkey=http://mirrors.163.com/ceph/keys/release.asc
- Y( J0 G& \1 Z% {- Z! Y复制代码2 X/ X; q& {" k7 ~, M( ?) j& v
注意:
" ^1 i* n3 b4 |0 ~8 P" v上面的注释部分,是Ceph官网的写法。但是对于我们国内的安装,这样几乎无法成功,因为下载Ceph太慢了,会导致失败。因此,需要改写repo文件以更新Ceph源。 2 ^* e# _1 ]% {
常用的Ceph镜像是163镜像。但在使用163镜像之后,必须将rpm写成rpm-luminous,这样才会安装ceph-deploy-2.0.0;若只写成rpm,则实际安装的是ceph-deploy-1.5.
& S) V0 W* q2 B: X
6 X5 c: v$ f# H# u- j* c " O3 ~5 c# {: I4 D

' l! p0 E" K. y2 S# p5 KStep 2.admin node安装ceph-deploy
& E- \/ Y5 n% _+ |: syum update
% {6 V! D' F% @' O& K: syum install -y ceph-deploy
/ v, D% @" {( g: c 管理节点必须具有对Ceph节点的无密码SSH访问。 当ceph-deploy以用户身份登录到Ceph节点时,该特定用户必须具有无密码的sudo权限。
& ?9 c0 a* U# J+ x- S  z
5 \. j2 x( k8 X
7 U/ i- u0 I$ s  w
. H/ n7 F) N. D2 t3 @4 [& hStep 3.每个ceph node 安装ntp和openssh-server9 ~0 J+ g% D% _, l( Z
因为将来拥有monitor的Ceph node需要使用ntp来同步时间,因此需要安装ntp相关工具。而openssh-server也是必须的。, X2 M: K, X6 [+ n# ~5 i5 F1 e
8 ?) }/ T$ E# d! `. j; Y3 f
yum install -y ntp ntpdate ntp-doc
1 O( e" m1 t- H; @yum install -y openssh-server
2 L' A8 m2 P+ `, \5 G: U
+ O8 U3 x( l- f' o4 N4 |. l  q% ~, ~
Step 4.每个ceph node创建一个Ceph Deploy用户
: @: i* ~( a. _$ i1 a" L0 t8 v" vceph-deploy实用程序必须以具有无密码sudo权限的用户身份登录到Ceph节点,因为它需要安装软件和配置文件而不提示输入密码。
* ]8 Z' k) \9 T* a% {" E( k1 ~6 r) H
最新版本的ceph-deploy支持--username选项,因此您可以指定任何具有无密码sudo的用户(包括root用户,但不建议这样做)。要使用ceph-deploy --username {username},您指定的用户必须具有对Ceph节点的无密码SSH访问权限,因为ceph-deploy不会提示您输入密码。
- |) B1 A; X# F8 S3 b! N& x1 `0 x' o0 h, P
我们建议在群集中的所有Ceph节点上为ceph-deploy创建特定用户。请不要使用“ceph”作为用户名。群集中的统一用户名可以提高易用性(不是必需的),但是您应该避免使用明显的用户名,因为黑客通常会使用暴力破解(例如root,admin,{productname})。以下过程用{username}替换您定义的用户名,描述了如何使用无密码sudo创建用户。
1 s- D* K5 H' M' h9 S4 g- X
  f. w, [& k# [, f' v! a4 _* ~7 i注意:从Infernalis版本开始,“ceph”用户名是为Ceph守护进程保留的。 如果Ceph节点上已存在“ceph”用户,则必须在尝试升级之前删除该用户。
1 g0 N1 U5 D7 w! A3 a* I
2 H, ]- i3 M1 X2 e/ Tuseradd -d /home/luxiaodai -m luxiaodai
7 ?4 ~$ Q3 Z# {3 |passwd luxiaodai(123456)5 n" H, y. S  v4 U" p) `
# 给该用户sudo的权限
+ G+ O; Q' G+ }9 S9 ~% Z& e$ S7 g9 cecho "luxiaodai ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/luxiaodai
: |; u" x( }, S' \' S9 jchmod 0440 /etc/sudoers.d/luxiaodai/ v# s; v2 T: ~/ d, d

$ o/ L2 y" b% v1 A3 v! k0 H) [: H
' m4 u9 h% ?# l# E! U3 c, W/ B  vStep 5.admin node设置免密和填写 ~/.ssh/config 文件
# j# b! M# [' d. y- \' |设置免密4 B+ |4 D3 @3 ^3 F
# }4 u6 m- x; r% `  j% y
复制代码
4 j7 r* u; w3 u# 生成秘钥
1 e; _. b+ X' \0 q% zssh-keygen
5 R( \" n1 K" |
* |( E9 e: W, B' w# 拷贝到其余节点
0 n4 D  c3 m0 D3 f4 h4 yssh-copy-id {username}@node1+ ~" u1 ~) j# b$ f' }: E
ssh-copy-id {username}@node2' _; b: h9 s- U" N5 g
ssh-copy-id {username}@node3$ {1 @. g) w: X2 P9 `& K; c
复制代码* O0 w$ g  ^- u# G, ^9 M+ W8 b0 M0 g
~/.ssh/config 这个文件是给ceph-deploy使用的。通过此文件,ceph-deploy可以知道用户名和Ceph node的信息;这样,就不用每次在执行ceph-deploy的时候都指定–username {username}了。用户(luxiaodai)和节点名称(node1等)后面会介绍怎么创建的; L* }4 N: k( ^9 @' w3 E

' x) K; i7 r$ x# D复制代码: B2 b) Z7 t% D5 s+ `% V
Host node1
1 Q; |3 p; H9 C( S- C    Hostname node12 I/ S8 T/ M$ n( l  S
    User luxiaodai
: `! w, o! o2 |. x! t+ BHost node24 W, l- @$ N9 W) W, P/ i1 A% ^
    Hostname node28 {1 n4 u) c1 q! P' b
    User luxiaodai
4 }. N, B/ i% \! s$ ^( rHost node3, |7 Z! n' K3 M: A
    Hostname node3* x6 m6 q! Y& L1 n( \% L0 Y# }
    User luxiaodai3 Q. l& ~5 ~" u1 n
复制代码- g& f3 O& c; t' j
关闭防火墙:
8 X9 r% Y5 z4 e4 t% ?+ I$ k* j: G- H, \+ e- ], }, t
linux修改主机名+免密认证+关闭防火墙 ) h. Q: a& j2 p) l# R1 i' y

6 l' m0 x( m5 l5 w& m9 r) e
' w6 ?# m4 _$ ^& R$ x* M* M8 \, s
8 n4 T( x+ C/ Y  s" U8 E3 t3 eStep 6.TTY3 B( t5 L. e6 m* u5 n
在CentOS和RHEL上,您可能在尝试执行ceph-deploy命令时收到错误。 如果在您的Ceph节点上默认设置了requiretty,请通过执行sudo visudo并找到Defaults requiretty设置来禁用它。 将其更改为Defaults:ceph!requiretty或将其注释掉以确保ceph-deploy可以使用您创建的用户与创建Ceph部署用户进行连接。4 P4 ]* G. s' N* q7 J) g

# V/ Y+ g9 P* g" a5 K. p
5 o! c/ z8 z- d& G* I9 D7 I) O
8 b# `. I9 A0 f9 @, TStep 7.确保您的包管理器已安装并启用了priority/preferences package。 在CentOS上,您可能需要安装EPEL% {2 V  ~9 D, H4 L
yum install yum-plugin-priorities
; L: G4 [* z9 N) U. W1 D. T
: j0 H( ^& t$ C* F) s' f9 `8 |4 a6 a$ z( c/ [& Y
CEPH STORAGE CLUSTER安装
( Z. W8 E/ K! RStep 1. 创建工作目录
# _, d, C* I6 [9 n( y) S; ~( E+ v1 G本步骤在admin node上完成。0 d5 E- O: T- Q5 G

# ]8 f! d7 U3 {# \0 M; `* lmkdir my_cluster
; K% d; t6 c0 Ncd my_cluster
2 s, M& N1 P! ?5 ~. i! O0 N* i6 ]5 _ceph-deploy工具将输出一些文件到这个my-cluster目录。要确保每次运行ceph-deploy命令都是在这个目录下。& q( d, k+ q/ m) P
& _: u- O, v2 R7 k- J
注意: 不要使用sudo来运行ceph-deploy命令,也不要在使用非root用户时以root用户身份运行ceph-deploy命令。因为ceph-deploy不会把sudo命令也发送到远端的ceph node上执行。
* ~1 M! R) w% ]1 ?( {
* ^/ {$ y( o% b' H # S/ ]. i4 G+ V5 M% y
3 I' C# ]; |+ r6 ~
Step 2.环境清理
! t3 J* U0 P# _" V" f在任何时候当你陷入困境希望从头开始部署时,就执行以下的命令以清空Ceph的package以及擦除它的数据和配置:
3 P3 K) e+ B. ?; E7 b
: j: @3 b* U7 T. j4 cceph-deploy purge {ceph-node} [{ceph-node}]
) R1 b  y! |4 o7 Wceph-deploy purgedata {ceph-node} [{ceph-node}]
2 w! G. n0 X/ rceph-deploy forgetkeys
& ~2 V/ O3 o* \& h& \4 `  h# urm ceph.*
; b- U, C5 g) t! S7 d$ {这里执行* r2 H: G& r6 R8 X4 s- f% o( Z

# N: ^# w' B; K- Pceph-deploy purge node1 node2 node3+ S5 T- f: M2 T1 p1 b0 O) N' h
ceph-deploy purgedata node1 node2 node31 p# I, S1 F- M, Z* N8 c) K
的时候提示1 ]$ ^  @5 h& i( ]1 X

$ X" v# _4 f# o1 j0 [0 G. _- ~( D  RImportError: No module named pkg_resources
4 G( D" A$ S& c* R3 K3 p+ g解决方法:7 A9 M* D! r; }( [! q, P! _  K- v
/ ^; E1 o( W2 {/ D3 i
yum install python-setuptools
8 \8 Z+ `' ]% I* A% M0 a+ X6 K  s如果执行purge,则必须重新安装Ceph。 最后一个rm命令删除在先前安装期间由本地ceph-deploy写出的所有文件。
: S0 h* W4 V0 R& t0 S7 J0 K, S
; |5 J, [3 ?) G8 q% k. F* l" x- o  F
# G! S8 u6 g1 L* O2 u% F6 ]5 e4 r# n9 f" c8 ^8 r2 u
Step 3. 创建一个集群
$ K8 }/ z/ i( i# @先创建如下图所示的ceph集群,1 monitor + 1 manager + 3 osd daemon 5 E4 x+ `0 K0 s- F# G# @
6 u+ @9 k: J4 y" m+ k  B; x
! Q# b/ L! `0 f5 k4 ]
' k: o* }4 b7 N- f0 v' B3 V: |1 B

- \0 a9 |1 j+ I* i. X5 P' M7 E* J6 T8 o' z5 U/ P' L
1.创建& o: t+ `' v" p& p' y. S' v
ceph-deploy new node1
5 m1 j8 ?8 F6 z  S这个命令结束后,会在my-cluster目录下看到:ceph.conf, ceph.mon.keyring, log文件
9 c$ n( x0 _& w/ Z) O' r) Y
. M% e, O* m+ w+ V! ]
1 v/ T4 `/ g( ?# d6 V: B3 |! V( R/ i& [

& c6 D& Q: g: c) g
, u/ M: t( v( T8 w$ u: r0 Q, P% k$ B2. 添加public network的配置到ceph.conf
  z* b* |) H+ Z4 M添加下面这句话到 ceph.conf 文件的 [global] 段
0 F' _3 U2 @  U% F5 N! r
$ {3 p! J" L! ~! s& Wpublic network = 192.168.1.210/247 `! W5 h8 R/ O: g' l5 R
or& x: i5 {7 T1 o+ l$ T
public network = 192.168.1.210/255.255.255.0, ~: [9 @/ @$ y2 E0 B0 }. O
- T; [; c7 s- O
9 }3 j* a! s  K3 K- f  O+ d, W/ S
如果要在IPv6环境中部署,请将以下内容添加到本地目录中的ceph.conf:
- |9 ?% ^7 u$ O+ @* G  \+ H; r5 C
echo ms bind ipv6 = true >> ceph.conf
' R0 I% U$ A* G! S8 L5 K
) Z) a# I% n( n6 D7 s' n3 T
" W$ n! a/ H6 \- r+ c3. 安装Ceph的packages5 N. C2 K) l6 [2 I
ceph-deploy install node1 node2 node3: i/ p: T0 P9 m& _
安装过程中出现的问题
  C; k' S7 g6 Y: n* I& y2 {* O5 l! g6 I8 f6 [% D! G, y
复制代码2 m$ O/ E7 \; L4 c! _% q
# 如果安装一直有问题,清空/etc/yum.repo,然后将yum源换掉:http://mirrors.ustc.edu.cn/help/epel.html: I8 @* B+ S0 ?5 S) Z: P7 N
问题:
9 O; _% {) h( N" }7 ~[ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph'. {0 h) u9 D9 W* C
解决方法:: H8 ?; q* |8 }1 ^  r( z
yum remove ceph-release9 C' A4 O* W# _" B. F! J
rm  /etc/yum.repos.d/ceph.repo.rpmsave
5 ^3 ?$ @" `0 |9 J1 S问题:
/ q4 L; o$ v) r* L5 b[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: yum -y install ceph ceph-radosgw
" t1 n, O0 [0 s& @. W7 P解决方法:
! C: v2 P, b+ n3 [: P* K# Ryum -y install ceph ceph-radosgw
7 a! u0 \6 ~3 _ceph安装缺少python-werkzeug包( l* G- g4 W- S+ J' \
安装包下载地址:http://rpmfind.net/linux/rpm2htm ... ery=python-werkzeug- Y, ]3 z5 H4 ~; b1 N& [
rpm -ivh python-werkzeug-0.9.1-2.el7.noarch.rpm
- c) G. `; @5 J1 D/ H问题:[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph –version
* x+ r- [; \. u解决:ceph1 安装速度过慢,已经超时了,直接手动安装 yum -y install ceph ceph-radosgw
1 E2 G" B2 `4 n1 M0 j复制代码, p0 M* \+ J8 k8 [
安装成功!!!
; M0 ?3 _- M. [0 U
5 ?, Q/ X, Y, c, O1 O# w! N# T8 ?0 q+ F4 a, a! w5 d* F

$ ^0 j4 h- o+ R4 n) S5 C
0 z  b* X# h- ], h3 c, T" J. [+ C. C* @8 J0 u
4. 部署第一个monitor并产生keyring
. S# U! i0 u, I+ r5 Rceph-deploy mon create-initial: d2 U, H3 }) u5 G- k5 `
注意: : ^. v. |, ^/ I3 \: F+ P
若出现类似于”Unable to find /etc/ceph/ceph.client.admin.keyring”这样的错误,则要确定在ceph.conf文件中的mon_host的IP应该是public IP,而不是其他IP.
( r7 x2 e9 L  D
% ^( z6 m7 |+ _当这一步结束时,my-cluster目录会出现如下的keyring:. A  Y7 q9 t% G& S3 v9 O6 m
* T- i" x- P1 q1 d+ S5 M$ y  Z
, k1 H! C( C7 _: `' u

! K$ L6 b! C' I7 j, H
9 \( r) z6 ?/ T4 u1 Z+ C/ F- h/ R9 Y" Y5 S
5. 使用ceph-deploy拷贝配置文件和admin key到ceph nodes.3 L" B: c% b! _1 Z+ {4 A
这样就可以使用ceph CLI来执行命令了,而不用每次都指定monitor的地址和ceph.client.admin.keyring.
4 R$ z5 R  k8 q. D0 v( W
8 {6 R$ _! m% x, {ceph-deploy admin node1 node2 node3
* l! o- r9 o. f1 h9 @
, b$ O7 m: v# \9 Z/ q  @: o$ K
& a) A8 K9 V6 Q2 ?  W% k6. 部署一个manager daemon. (Luminous开始要求的)
$ L* `% P! x# g( F$ a) gceph-deploy mgr create node1
. [  V. h: h* ]- Q ' j5 A" P6 V0 L! X

( B* w" \$ A4 q1 F7 d: c( w7. 添加osd
3 P; L; t* G0 X添加3个OSD。 出于说明的目的,我们假设您在每个节点中都有一个名为/ dev / vdb的未使用磁盘。 确保设备当前未使用且不包含任何重要数据。. H8 |9 u5 A7 l8 A# p& ]
  j- k$ s& N( Z, c. Q: F. ~
复制代码
+ u) i8 W5 [' Kceph-deploy osd create -data {device} {ceph-node}
8 A. c% f% }' m: Z, s- ~# k$ B5 J9 n, p, n5 Z" M( V# d4 R
ceph-deploy osd create --data /dev/sdb node11 P) o' y, o! O4 e$ e
ceph-deploy osd create --data /dev/sdb node2+ e( Z  D* c# g0 H9 \: g3 X7 C
ceph-deploy osd create --data /dev/sdb node3
# z6 K$ b' V+ P6 j. S: `. B8 F
$ p) \% [7 c5 u( s& g3 T注意:如果要在LVM卷上创建OSD,则--data的参数必须是 volume_group/lv_name,而不是卷的块设备的路径。& |. Q- s# a5 T: p8 H
复制代码8 _/ ?' M+ `; x/ b: H, p5 w. P
( ^3 {% t% s. v; n  J$ L9 F8 J" @7 _
# l) I; ~9 ?7 r8 l' I' m
% n8 ^' Y2 V5 [5 [/ b

0 Q' T' [9 d( t8 H; ?' [
$ p  u+ \) q5 \' U, p5 J/ p; }; |, `( }0 T, v
8. 健康验证
1 L( q) d$ v# t9 D: Issh node1 sudo ceph health
( x9 [( e! @5 W9 t1 M7 X" S) a% a( t' S: [) |5 Q( d
您的群集应报告HEALTH_OK。 您可以使用以下命令查看更完整的群集状态:
6 Q: U4 U! {! T5 ?1 y) D! T
$ p) r& v# h3 n! kssh node1 sudo ceph -s% A4 s6 |. A2 `. L
查询结果如下:% K/ p! U4 E4 v
3 j7 v$ ^5 i( b2 ]8 Z

) y( M( ?/ x/ C% {; m4 i' R- i! j4 c

) S' \' p0 M$ h4 u! p3 |, D5 j8 ]* ^/ ?0 v: T( T/ F

1 ^2 K  \5 c# f1 s/ E0 T4 N  U- e+ L! N, X$ b/ ?
Step 4. 扩展集群4 J6 l( `- P# F* n' s9 J0 L
启动并运行基本群集后,下一步是展开群集。 将Ceph元数据服务器添加到node1。 然后将Ceph Monitor和Ceph Manager添加到node2和node3,以提高可靠性和可用性。8 H' r9 b5 Q, r% G7 D) F

3 u3 p3 T# Q% a; o' C5 ~! D) J* J! L3 z% r$ E8 o2 a  I
) o, |/ I! ~( w0 f9 F
对比第一阶段的工作,第二阶段要扩展的是:
) B' P& Y: M2 x. u4 e  C. X" V% Z3 J. ?" d( w7 y
添加1个metadata server$ {2 m0 I( g$ E
添加2个monitor: ]* C0 a" S" K" X9 ^
添加2个manager
. U' W# e! D5 |2 V; y) K5 _$ I添加1个RGW3 y" A( A. q( ?7 r" q2 b
0 x$ x; Q9 X( T* b
( G% b6 l- W* x
1. 添加一个metadata server7 s) l9 w/ W8 h4 ]" p8 M
如果要使用CephFS,就必须至少添加一个metadata server.( [/ k9 A' |$ w1 A( s
& V7 \& V+ \; \* R0 b& {
ceph-deploy mds create node1
% M1 n8 C' O5 T) q! @  F
/ s( l- }' k( P! N1 ?& j) \0 J
3 Q# W# D7 O8 C; C. [' u2. 添加2个monitors,达到3个monitors7 P( w6 S6 v7 ?5 J! F2 U
Ceph存储集群需要至少运行一个Ceph Monitor和Ceph Manager。 为了实现高可用性,Ceph存储集群通常运行多个Ceph监视器,因此单个Ceph监视器的故障不会导致Ceph存储集群崩溃。 Ceph使用Paxos算法,该算法需要大多数监视器(即大于N / 2,其中N是监视器的数量)才能形成法定人数。 虽然这不是必需的,但监视器的数量往往更好。
, x, M' v& [4 G$ n0 O, p7 F; d$ h. H8 |% G" J
ceph-deploy mon add node2
0 b; Y) F( n6 h* Iceph-deploy mon add node3
3 ]" R; D$ g* o! E4 t0 |) N在添加新的monitor之后,ceph会开始同步这些monitor,并形成一个quorum. 要检查quorum的状态,可运行:
- b" D' B% r9 |" o# o/ |' j0 G
% P+ `& p' [. B( @8 S+ S4 p* Jceph quorum_status --format json-pretty
; z! Y1 ~4 Q. H# {; h. g7 }1 n复制代码
! W6 B# k" x- j% D[root@node1 my_cluster]# ceph quorum_status --format json-pretty
- q+ A0 ?: h, h) E{
& P4 b0 n, a( Q& E  b    "election_epoch": 12,
8 t( m6 `4 j/ j+ ], U    "quorum": [3 S( y. \3 |+ }/ U- J
        0,! ]; l  i) u$ @8 w6 G6 y0 a
        1,% |6 `" e9 X$ k; A
        2
1 t" L0 v2 j$ Y6 Q8 u    ],
& ]2 x. D) [6 {9 C    "quorum_names": [
, ^6 l8 [" t/ O9 x4 h: ~        "node1"," \0 `! k2 ?! B
        "node2",
( A  K8 l2 s, z        "node3"1 ~6 v0 V" k- q  O, H8 [
    ],
' J5 _! W( E3 ?9 j    "quorum_leader_name": "node1",/ N3 Y  c; F/ |) ]
    "monmap": {. W! M2 U& I% W# h. }: u
        "epoch": 3,' k. F9 C, {, L  A' `! X  J. l
        "fsid": "f314d1c1-b6b9-4060-95b7-c25ec192f612",$ B4 ^4 G6 v/ x( C& m# h
        "modified": "2018-11-13 16:04:02.221558",/ `5 n4 O2 H( q$ g
        "created": "2018-11-13 15:35:34.338001",
. }1 v- U, Q0 X; U        "features": {! o# {' R1 f( ^! s8 s8 x
            "persistent": [
. L: o0 s0 A3 J" ^" b+ d                "kraken",/ K5 s6 \1 Z+ K+ X
                "luminous",! S5 N8 c0 c( X* I
                "mimic",, c9 s0 F8 J6 h# ]
                "osdmap-prune"
- L8 P% ?) c/ O$ X            ],* G. u. d2 g6 C: u! d
            "optional": []
9 W/ `8 h1 G2 e* q7 m        },
& O" e% C  l) D" M        "mons": [6 d/ e, B, F0 Z  u% N% J2 U% U
            {
' J5 X4 o' X, X                "rank": 0,* {  g# @. y$ Z" X& q4 G- Q  m
                "name": "node1",9 C" \% Y% k5 W- c
                "addr": "192.168.1.210:6789/0",; G$ q. _( }6 `' v; O# l& z
                "public_addr": "192.168.1.210:6789/0"
2 d; ^: y8 r$ ~+ p            },
+ P  W4 W  U% T- o+ B            {
. ~* Y( S0 ]) U8 t( _                "rank": 1,. h* v2 i: X3 ?: O) g* A
                "name": "node2",
9 S0 I6 \6 g0 o: ^/ E$ J4 K! y8 i                "addr": "192.168.1.212:6789/0",. ?  l7 ?4 R7 \
                "public_addr": "192.168.1.212:6789/0". |( O. m# ?# O' f
            },
0 ?; W5 S3 A3 z+ N1 C. v            {) Q1 {/ m$ G3 E1 z
                "rank": 2,. H* A9 a- L# [3 z- H- r
                "name": "node3",9 A7 d5 z3 j6 \" u& X  T
                "addr": "192.168.1.214:6789/0",6 ?" u2 @8 b. @# Q* Y3 `# L  ^: \3 g
                "public_addr": "192.168.1.214:6789/0"- Y4 Z8 E& Y$ `/ R8 `0 O/ E
            }8 E: s8 Z' u7 h
        ]1 _3 h6 k$ l* C
    }. \; F# E/ A- u4 @
}, ^8 I5 Z5 ~) A3 y4 z
复制代码
5 k4 ?8 K1 y2 _. U& `当给Ceph安装多个monitor之后,应该在每个monitor主机上都安装并配置NTP,以保证时间的同步。ntp的配置这里从略,只简单概述一下原理:将2台monitor所在机器配置成向第3台monitor机器做ntp的同步,而第3台monitor上通过crontab来定时调用ntpdate命令向Internet上的ntp时钟源做同步。; y, \% ]+ b& g& N6 n

5 f' ^& w" n0 O 7 E  Z: E; ~- l0 h

3 z) N7 W+ R. U" d% y- g3. 添加2个managers,达到3个managers
& @6 d+ S$ ~9 h7 p! a* FCeph Manager daemon工作在active/standby的模式。添加多manager,可以保证如果一个manager或host宕掉,另一个manager可以无缝接管过来。  Q! O& p. K/ [8 E" s
; y6 W$ e; K" ^( b' ~( U
ceph-deploy mgr create node2 node3- A5 u" V. ~4 t% B. J
可以通过ceph -s命令看到active和standby的manager.* r) i1 G9 V$ c, _3 }/ A

9 q. a1 ?' v3 n8 A1 J6 G. p" V, Q3 ^$ e3 h
! J! W* z- c( b) N; F* y
) j' w0 g5 z5 a: a3 @

0 b2 R- Y, y- h1 Q
+ r% i$ Q2 A: m) |1 s- E6 S! V. q/ b& C. J$ x$ H
4. 添加一个RGW实例
' Q7 e) t9 Z2 @& b$ ~2 r! I7 Y$ O要部署Ceph Object Gateway组件,就必须部署一个RGW实例。
9 F3 q9 s; R* n" g8 I8 }6 `
" Q/ q; x7 ~* ]( _6 }& |ceph-deploy rgw create node1
1 M, j% v* i% e6 T3 ~# k2 x( EGW instance监听在7480端口。若需改变端口号,可修改ceph.conf文件。) F: ]) P1 W' ~

' n5 r7 _. B# L$ C- h. d4 o[client]
9 T; C( \( c& {. u6 \' `rgw frontends = civetweb port=80# n. ?% J; e3 T1 `! }
若要使用IPv6地址,可以如下修改ceph.conf& x2 P* g& i. H* O9 i/ Q

) f( z) d- r3 R5 l3 z+ E' V[client]
% i# G6 K( G0 p) }; lrgw frontends = civetweb port=[::]:808 l: u4 p) E: f: j

0 t- D- y6 ]! z' g5 A3 j5 w  {  \! N8 ]2 G' G% W
存储/检索object数据
0 B, x8 Q' h! \2 P* g要存储object数据,ceph client必须: + N! V1 T. M) l9 W2 C6 b" Z
1. 设置一个object name 2 I6 p0 P& V! Q, O0 Q# ?! U( m" k
2. 指定一个pool" I, z* H/ {0 O  k' k+ w2 d6 l
7 @2 Q, k! x; X
注意: 0 K: C: k! ^1 Y! S  e& n
关于ceph client,将在下篇博客介绍。4 e# @: w" k. G  V" s7 |+ E

  ]/ K" X2 s0 X: s2 jCeph client获取最新的cluster map; 而CRUSH算法计算怎样将一个object对应到一个placement group,然后再怎样将这个palcement group动态赋给一个OSD daemon.
# O+ \) y% \# [/ x7 m- t4 a要找到这个object的位置,可以执行如下命令:
0 i6 a8 Y; x: v  ~2 u5 J3 t3 h9 R7 d; J* N5 U6 r/ ^
ceph osd map {poolname} {object-name}$ u/ ~7 ^4 l! l
作为练习,让我们创建一个对象。 在命令行上使用rados put命令指定对象名称,包含某些对象数据的测试文件的路径和池名称。 例如:
! C3 G# g4 g/ Z1 W& V. Y' T! M; C1 ^! [- ]
rados put {object-name} {file-path} --pool=mytest
8 R$ P' @- x$ h, T" Qceph osd pool create mypool 8   # 8是该pool的PG的数量3 @! C2 s0 x$ Q" s2 t/ i2 K
echo "Hello, World" > 1.txt4 C, c' X1 z% ^. N/ k
rados put my-obj-1 1.txt --pool=mypool" N8 w! M8 ^9 L: h

" G* m7 `. l& V% q3 t检查Ceph集群确实存储了这个object:
7 F" L4 m0 Z# p( N0 c: B
* m2 f' }) e* `rados -p mypool ls
# g/ U- p7 G% A& V: E确定object的位置:4 h4 @* }4 D( Q) k' `+ Y. _

+ `% E: `4 C( H% ^+ ^5 rceph osd map {pool-name} {object-name}
6 K, ^) z% K8 e- l[root@node1 luxiaodai]# ceph osd map mypool my-obj-1- Q0 }+ o! |- f, D) e
osdmap e26 pool 'mypool' (5) object 'my-obj-1' -> pg 5.ced445fe (5.6) -> up ([0,1,2], p0) acting ([0,1,2], p0)5 X+ w) j) |  U

! C6 I( |4 u+ I. Y) E若要删除这个object,可以这样:
" T8 W! w- O' N- P3 v6 F' z- I+ m
: ^2 ?% [0 J+ l' }; |$ z/ Erados rm my-obj-1 --pool=mypool
% T7 W3 F( K4 t8 M如果你要删除池,使用下面命令,出于安全原因,您需要根据提示提供其他参数; 删除池会破坏数据; m+ B; I& w& S! Z

) O$ Q& H% {# l$ _: N" R) P- uceph osd pool rm mypool! T5 |  m# G4 O  Z
删除需要修改配置文件,加入红色部分,必须在mon节点上执行: h9 \: w. R; H6 x2 _/ e! W

' V, m# |, D; z复制代码$ C4 A4 D7 X2 \6 E  k' ]5 L
[root@node1 my_cluster]# ceph osd pool delete mypool
1 l; P$ X( O5 R: J* y7 }" Q) _7 kError EPERM: WARNING: this will *PERMANENTLY DESTROY* all data stored in pool mypool.  If you are *ABSOLUTELY CERTAIN* that is what you want, pass the pool name *twice*, followed by --yes-i-really-really-mean-it.
" t) f: Y0 d/ H2 Q* q3 b/ {% C3 H[root@node1 my_cluster]# ceph osd pool delete mypool mypool --yes-i-really-really-mean-it9 m9 d6 z1 H8 F
Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool- n$ r* B) |, g+ B2 `" w. A( W
[root@node1 my_cluster]# vim /etc/ceph/ceph.conf # {1 t! f/ @0 f: l! l/ ?
[root@node1 my_cluster]# cat /etc/ceph/ceph.conf $ e% C: {( t3 |& v  T% v& r
[global]! \, l% O! N7 V# w
fsid = f314d1c1-b6b9-4060-95b7-c25ec192f6122 s% D- a+ Q6 `5 I' ~  t
mon_initial_members = node1
/ d( Q/ B! `6 a7 h+ Wmon_host = 192.168.1.210
# y, Z2 k$ w% K! G6 jauth_cluster_required = cephx
* k1 N+ I7 U2 E* V$ D3 Aauth_service_required = cephx
7 ]# {# P0 b# @" y1 mauth_client_required = cephx; U7 Y7 V1 \4 s0 p
public network = 192.168.1.210/245 G1 L3 y; V3 C7 S: @9 `+ p0 i2 S
8 C% F( ]/ f+ f4 d) y
[mon]
% A) d- o+ }! H. B* P2 M2 d8 Imon allow pool delete = true$ P/ L1 U. v) v: v2 L" j: J
[root@node1 my_cluster]# systemctl restart ceph-mon.target! ^2 q; m# U: q& }) a7 B' d) p4 P  K
[root@node1 my_cluster]# ceph osd pool delete mypool mypool --yes-i-really-really-mean-it" Y% Q- B+ ~. W% \. |" H2 k
pool 'mypool' removed% m" O$ o2 ?: R. D. F% J
复制代码+ C% }9 \+ a( Y  }
现在,集群部署好了,object也能成功创建了,但是却并不利于用户的使用。用户使用存储,一般不直接通过原始的object,而是主要有3种使用方式:' Y4 y1 [" c5 t: u# A3 S
块设备+ n! S. }3 z8 d" ]
文件系统
$ S* E8 ?) Q% i" D* e$ ^& A对象存储(比上述原生的object多了一些封装,常见的有通过S3 API或Swift API进行对象的存取)
! Q9 ]* W) ?- D7 i4 I7 ^+ t8 L8 {( j
7 m3 G8 n( c/ h& X* @! ^* I
8 V" |1 |2 e6 [  h- |5 y0 W" BBLOCK DEVICE QUICK START
1 F4 G& A' B7 F, T' a8 j- D5 P1. 安装Ceph
# e4 ?  o) G1 _" S  T3 `8 G首先要确保是Linux kernel以及合适的版本。
, l$ j* A: W0 S  M2 B$ y+ j$ @- X, z: R* e+ J/ l, N6 P
在admin node上运行以下命令,将Ceph安装到ceph-client node上:
9 D* d  w7 V* D, K$ u+ i2 @" {# B0 H
3 L1 E, y5 {  w+ h7 Y9 Y, s) s2 Tceph-deploy install host
9 c$ e4 Z3 [2 }/ R* B2 v# f$ L) H$ X+ {然后,运行以下命令将Ceph配置文件和ceph.client.admin.keyring拷贝到ceph-client上。
0 u* r% F, p& L$ R7 H# Q4 F+ f! c" i0 H8 P: f
ceph-deploy admin host& X  f' I  C9 X0 j& p3 D
' @5 w5 p7 Z! M. f1 E- d

) F; \( J1 d, g) c3 s2. 创建一个块设备的pool
: d& b. I" n/ n) x: K在之前的文章中,已经创建了一个叫做mypool的pool,现在需要运行以下命令以使得该pool可以作为RBD使用:
0 H9 j4 _( `$ l4 E2 d
! _2 t$ t) J- S4 S: O* Rrbd pool init mypool* s; A3 A; i! y* f7 L* v

6 Y' I: u! a) A& t2 f4 t) I4 w
' p3 F, x6 u: x3. 配置一个block device(块设备). X' w) a7 z' ^) [, }
1.创建一个block device image% F2 A/ t7 b1 c2 g' i4 S
rbd create foo --size 4096 --image-feature layering [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]
0 M5 h/ ], L8 Erbd create test --pool mypool --size 4096 --image-feature layering -m 192.168.1.210 -k /etc/ceph/ceph.client.admin.keyring/ O' L, f  @" z& z1 I7 _, S) m. B
如要查看所创建的rbd,可以这样:: z" d5 K; P$ P0 i6 [

: X! |, ]' t3 w2 S. i4 krbd info test -p mypool
3 S0 i# R( n. r; B. q8 M  p! U结果如下:
# F) [9 U0 e9 q7 }6 `+ _
8 Z, I) Q( ]  T0 L$ F9 q7 X2 ]" j# k" p. `3 y& G8 j$ Z. o

% Z% z* z( ]1 @ , ]6 J1 ]8 B( T! M2 r

) y, g8 [- ^/ d$ _9 j7 c2.map一个block device image
6 A# o; i7 d. [* nsudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]
% W0 C4 u) G0 N8 B) @' _2 J. e
rbd map mypool/test --name client.admin -m 192.168.1.210 -k /etc/ceph/ceph.client.admin.keyring
4 A$ d& D: i9 f
7 e2 q2 n( U  I; C* `% g: N' J1 w* w2 x
3.创建一个文件系统并挂载! `& y6 e" c% Y8 d( }# f- ]0 Z

9 F8 ~" X2 C" D0 g
4 G0 S' k! A* P3 v: G9 A5 Z注意: 这里的rbd map和mount命令只是当时起作用。若系统重启了,则需要重新手动做。 若要开机自动做
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:01 , Processed in 0.020192 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表