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

CentOS7环境部署虚拟ceph集群

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-12-13 08:54:05 | 显示全部楼层 |阅读模式
二 ceph简介
  • 分布式存储
  • ceph层次结构
  • 最简部署方式:一个管理节点、一个mon节点、两个osd节点
    ) L+ Y: r& o( b' z: |
三 环境准备
  • 镜像选择
    $ L9 k# k# ^/ T! m' H
CentOS-7-x86_64-Minimal-1810.iso
4 f- x# }- w6 u/ f$ [. c. W: j
  • 资源配置& H7 ]) m3 f. y/ v1 q: j( L& I6 A
mem:1G
( E8 W4 z" Z. q' w# }disk:50G
% z3 l2 L6 F$ \" icpu:1core
4 I7 O% a; G9 N# T: ~, {/ X
  • 虚拟机名称
    * v  ?# c) M: B2 B' a6 I- e& A
ceph
  J) b  o. @0 p/ o( k( I$ q7 E
  • 虚拟网络选择' n0 l# c6 O4 T2 O% T
NAT:default# z$ ^+ r, `1 |0 b
四 ceph节点工具安装本节操作在上一节创建的虚拟机中执行1 `" l; M( C- K
  • 安装常用网络工具
    ( J6 P2 Z# c/ p4 P3 h' X% `( n
yum install net-tools -y
8 o& Q: [; R' W
  • 网络修改,使用静态IP( l( N% ?& F3 O) W2 S8 X3 [
ifconfignetstat -rn# x* L6 y0 Q; p7 I7 l0 c
结果如下图:  @7 G8 R! F* h* s
" ^( `  G% B4 N* z

5 e4 m8 ?) D# [$ k3 X+ K0 Zhttp://upload-images.jianshu.io/upload_images/6582575-6319afd9d040f3f3.png?imageMogr2/auto-orient/strip|imageView2/2/w/756/format/webp
% i5 ^8 u7 w  d: a8 {3 j$ d
. W: Q+ O# {4 o1 c. N
CEPH_Node_01.png
7 h% v7 a! m1 X. v/ S4 S8 G; U& x/ d$ n! Q# w" O' n5 Z

0 _! m! `+ H0 b! i将这些信息写到配置文件中固化:
3 I, v* j- `* O" G' e2 d修改DNS2 V! V6 {" k; q
echo "NETWORKING=yes" >> /etc/sysconfig/networkecho "DNS1=114.114.114.114" >> /etc/sysconfig/networkecho "DNS2=8.8.8.8" >> /etc/sysconfig/network5 m2 F) i; G. Q/ T6 S- E
修改静态IP
, ?2 o# Z$ u- u$ U+ Zvi /etc/sysconfig/network-scripts/ifcfg-eth0
, C% ]% ~9 ~9 Q0 M修改如下配置,其他配置不变
- U$ m4 `  f7 Y" X#BOOTPROTO="dhcp"  //这一行需要注释掉BOOTPROTO="static"NM_CONTROLLED=noIPADDR=192.168.122.122 //IP 和原先IP一样也可NETMASK=255.255.255.0GATEWAY=192.168.122.1
9 R! Q0 D4 [/ O6 z添加主机名! W3 ~* W) I, B/ 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% I3 a% a" y0 t4 [5 c
重启网络服务
. m+ `7 @5 z: L, u/ \) hservice network restart
; _' m8 M' e6 v/ [) [
NOTE:如果你是ssh到这个虚拟机的,会失去连接,可以关闭终端重新连接: x+ |/ i% N- D& ]
  • yum相关: {) X7 h- Y; e. ^# T
  • 安装第三方源管理工具
    & v- P! R) {0 ]+ [
yum install -y https://dl.fedoraproject.org/pub ... est-7.noarch.rpmyum install -y yum-plugin-prioritiesyum install -y yum-utils
' Y" d, \1 A& h4 r$ G$ N8 U
  • 源配置8 b  _$ B7 W2 @+ |
    创建ceph源配置文件,并打开编辑7 o. i( K: _$ J1 D; o* |
touch /etc/yum.repos.d/ceph.repovi /etc/yum.repos.d/ceph.repo4 k5 t  B( y8 V# t9 t3 P1 U* v
在文件中写入如下内容  n' W" s  h* E# Q1 p2 L
[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% m, g. ?+ |# e1 \9 j
更新yum源0 S+ s) O$ n% u" H/ O; X
yum update -y
, H) ?# D0 e, u9 c
  • 时钟相关- H8 z, \4 G/ _
yum install -y ntp ntpdate ntp-doc
5 A- s% B- B. f( P. B2 _, o0 @, ?
  • 关闭防火墙
    ( {  b: e% @( U' K( J" B! L: i4 x  D
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
; z  z1 p$ o: u: j& W, ]% s  k
  • ceph部署用户$ m4 ~- y% c/ S! G
    创建用户
    - G  i1 S4 ~/ d$ C2 [0 m' v
useradd -g root -m cephD -d /home/cephDpasswd cephD
4 o4 N0 _: v  E; A, Z免密码权限7 ]: H# l- x5 c
echo "cephD ALL=(ALL)NOPASSWD: ALL" | sudo tee /etc/sudoers.d/cephDchmod 0440 /etc/sudoers.d/cephD3 ?  z4 q1 @1 h& M* v# R1 `, ]
五 ceph节点clone本节操作在宿主机执行1 }5 t0 ^* F4 m3 k9 n* ?
  • 获得root权限
    5 d/ p& s# h2 r# {5 C( g! V' f4 a$ W
sudo su
- F8 i) |+ c3 d3 [
  • 关闭虚拟机ceph
    ( s& }3 h, c* ~8 \9 l6 |
virsh shutdown ceph, b! Z; B# o% q% ~$ u
  • clone出ceph-1、ceph-2、ceph-3节点
    ' k% x- S/ H3 t  T5 S5 @
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
+ `: ^8 i- U; F/ s2 V. j
注:ceph为管理节点,ceph-1为mon节点,ceph-2、ceph-3为osd节点# w" x/ M, K; Z( N7 J8 G
  • 挂载硬盘6 `) c7 ?! Y) g
  • 创建硬盘镜像
    ' y5 a4 ]7 M3 b9 q- r4 E
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& L$ V' E, j1 Q  o
  • 修改配置文件,将磁盘挂载到虚拟机(以ceph-2为例)
    + |  M$ w' x$ p1 v% G
virsh edit ceph-2
! G5 @3 [! C5 m1 ~" S* q% K添加如下内容到domain.devices节点下/ g4 u' i0 P, M
<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, b4 \4 x: F" D- V
  • 启动虚拟机
    8 \! U6 m2 N8 V) p1 s4 l- \7 V9 F0 ]2 `
virsh start cephvirsh start ceph-1virsh start ceph-2virsh start ceph-3) e% B, ]9 o& q, s; W
查看虚拟机状态) H* a+ p+ _) k  s
virsh list --all
  G" [2 l" Z- d( i7 U* D9 E7 T+ u) ]2 A' c; d! r+ @! y$ A
http://upload-images.jianshu.io/upload_images/6582575-ddef4a93268cde15.png?imageMogr2/auto-orient/strip|imageView2/2/w/475/format/webp% D# j; i( N1 B
  Z) j4 B8 P! }# a0 ~2 C
CEPH_Node_02.png
6 I! M& d. j( V4 i: G0 S. M* K* E5 x3 x2 |( w% P- p
  • 修改虚拟机IP
    3 g7 M0 l, z2 A+ T& G( kKVM进行clone操作之后,虚拟机IP也被clone了,在同一网段中,IP冲突,需要手动修改(以ceph-1为例)
      m: G+ O8 f2 D- N8 ^4 ]' y/ Y
virt-viewer -c qemu:///system ceph-1
# |; ?: X) m$ q1 O/ X进入控制台,root登陆,修改eth0的IP
" W9 x/ c* T" s/ Bvi /etc/sysconfig/network-scripts/ifcfg-eth0& y4 j. r, Y" \: P/ v' n+ _; x
修改IPADDR,不与其他虚拟机冲突
6 h9 s5 ^, l8 O, e: J; }IPADDR=192.168.122.123( w% ~1 j' j: |' H
重启网络服务
, r. _8 E$ G/ iservice network restart/ s0 q6 z, i( @( C1 p. o5 ~
修改 ceph-2、ceph-3的IP为124、125& r4 k! Z" c7 ]" c6 N* Q! v( U6 W
六 ceph-deploy 部署ceph集群本节操作在虚拟机ceph[ceph管理节点]上执行
' L) K8 M" y2 W" u9 H" d+ N  w
  • 安装ceph-deploy* G' E' l  l' H( h8 C/ ?  L
yum install -y ceph-deploy
4 E* K& x  [' ^: j1 ]0 |. E  [4 ]
  • 部署用户的免密码登陆其他节点
    9 V( Z, u; p+ o& R/ U2 D
su - cephD- x! N# }( H) x) b5 s( c
生成SSH秘钥,不输入密码,全部[enter]
# B3 O3 X. r% a" {5 V  Kssh-keygen! X6 }$ P7 x. C% K0 [) V
3 f( L3 j6 [) Y* z
http://upload-images.jianshu.io/upload_images/6582575-b0afce24da2d3c9c.png?imageMogr2/auto-orient/strip|imageView2/2/w/611/format/webp( K9 z7 |1 v' M* Q. X

3 r/ e5 _9 t8 Q3 K9 a6 ~% U% l+ yCEPH_Node_03.png
" @4 F& O( F8 X' w- [& D7 w$ ~7 i8 L* t9 b: n1 X

( l1 t: q- l2 j  h; W( O添加信任,执行以下操作5 |# X& Z* @$ N' @" U5 e
ssh-copy-id cephD@node1ssh-copy-id cephD@node2ssh-copy-id cephD@node3
* ~6 [( j2 d7 Ncd ~;touch ~/.ssh/config;vi ~/.ssh/config
- q* B" w+ e3 Z3 n输入如下内容
. p- J. t/ x9 }Host node1    Hostname node1    User cephDHost node2    Hostname node2    User cephDHost node3    Hostname node3    User cephD
4 e4 T' [( o# S: P8 p/ X! _
  • 创建集群
    9 o; u: k) i3 U0 F; E. m
cd ~;mkdir my-cluster;cd my-cluster;ceph-deploy new node17 v5 E0 \$ H7 Y7 G' W  D5 R
结果如下:
- o' y0 j5 W8 C  |* u" |" u% V: N/ b: O/ T: d( H
3 ^2 G9 }8 d0 _; g( }
http://upload-images.jianshu.io/upload_images/6582575-1e2620e0391192b9.png?imageMogr2/auto-orient/strip|imageView2/2/w/839/format/webp& \2 m/ l( d7 W* R
+ [6 u  O3 H9 M
CEPH_Node_04.png
3 s0 O3 V% W0 O' m1 x/ v, I
! U* k. C2 q  ~4 T. n, [9 k5 B  Q0 E+ q: s$ B
修改OSD默认数量为2
- C9 K# r1 H8 |: z# G; f, C( f8 b/ Recho "osd pool default size = 2" >> ceph.confecho "public_network = 192.168.122.0/24" >> ceph.conf, b9 b- \; f. d' [  a) _4 R$ @
  • 集群安装ceph2 e  ~- L0 A6 S# _
ceph-deploy install --release luminous node node1 node2 node3
: S1 |1 E8 }7 ~& d9 V! G  @& R! |" Y
http://upload-images.jianshu.io/upload_images/6582575-0ae9958bb7a46686.png?imageMogr2/auto-orient/strip|imageView2/2/w/725/format/webp
0 G6 F2 Q1 f3 N! |8 x' u

) _0 A9 y- H2 b, z* n4 SCEPH_Node_05.png
# N# q0 Y- A* i0 q* ]7 ^! x8 g0 j; O% _! p7 l5 O9 t; _9 P6 {5 y, ?
  • 初始化ceph-moni服务
    8 {' A- K/ z5 F3 K
ceph-deploy mon create-initial* {, o1 y% S+ W+ ~

4 d8 ^: Q5 M1 b* Qhttp://upload-images.jianshu.io/upload_images/6582575-1de180078709ccc6.png?imageMogr2/auto-orient/strip|imageView2/2/w/721/format/webp
, `/ S8 f0 s( q3 G) Y! X

; h) k& g6 _0 X) U0 TCEPH_Node_06.png
7 J) C0 |$ {1 E. e' m/ c+ V$ w- y: c" N% J
  • 拷贝管理员配置到各个节点
    : w  i( ?  P5 R; p! H3 B
ceph-deploy admin node node1 node2 node3
; b1 |$ O: k* N+ w" d# A$ ~& b+ S
  • 安装管理例程
    + [# S4 g9 ~3 R& r, S
ceph-deploy mgr create node1 ) ]7 n- Y/ K' e+ [5 V" @
NOTE:mgr和moni是什么关系9 a2 g( j4 Z* A" n7 M5 a
  • 添加OSD节点
    9 i3 e" |4 z- ?7 p8 L4 S
ceph-deploy osd create --data /dev/vdb node2ceph-deploy osd create --data /dev/vdb node3
( B& m9 i8 s" x- C+ ?5 e
' j$ H6 D8 B' X+ Q3 b' k8 ?http://upload-images.jianshu.io/upload_images/6582575-858fea0c1ddfdc61.png?imageMogr2/auto-orient/strip|imageView2/2/w/722/format/webp, G8 Q" W) n$ u4 c  |6 L4 z

3 y9 G: j! z+ I8 xCEPH_Node_07.png
0 ]: q/ a6 {# |5 y7 q1 ?
  B/ q5 K2 c% U( t6 p& I
  • 查看ceph集群状态
    ( P- |9 M0 Q( d, T4 O7 w
ssh node1 sudo ceph healthssh node2 sudo ceph healthssh node3 sudo ceph health
2 T' X% y2 ^9 K* O9 D. m  S" G& V$ v0 \  Y( K% J- p$ M
http://upload-images.jianshu.io/upload_images/6582575-c64d213a876a4f0b.png?imageMogr2/auto-orient/strip|imageView2/2/w/472/format/webp/ W% n/ [! N( u# T
; z# D' v+ j/ t- w: z
CEPH_Node_08.png
+ y7 u, ^( w" k; R
7 o2 D. G( u2 K6 g- W) m# ussh node1 sudo ceph -s
4 T5 i# i: o! U- v2 D1 U; t- U! J
' I% ?3 M2 [8 j! o7 d  r8 ihttp://upload-images.jianshu.io/upload_images/6582575-b86aedb7d28f262d.png?imageMogr2/auto-orient/strip|imageView2/2/w/660/format/webp
! l8 X  @7 D! A2 s& d# T8 U4 W
" p: ?3 t9 U- J0 @/ z
CEPH_Node_09.png
0 X8 g8 C$ Z& E4 I' k1 c1 G1 T3 p2 {9 G8 ~5 f4 [
  • 集群扩展4 N! N8 Q# L+ p4 w
  • 新增元数据服务节点
    ' k5 r$ V" Q8 C  ]1 Z, x
ceph-deploy mds create node1ceph-deploy mds create node2
6 i! k7 T8 j' L
  • 新增ceph-moni( t  h. ^9 f' c2 k$ C
ceph-deploy mon add node2 ceph-deploy mon add node3
6 i, p# k2 P9 C1 U5 R% s$ E) m
NOTE:现在集群三个节点都运行了ceph-moni ?
2 Q7 g4 B: C, w, i0 P
  • 新增管理例程节点$ @3 Y8 c1 R! s; `# E5 S
ceph-deploy mgr create node2 node39 C7 D( b4 z$ u* N- r
  • 新增rgw实例' K0 h( P5 G" {4 }6 l
ceph-deploy rgw create node1ceph-deploy rgw create node2
! N* \1 l  N, j1 _' C" `  Z" L
  • pool操作
    / M7 o. ]0 R( W0 S1 ?( A
ceph osd pool create mytest 8  //创建ceph osd pool rm mytest //删除
0 {5 I7 L2 `* F8 V) _* O
  • 对象操作4 L/ V3 Y: \$ |- s" {7 y2 Z
[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=mytest2 b4 s$ q% Z8 C1 W
七 ansible 部署ceph集群本节在ceph主机以cephD用户执行! e  t  x/ t. e; z2 J+ K" t5 i( j+ k
  • 准备工作8 y2 w4 r- Z$ C: n8 S2 j! ]
  • 卸载ceph集群+ o- R1 r5 q$ W. |! B$ c
cd ~/my-cluster;ceph-deploy purge node node1 node2 node3ceph-deploy purgedata node node1 node2 node3ceph-deploy forgetkeysrm ceph.*( F- w9 o- }$ |
  • 安装python-pip工具
      M% o: r* l' ^& \( v/ v+ r# L. K
cd ~;sudo yum update -y;sudo yum install -y python-pip;) Z. r& l, B. b, z
  • 安装ceph-ansible
    $ E1 w' B' L1 L2 _( }) k1 y( j: V( s
  • 安装ansible-2.6.4% ~# ]& v" n4 }6 _4 N5 ^6 N- Q
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/ M* N; Z4 A# m5 G# ~+ D. {
2 \# E) r; t  Y
http://upload-images.jianshu.io/upload_images/6582575-794b0da59192c239.png?imageMogr2/auto-orient/strip|imageView2/2/w/1031/format/webp$ K1 v/ p) M' c& G- y
; C; A" _4 ?: r% e, d: x3 P6 t0 ?
CEPH_ANSIBLE_02.png
1 ?2 t8 |) c! j, H* D
- G1 k; h1 K+ I: F
  • 下载ceph-ansible
    6 u  H" g" |9 ?' P
cd ~;sudo yum install -y git;git clone https://github.com/ceph/ceph-ansible.gitcd ceph-ansible;git branch -a|grep stable$ a" @" p- ?9 M: `
结果如下:5 x7 A. O/ [0 r6 b& t5 Z

8 Q& W6 z; G  [3 d) S6 H$ @) x# Y
http://upload-images.jianshu.io/upload_images/6582575-91657a2dd15e6f50.png?imageMogr2/auto-orient/strip|imageView2/2/w/618/format/webp
5 w, d" p6 N9 H2 Q4 z

, X. ~& P+ _1 i" o( ^/ Q$ |CEPH_ANSIBLE_01.png/ s; M' r. X" d7 b# n# S: `( Y8 A

  e0 Z9 i5 q3 z
  • 发行版说明
    2 Z/ b3 [) t) q) M. E
[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依赖$ v+ j$ j: X7 [0 W& J" u; [
git checkout stable-3.2sudo pip install -r requirements.txtsudo pip install --upgrade pip1 s9 E" \" w0 Z: v: H, ^+ p" e
  • 配置Inventory集群主机) f0 @" I" p# g- @  G! V
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/hosts# R9 z% ^6 i( S7 [; R; K
  • 配置Playbook部署指令2 z! Y! [2 G. T+ u9 ]6 y, M
cp site.yml.sample site.yml
8 f& J* Y2 g7 u/ ^& g8 f+ h
  • 配置ceph部署
    * X1 b! Q" r  [  m2 s
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------
. f/ q8 {$ B! X( h2 s
  • 安装执行' Y: Q% N, w7 W$ h, n
ansible-playbook site.yml -vvceph -s
. G4 j6 D3 d* u$ K* k/ s
NOTE:-vv 提示更多错误信息: Y% W9 o; f: ]
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 ---------------------------------------------------------------------------------------------------------------------------------
- I+ ]9 a. p( I) _4 j. i+ b* b检查集群状态" R! R& r5 J7 G& M6 l
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:     ) p: g6 {1 ^% \
其他操作可以参考【七 使用ceph-deploy安装】第7步之后的操作: a# k. k+ w1 @3 o
NOTE:本节安装没有ceph-admin节点,所以node节点上是没有ceph的,所有ceph操作需要在node1上执行:2 `- C0 a0 I2 f0 d# m' h! Q
ssh node1$ c. v% j: i8 |8 S0 [# W
八 离线部署本章在cceph主机以ephD用户执行
; ]* X) v! d2 ^/ ]- w
  • 搭建本地仓库
    + h1 A0 b  |% _; f& a& uCentOS7搭建本地仓库--CEPH
  • 使用ceph-ansible部署; [, A0 d% j9 a9 C- Q0 j  N$ X" M  ?( P
    参考【七 ansible 部署ceph集群】
  • 与第七章不一样的地方. {/ h# _" z5 o7 |5 Y& D
  • 安装python-pip工具注意点
    # W1 Q& X+ U* s! P0 H: ~
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.1293 X( T1 y2 Q8 A: W- A) d
  • 配置ceph部署注意点8 q! S  h+ v4 _
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------
/ Y- \" y! E. b8 m$ K; |
  • 提醒
    : |) F' _0 x/ a1 ~ceph-ansible 部署ceph集群的时候 cephD用户的一系列操作也是必要的
    ' |0 X2 U; d. j. q; r% {% J, p
九 操作集群
  • 启动所有守护例程8 ^. u4 T7 G7 h) }
sudo systemctl start ceph.target( i  j" x/ `1 ?. b9 Z
  • 停止所有守护例程# \! o, n6 f1 i3 z# n, q4 e; H! v
sudo systemctl stop ceph\*.service ceph\*.target  `4 K6 J4 I  z( b" R1 _% q( Q
十 问题&解决
  • [ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph'3 W  P* o7 y0 |% L$ b
    Solution:等待20分钟,再次执行(有时候,由于网络原因,yum install -y ceph ceph-radosgw 时间会超过300s,造成超时)
  • [node1][WARNIN] Another app is currently holding the yum lock; waiting for it to exit...+ ?: ~' W5 ]4 \4 d
    Solution:等待,或者通过[ps -ef|grep yum]找到锁住的指令进程,cancel掉之后,以此执行yum指令
  • 安装特别慢) P) W  i$ H1 i
    Solution:可以不在一个命令中安装,经测试,支持并行安装,如下:
    2 b* c& {+ B5 X# @6 `) q
ceph-deploy install --release luminous node &ceph-deploy install --release luminous node1 &ceph-deploy install --release luminous node2 &ceph-deploy install --release luminous node3 &  I8 _+ A$ O6 y3 C6 L1 I7 I2 o$ A/ l
  • auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring  ---- ceph quorum_status --format json-pretty
    ' b% t: Z3 S! M* K# U$ D
sudo cp * /etc/ceph/sudo chown cephD:root /etc/ceph/*. h- e# m: v1 E) x. Z9 x
  • [ceph_deploy.rgw][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; ...0 y9 S7 l# T' `6 ^- _
ceph-deploy  --overwrite-conf rgw create node1
4 ~6 t6 W5 T& n
  • [ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
    , }0 F: d* G* I2 y
echo "public_network = 192.168.122.0/24" >> ceph.confceph-deploy --overwrite-conf config push node node1 node2 node3* U( V- Z. d$ x# n* k' i
  • mgr和moni有啥区别
    3 e0 ]; s+ f: D/ y; ~在luminous版本之前,mgr进程包含在moni进程内部,L版开始拆分出来
    / r: B) `6 v: b; u
$ ~( U/ M' q( L
* }7 D) N+ P! S0 S* Q- X% d

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-12-13 11:49:33 | 显示全部楼层
继续上节ceph 安装继续配置配置 Mgr+ I7 i3 F  A) J' c
$ @/ ?) t4 |2 M& p+ Q& f
  #  ceph-deploy mgr create ceph1:mon_mgr ceph2:mon_mgr ceph3:mon_mgr4 {" r6 x( F' z2 Q1 D
' r5 @( ^3 o1 {. w/ }& @
开启 dashboard (在任一 mon_server 节点上)
1 e- R$ ?4 h. R6 M0 s/ J# K) T) X. L3 w% j) r- f, m
  # ceph mgr module enable dashboard
, o0 A: o3 s: y4 u1 J3 |, f! c6 }, y/ o
到此处mgr 配置完成。- [$ d7 t. o7 {0 w
5 g7 N: A$ x# H3 Y4 T8 x
在浏览器访问:http://mgr-server-ip:7000/: y& u6 K/ @1 h+ y. x

5 U9 E8 f% ]; L  a5 J& s  
& Z5 V& S" t& b; Q* m2 i9 I4 T+ u( O0 n5 n

1 T7 M& K+ D, \& l+ M0 A$ N8 D* K; u* w: U$ Q* q) f
提醒:目前 mgr 功能模块可能还存在选举问题,如果多mgr 节点都开启,可能会出现web页面取不到数据,建议只开启一个mgr节点服务,然后关闭其他节点mgr服务。
/ |2 s: _9 g5 F' k
' [, [2 V6 h" o
0 {- v0 Y) C) `2 ?0 t8 \7 A$ [% w& B& f. W+ [# F- R

  R4 R* N% r( k( y1 u- a2 K
5 {0 k- H3 M& M 0 _# A+ }# V; m# ~" ~' R

8 R% O( ?9 J; p6 }/ T$ w4 s& A设置dashboard 端口和IP" l; b, g/ T' O
* v  m" M, S2 K4 u0 d) u3 A
  # ceph config-key set mgr/dashboard/server_port 7000   (指定集群dashboard的访问端口。可以不用配置,默认7000端口。)8 N1 k5 y, K  Y2 \8 V

  P- {3 [! _$ n* B& Z  # ceph config-key set mgr/dashboard/server_addr $IP       (指定集群 dashboard的访问IP)% z0 H6 I, _! \* \' i9 A3 [9 o
( y4 W) G. N$ x9 h# C1 j
服务重启:+ U% a, N7 [( X

9 T8 g8 N; m/ Q! \  # systemctl restart ceph-mgr@mon_mgr
9 J, D* c$ L# a& @. u- T. p1 \4 [' w' ?% O2 |
3 B$ e6 Y  s4 Z

% D5 Z" C0 c, y; Y% O% i 更新:1 T) O( W7 W' t3 M
2 L+ e9 k5 \* u5 L
mimic版  (nautilus版)  dashboard 安装) A9 s- A- n( @' z" l, X
) o& y" l& S4 B
  如果是  (nautilus版) 需要安装 ceph-mgr-dashboard
% x. D+ O2 o, s
6 D6 t* @) b: c" o; o7 v  # yum install -y ceph-mgr-dashboard
: n4 m! G) `& e% @. j' L  R' g9 }8 j& C4 g' `$ L+ c
1、添加mgr 功能
& h: U* h5 o$ E/ A
$ p' Z  T" M& g+ n* k   # ceph-deploy mgr create node1 node2 node3
0 O# G: l" n7 d, [
" ?$ h6 G0 p  j2 B4 D; R 2、开启dashboard 功能
( r6 y  \: s& A7 [$ j" n
) d, k5 _8 n6 l+ u   # ceph mgr module enable dashboard2 s( ]1 w/ v; W# S2 N

1 s: w3 L0 {) m: e3、创建证书
+ W* O  G" ~% A! w) U3 i+ {( H3 f6 B3 `! s( W8 W5 c, q; A
  # ceph dashboard create-self-signed-cert4 p( l- Y0 {, C2 K
9 w, Z7 s# {6 n+ {+ D, g
4、创建 web 登录用户密码
2 _' P, M  y  X! a! I% [% L: O5 ~" L6 j) Y9 _; P, Y8 k6 u
  # ceph dashboard set-login-credentials user-name password. Z" |7 Z6 [/ n: X! t1 h

0 N6 d% x1 H/ f  {. P5、查看服务访问方式
6 Y: P6 @$ N- A- f+ ]9 x' R5 Q5 D
/ e, L. b& U* E+ H. k  # ceph mgr services* ~+ s- ]; p( T

: @6 V# C8 j1 p5 @8 y- L

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配置文件
3 M1 _8 W, P1 f$ P" z复制代码
8 E8 v3 E) V& f8 \4 ]9 S3 V  W# 认证,但我显示系统证书崩溃,请重新注册,就先跳过了4 c9 N' z/ r" W  V# `0 q- v
yum install subscription-manager( s# I, s* n* k0 C1 ^! o. F
subscription-manager repos --enable=rhel-7-server-extras-rpms
) Q8 k$ G0 I- D/ \
! R' B% O) c- G  {yum install -y https://dl.fedoraproject.org/pub ... latest-7.noarch.rpm! G; N. ]0 Q* B
安装参考:9 v0 w. R( T& n
http://www.mamicode.com/info-detail-1287279.html
& ^; m6 @3 M+ u$ N  y& Q( S复制代码
- M, c; W! B3 C$ l 1 M& i' n3 t1 Z) W& [- x
+ P( O) m$ S: \6 V: h
文件位于控制节点(即admin node)的 /etc/yum.repos.d/ceph.repo2 j8 w* _. v$ R6 M
; y: t/ _0 H8 X: w. R) H4 ?
复制代码& a6 r5 d  V6 Y. d" a
[ceph-noarch]3 C: n4 J& \# h! [3 }8 V
name=Ceph noarch packages+ G& I( R* k: J$ S; `+ T/ ~
# baseurl=https://download.ceph.com/rpm/el7/noarch+ b/ U8 @" \+ N
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch7 \! h$ c2 Y4 F6 S( {
enabled=1
( B% Q: y0 P9 f- J- y5 Zgpgcheck=1
$ f8 o  F6 T" N1 ?type=rpm-md
1 ~7 Y; H9 f4 C2 W7 y3 d2 L+ x+ c# gpgkey=https://download.ceph.com/keys/release.asc+ U- b1 c! l) [( ~. y# H9 J" ~
gpgkey=http://mirrors.163.com/ceph/keys/release.asc# n* _6 u6 I, m6 q* r# S) [. ~4 {
复制代码, r/ G# B9 S9 U9 z! _
注意:
) k1 _6 n2 a0 `上面的注释部分,是Ceph官网的写法。但是对于我们国内的安装,这样几乎无法成功,因为下载Ceph太慢了,会导致失败。因此,需要改写repo文件以更新Ceph源。 5 z; u5 p9 G2 q9 Q% Y
常用的Ceph镜像是163镜像。但在使用163镜像之后,必须将rpm写成rpm-luminous,这样才会安装ceph-deploy-2.0.0;若只写成rpm,则实际安装的是ceph-deploy-1.5.
, B0 Q8 {7 _7 t- @$ H, \' M  Z& m2 p2 I/ B
8 L6 ~# h* V3 _  g! F
. N, b, D* m& A8 d. ?8 p8 @$ b
Step 2.admin node安装ceph-deploy
- i8 q4 O# l3 a. m* |- @: {yum update7 \! j4 w* p, T* Z
yum install -y ceph-deploy
, n  _$ ~' `5 L' T: f% o 管理节点必须具有对Ceph节点的无密码SSH访问。 当ceph-deploy以用户身份登录到Ceph节点时,该特定用户必须具有无密码的sudo权限。4 T) H4 m1 l% Z0 O1 i; c+ U

4 c6 K7 k4 v. J8 v' a; Q# _" D . m2 V# {( ]( v! k4 b5 }

+ f& I! m7 e" N* S3 QStep 3.每个ceph node 安装ntp和openssh-server
1 n  o, F) H5 |: l' u+ c% B因为将来拥有monitor的Ceph node需要使用ntp来同步时间,因此需要安装ntp相关工具。而openssh-server也是必须的。6 S7 A/ I! ?% Z1 g3 r4 v$ P
" y: R2 p! B8 @
yum install -y ntp ntpdate ntp-doc+ ~& W2 n! H& E2 z) x
yum install -y openssh-server
2 k$ T# S9 @$ ~6 O( z
- B7 s) W: }. b7 d! o
# s+ o; C% p4 Z9 T  V; V* H  P  rStep 4.每个ceph node创建一个Ceph Deploy用户! N5 o+ y; z2 P
ceph-deploy实用程序必须以具有无密码sudo权限的用户身份登录到Ceph节点,因为它需要安装软件和配置文件而不提示输入密码。- ~: P0 {. k5 E7 }; s0 e

" M) u$ z, X' P0 [+ [最新版本的ceph-deploy支持--username选项,因此您可以指定任何具有无密码sudo的用户(包括root用户,但不建议这样做)。要使用ceph-deploy --username {username},您指定的用户必须具有对Ceph节点的无密码SSH访问权限,因为ceph-deploy不会提示您输入密码。2 j9 [# V5 r5 J0 ~  [- }' f
4 g2 i" p; z- m, n. M( Z% d
我们建议在群集中的所有Ceph节点上为ceph-deploy创建特定用户。请不要使用“ceph”作为用户名。群集中的统一用户名可以提高易用性(不是必需的),但是您应该避免使用明显的用户名,因为黑客通常会使用暴力破解(例如root,admin,{productname})。以下过程用{username}替换您定义的用户名,描述了如何使用无密码sudo创建用户。1 }/ ?0 I$ Z, i" ?; d

. I* G* \( U& t$ n+ o; w& b# K注意:从Infernalis版本开始,“ceph”用户名是为Ceph守护进程保留的。 如果Ceph节点上已存在“ceph”用户,则必须在尝试升级之前删除该用户。) }/ z7 [% X1 L% V( V7 Z+ v; h
. j( D' H4 S6 E
useradd -d /home/luxiaodai -m luxiaodai
4 }2 r3 F' d/ D& S  ]7 Bpasswd luxiaodai(123456)1 F* A! E0 p- }3 P8 P2 C) T
# 给该用户sudo的权限5 s  X* o- a% R- e8 p
echo "luxiaodai ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/luxiaodai3 P0 L1 r: K, V1 }. C& \0 P: |
chmod 0440 /etc/sudoers.d/luxiaodai. f7 p" F* j' D4 Q# ^
& I7 \7 E  t. X
6 b# x% s- h9 \( f& d; v1 W
Step 5.admin node设置免密和填写 ~/.ssh/config 文件
: x6 ~3 D. K9 k7 E. R/ f+ S% C设置免密7 w4 ~1 [6 E# @3 [: l  |
6 S& v" B2 R2 b- p8 }4 [( ]
复制代码
1 x7 }" c- d7 _+ R0 J8 a# 生成秘钥
5 i5 C! [7 Y# r6 O4 x2 bssh-keygen
& K( m* C8 D8 F: r% b
; b; j1 D; q8 `( a8 V# 拷贝到其余节点* w! i' ~; t2 I1 @0 T, h, p/ @
ssh-copy-id {username}@node10 `% j" [( A) j
ssh-copy-id {username}@node2& |% e' Z8 V& h
ssh-copy-id {username}@node34 l$ q) j# U  G4 U* O. n; z+ U
复制代码% t; y4 Q1 }( E, G# P
~/.ssh/config 这个文件是给ceph-deploy使用的。通过此文件,ceph-deploy可以知道用户名和Ceph node的信息;这样,就不用每次在执行ceph-deploy的时候都指定–username {username}了。用户(luxiaodai)和节点名称(node1等)后面会介绍怎么创建的
8 V. n. U6 w9 C; S) _  t6 D# }/ m9 G5 N7 B9 A
复制代码7 j: S& D7 h9 l. c4 P
Host node12 \( o& X. n& \( [
    Hostname node14 U( Q2 L! Q$ s6 Z: ?! m4 Z
    User luxiaodai8 }, }- d6 @* s) F
Host node2
) D. u8 o5 p8 F0 d# j    Hostname node2$ [, @1 @7 g2 s
    User luxiaodai. x0 U4 W2 g8 G' ~. }/ Q) a
Host node3; M3 o/ Z( b4 F. z$ U
    Hostname node3
( Z1 R3 X; c$ i8 ?1 T* m    User luxiaodai
: P: K) w* M4 h0 f5 A! U2 b复制代码
. i7 E, L/ F, u1 c+ e: k/ w关闭防火墙:2 S5 G8 F6 }1 ?& W
. s  p: l( Q) x+ ^6 q4 t( r* }, _% T
linux修改主机名+免密认证+关闭防火墙
+ @" D2 t' o. c' t/ a
1 @5 O1 o4 K! d/ e: y/ e$ e3 v # w0 [; {0 _) C

4 r) v1 T% h/ c9 c  qStep 6.TTY
2 Q! X; n/ B  y, p在CentOS和RHEL上,您可能在尝试执行ceph-deploy命令时收到错误。 如果在您的Ceph节点上默认设置了requiretty,请通过执行sudo visudo并找到Defaults requiretty设置来禁用它。 将其更改为Defaults:ceph!requiretty或将其注释掉以确保ceph-deploy可以使用您创建的用户与创建Ceph部署用户进行连接。- n6 M. C& |$ E& q; J5 e

4 e. S* X, S2 d8 P8 B
& @; c: j! a" K8 [4 b- V% ^3 w$ J, b4 I$ j, f& W( Q: N, K. z6 H
Step 7.确保您的包管理器已安装并启用了priority/preferences package。 在CentOS上,您可能需要安装EPEL
* h4 G8 N0 M1 @; ~3 N& c  Vyum install yum-plugin-priorities* m" g) u& w1 E) ?0 g3 }
+ B- f- M; H* o( e+ |; M

/ [( U/ j) z( w" C+ y! Q/ ZCEPH STORAGE CLUSTER安装* ]$ i. f: F% _  {7 ]2 j
Step 1. 创建工作目录  D& y0 ~0 h7 N8 o& X
本步骤在admin node上完成。
; E5 |( G1 |8 Z' t- @4 M  O) w
4 h' x0 o* W7 W2 v" p3 @! Bmkdir my_cluster
: M1 g1 y8 \! c' _& b' Wcd my_cluster
# u1 Q& n4 X+ p* aceph-deploy工具将输出一些文件到这个my-cluster目录。要确保每次运行ceph-deploy命令都是在这个目录下。
+ v+ i) M, D3 z9 a$ ?# C4 K" ~+ c$ V6 s& j0 J1 T! c4 o
注意: 不要使用sudo来运行ceph-deploy命令,也不要在使用非root用户时以root用户身份运行ceph-deploy命令。因为ceph-deploy不会把sudo命令也发送到远端的ceph node上执行。% V) U" ]! S8 `
2 `5 e% ]6 k; [. h. H
' t8 `' W- j5 [7 Q' C
0 i8 A, s: S. O- c1 W
Step 2.环境清理
  n8 ~5 Z2 B3 y: O* v- m, {在任何时候当你陷入困境希望从头开始部署时,就执行以下的命令以清空Ceph的package以及擦除它的数据和配置:
2 @0 T( a, _  q2 M7 j3 h( `
) b& ^( u+ V9 \) ^' J2 Hceph-deploy purge {ceph-node} [{ceph-node}]& v0 E- a1 c' X& l  X7 f5 ~
ceph-deploy purgedata {ceph-node} [{ceph-node}]# p% s# Z$ e( [* o) t
ceph-deploy forgetkeys
# x( L( a' v6 J! r3 u) J/ h3 Arm ceph.*
* R+ N6 c/ H1 w) A- P2 G! k/ p这里执行
' A1 y+ P" g/ ?+ ]/ _- q- f# z' g* s, B- \
ceph-deploy purge node1 node2 node3# R2 \! T0 o- P9 q+ g( l" q
ceph-deploy purgedata node1 node2 node3  _! p1 e9 W! X& E( n% `  R
的时候提示+ ?5 A- l& }4 I6 T% ]
2 G) f% I3 \' P# z# ~+ q! a: A
ImportError: No module named pkg_resources' h: q. k0 O0 k# E8 d
解决方法:7 s; r, U* Y* C0 n
1 M2 H% Q. t+ P7 A* n) S* O/ w
yum install python-setuptools* {7 `  l2 I$ J# O
如果执行purge,则必须重新安装Ceph。 最后一个rm命令删除在先前安装期间由本地ceph-deploy写出的所有文件。
0 _2 C) K2 [% u) U. R) h4 u& n! h* N, e/ }: n: z

+ a$ C6 W; x3 `8 `' e. p; x. H& ~5 y" t: t0 P
Step 3. 创建一个集群7 Y1 x- X& z) a
先创建如下图所示的ceph集群,1 monitor + 1 manager + 3 osd daemon
( r8 @3 ?* a2 j6 }: D
% i& u; c- |# x! d' X1 w! p, I- Y' ~- M. }

; F* |) v* r0 q" X9 G$ j0 G 7 t) b1 W% S0 k. }6 S: o; j; W( j) s7 l

3 C# G# j% l  f  n3 f1.创建
$ g% I$ t: O8 d& y: ?ceph-deploy new node18 W2 Z* w1 F) r' V8 K" [
这个命令结束后,会在my-cluster目录下看到:ceph.conf, ceph.mon.keyring, log文件
& o+ t1 V$ _( t9 N9 u7 Z3 Z; A- U7 [8 z7 C: L

4 ]: a2 f: O* y
& v" O, }& P. }
1 K3 ?2 f9 R, |8 F7 J* x) n) i: F+ W' `+ p4 j3 u% F8 d+ w6 Z- w
2. 添加public network的配置到ceph.conf7 J, o7 T' ~3 i
添加下面这句话到 ceph.conf 文件的 [global] 段" M9 [( u1 v' i8 G) e8 L0 D5 V; L

9 X( V0 m# D) u6 P* C$ P0 Gpublic network = 192.168.1.210/24
' Y6 j3 s9 }8 @3 Y2 y5 S3 Uor
# M6 o# n2 ]# \$ S6 b0 z8 m7 @public network = 192.168.1.210/255.255.255.0  X# h; F+ \; r( ?( {5 j

$ F! i, N9 e. j' U+ f( z& F/ k: F" V  M
如果要在IPv6环境中部署,请将以下内容添加到本地目录中的ceph.conf:
4 L8 J1 }4 G2 e5 M# U
" z" u2 O: b1 f9 m! L: b  s( K) G1 Q& x1 ^; xecho ms bind ipv6 = true >> ceph.conf
/ R- Z" z& A" a# b# D
) ?$ n+ o9 d* }" F$ n4 v; b" S8 F/ D4 ]3 @& V+ H$ a
3. 安装Ceph的packages% Q8 z$ v7 z; A+ P1 [8 D
ceph-deploy install node1 node2 node3* L1 Y1 X/ {  P& e
安装过程中出现的问题/ d7 B+ s; o8 D; t' d, u3 z0 n
. h8 y: Q% F) |0 m' }& j0 Z1 ^
复制代码
* x; U% c2 w6 m4 @. Z# 如果安装一直有问题,清空/etc/yum.repo,然后将yum源换掉:http://mirrors.ustc.edu.cn/help/epel.html
; t2 r6 Y& U9 A+ A7 G1 @" [3 A问题:1 v/ F* I7 h8 v# P- c% u& G; w% C
[ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph'
" x1 v& J9 N  ?3 A: a解决方法:
" V  J5 ?  R: m5 Yyum remove ceph-release0 `' g( \2 e/ _% R$ c0 K
rm  /etc/yum.repos.d/ceph.repo.rpmsave
3 f. r2 h& A3 Q# h* X% n0 X8 J问题:4 O; `$ R0 C& g* ]* Q6 a! p& }+ u: u( ~
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: yum -y install ceph ceph-radosgw
1 t' u0 |' B. Q9 ^8 ?: [0 U2 k) N& q解决方法:  [' I+ T: C3 f+ [
yum -y install ceph ceph-radosgw
, @  |/ U; B) g3 ]3 J/ T: mceph安装缺少python-werkzeug包
4 N( ]; H' {1 m& N安装包下载地址:http://rpmfind.net/linux/rpm2htm ... ery=python-werkzeug
, l' o( q. L) x3 p4 w/ {+ y9 m3 R. Q# zrpm -ivh python-werkzeug-0.9.1-2.el7.noarch.rpm; E% Y2 m, s0 ]& _
问题:[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph –version
* |  E! G$ m0 ]+ e: M! A( f% ^解决:ceph1 安装速度过慢,已经超时了,直接手动安装 yum -y install ceph ceph-radosgw: p" o: u7 l- [2 m! Q
复制代码4 I$ B* E" S/ ~
安装成功!!!. s& ~6 M" m" J5 b  A' Y2 b/ ?8 t" z
+ O) r+ ~+ v' D' I) b+ E9 U

2 O4 g2 Y: v8 c7 R/ f1 [1 g+ ?, J" T" T, m1 e/ `
; T! m* Y9 c9 A0 w2 }7 n6 X
; k  o8 ]7 i: U4 s1 ?( N1 U3 T
4. 部署第一个monitor并产生keyring6 k& l+ O- Y5 ?+ }/ n* f% T
ceph-deploy mon create-initial
6 _6 t8 j, Z6 e- S( j7 L注意: 4 t; I5 |; ^' ^1 J3 V0 ~
若出现类似于”Unable to find /etc/ceph/ceph.client.admin.keyring”这样的错误,则要确定在ceph.conf文件中的mon_host的IP应该是public IP,而不是其他IP.
) @6 ?8 D+ r' \3 p0 W/ k- e# k2 ?( [9 K, o: ~9 H
当这一步结束时,my-cluster目录会出现如下的keyring:- B. c" A2 @; f" n; M0 x

* x: {- r9 S9 r) y: p
! w- J1 q6 R! R* p( @" Z, A2 G/ G- _0 ^4 F2 c7 ~! R
9 g% u4 r% h0 a# n" X' n3 l

/ h' R# N1 m/ I3 K" p& S+ J1 S5. 使用ceph-deploy拷贝配置文件和admin key到ceph nodes.% u  ~0 R( |5 I' K9 }7 e5 y
这样就可以使用ceph CLI来执行命令了,而不用每次都指定monitor的地址和ceph.client.admin.keyring.
8 O. W( _" g) ^/ r# E( O$ t  j. |0 O# r7 r  b- b
ceph-deploy admin node1 node2 node3: M6 y" ^; d- E0 S. {: V: x$ a
5 K$ ?8 s; ^& k; C

  N5 s- H4 F. Y8 K$ Q6. 部署一个manager daemon. (Luminous开始要求的); w2 p0 g# U, o8 b" M
ceph-deploy mgr create node11 _7 ~& R8 p; ^# ]: G
8 E: I5 o4 Z' C0 T3 a  o( X  c) D

7 [( P5 s! f- K: s) N7 b6 \7. 添加osd3 q6 c4 N; D! g+ }+ h  Y0 U7 M5 d
添加3个OSD。 出于说明的目的,我们假设您在每个节点中都有一个名为/ dev / vdb的未使用磁盘。 确保设备当前未使用且不包含任何重要数据。5 J" t9 D. H9 p% M- r5 R# R
4 k7 |* D  ?7 U1 B+ d
复制代码/ }, H# S, ~# n
ceph-deploy osd create -data {device} {ceph-node}
( F& B/ o8 k, y  Y% ^9 G& T2 a: v4 B5 M0 s7 a; U5 Y1 i
ceph-deploy osd create --data /dev/sdb node1
/ @. G1 ^. K' _( _5 W7 _6 Pceph-deploy osd create --data /dev/sdb node24 l& d8 x# S# i* a
ceph-deploy osd create --data /dev/sdb node37 n1 ^" e: F! w1 F, Q' g" w( k
% n8 U9 e/ v$ P; w  C
注意:如果要在LVM卷上创建OSD,则--data的参数必须是 volume_group/lv_name,而不是卷的块设备的路径。, g4 ^2 Z. ~1 I0 ^
复制代码4 d& y4 h) [& J1 C  m6 m& {% g
7 C* u( ~4 }; ?0 m
3 k5 K3 z$ R/ N6 h* u

. Y! n. A6 `$ Y/ P8 K
: j( N# T# \+ ~7 ^
9 _! n( q7 C; s6 l5 M6 M- F  g; \4 o% X
8. 健康验证% U& G) A. A' [* p+ K
ssh node1 sudo ceph health
8 ~7 [: @  ?: s' K
, q  `9 @/ Q' V- s您的群集应报告HEALTH_OK。 您可以使用以下命令查看更完整的群集状态:
+ ?. @) k8 {8 Q5 ?2 h9 r8 Q& D5 Q6 N) b9 L9 E% D8 n1 ~
ssh node1 sudo ceph -s
% z  a) N  j( l* W. s. I2 N9 t 查询结果如下:8 e$ D+ I" r0 b6 E9 u0 |

6 I' ]7 s# R: l( y2 {2 S- ~, o9 X$ a
, S+ q2 @7 Z' c! n4 b7 c: }9 l6 I  S0 |/ N5 }

, X$ Z* V. ~3 b% R, J6 K* |1 Y% ^/ g, {% `

$ W0 k: Y4 V* J% M) E& s0 _$ o' h( `2 m. m- s4 G# X* I1 |
Step 4. 扩展集群/ Q1 k+ @: G( z3 v
启动并运行基本群集后,下一步是展开群集。 将Ceph元数据服务器添加到node1。 然后将Ceph Monitor和Ceph Manager添加到node2和node3,以提高可靠性和可用性。
9 z  ~: X6 Q+ o+ X3 `
' [& a8 E7 r. b6 G) v/ n2 D& I( e4 u6 L
4 H7 @7 g& g2 V* e/ d4 u
对比第一阶段的工作,第二阶段要扩展的是:; E# `9 a# z0 J( \/ ~! j7 r
/ e9 H! h. Q, U2 f4 j; D' s9 _6 O
添加1个metadata server5 J; u; Q' _4 ?4 Y8 ~% B- w% [
添加2个monitor0 n, C  l  [$ ^) c. A; c% R5 [
添加2个manager' ^8 K# j! w+ {8 N) C6 i4 u
添加1个RGW
+ w" ~/ X! @) n/ U
4 M# I1 t3 O3 g  G1 L! L
+ Y$ f! z8 Q- t! o  J- H1. 添加一个metadata server
' O& D5 |' _6 j' ?如果要使用CephFS,就必须至少添加一个metadata server.- p, X' A) g& \4 }
0 z2 Z! G( O4 e# _( m1 g
ceph-deploy mds create node10 I+ |& @) ^) F! C/ y

  D3 H: O8 l; |6 B2 U6 t4 S, n7 G) ?9 }. n9 j
2. 添加2个monitors,达到3个monitors* Q% x: c: ?. I7 p' Z4 f  Z2 R
Ceph存储集群需要至少运行一个Ceph Monitor和Ceph Manager。 为了实现高可用性,Ceph存储集群通常运行多个Ceph监视器,因此单个Ceph监视器的故障不会导致Ceph存储集群崩溃。 Ceph使用Paxos算法,该算法需要大多数监视器(即大于N / 2,其中N是监视器的数量)才能形成法定人数。 虽然这不是必需的,但监视器的数量往往更好。  t& Y2 v1 M3 T7 P' [! _2 d- {

1 r9 j: }: |# H% v+ Wceph-deploy mon add node22 w) F2 k  p: b' g9 p* v; H9 K$ j
ceph-deploy mon add node3
1 i& f2 t3 t2 M/ g在添加新的monitor之后,ceph会开始同步这些monitor,并形成一个quorum. 要检查quorum的状态,可运行:4 n$ w" N1 ]( r1 ?( z9 i3 [

2 |6 q: C, f% k2 X# k  Xceph quorum_status --format json-pretty/ b" w! Y, Y8 U, x* B
复制代码0 C0 ^5 l# D) s9 H7 T8 z. w
[root@node1 my_cluster]# ceph quorum_status --format json-pretty" Q% _$ M+ }$ O( L& T' `% z
{
5 L2 l- M! \2 b5 \; s    "election_epoch": 12,
3 {/ e3 Y1 q" m" ?( c    "quorum": [8 j' [0 t0 B# K% {5 A
        0,
2 s8 C% t6 u! C$ D4 B) L7 y        1,
4 Q: o# s8 p" q% v( c        2
# u+ J. A2 l5 S8 m    ],
+ t6 p* U# B  P# Z% `& T6 @    "quorum_names": [, T# E; \# K# V3 g$ M
        "node1",; l3 n7 L! o- s; Y' B
        "node2",
, M, a% |& H: m3 I% y  p6 l        "node3"
; ~- c" T; w3 s: y) n+ k    ],
% K- t1 Y3 d- l6 E    "quorum_leader_name": "node1",+ _, Q7 E. x  t" s7 f* I& `8 J
    "monmap": {  `$ X  Z2 J% w: h1 T9 s: S& p
        "epoch": 3,
9 ^7 q- A* R& e5 G, Y        "fsid": "f314d1c1-b6b9-4060-95b7-c25ec192f612",; A1 J, h  n4 k6 r
        "modified": "2018-11-13 16:04:02.221558",
; g; f. m8 q+ c; F& ^. G) I- `" R) P        "created": "2018-11-13 15:35:34.338001",) V' v9 ^7 y$ S6 R2 ~, W
        "features": {' t9 H4 o) C, R9 z5 P# E
            "persistent": [3 D! S8 [# E7 E
                "kraken",! U* z1 |; X+ }  v" Q
                "luminous",; W% ]' R5 F  a1 Y1 }$ M6 H
                "mimic",' O# G2 Y, a7 f1 M0 N6 _
                "osdmap-prune"' u1 A1 F# M6 J  c7 y8 E+ V( A
            ],
6 b+ H9 N7 n0 w' [            "optional": []
* \% c' Q9 ~$ `1 T  L* s        },9 P5 [7 R# E1 ?3 j" Q% p& Y6 h, m5 U" ]
        "mons": [
% d4 P4 o: i, D            {
! `- ^. {8 @( M% g& {                "rank": 0,- |1 q9 _6 w+ A9 C. V
                "name": "node1",- \; `( o1 o, N2 p  S' k$ ^2 D
                "addr": "192.168.1.210:6789/0",. B( G0 D, N5 E2 c6 V# r$ s
                "public_addr": "192.168.1.210:6789/0"; `) t  W( W" I
            },
: ]) `( d' V$ x( J& B, s            {* ~- ~2 S! _" [/ z5 S
                "rank": 1,$ M" t& F0 a: U
                "name": "node2",
& z& I5 \8 P: a4 S" `+ X                "addr": "192.168.1.212:6789/0",. O3 Z' l1 j, \7 b3 Q3 p1 v
                "public_addr": "192.168.1.212:6789/0"7 H$ f3 H! S  ^  H
            },3 _9 l' `, V+ c* ]" \
            {; Y' i" K* @+ ]  O( h  ?! x
                "rank": 2,( }8 D4 C  j& i2 J; F# M! M
                "name": "node3",
2 t  a$ N( _7 G8 k7 \                "addr": "192.168.1.214:6789/0",
$ n  K( ^% Z, V7 V$ `                "public_addr": "192.168.1.214:6789/0"( B1 C& @3 q/ `- O' X* n
            }- u; Y7 ?/ X9 ]+ m: K4 ?
        ]& f7 J4 w. @" ~+ w8 `/ c# |
    }4 m1 J# x- w8 o/ r' I4 d
}/ h$ P, q& u5 a& ~1 u5 \
复制代码0 q$ _) j6 Z# J- u3 k
当给Ceph安装多个monitor之后,应该在每个monitor主机上都安装并配置NTP,以保证时间的同步。ntp的配置这里从略,只简单概述一下原理:将2台monitor所在机器配置成向第3台monitor机器做ntp的同步,而第3台monitor上通过crontab来定时调用ntpdate命令向Internet上的ntp时钟源做同步。* j2 _, M( B5 t, g

- O1 A5 o  l6 A; U; i2 H: ?
' D- _" H0 @5 ?, T3 o! S+ B5 {
) u+ o# b8 [5 S# C+ H- Q  K( [7 a3. 添加2个managers,达到3个managers: t) e4 z: V- C
Ceph Manager daemon工作在active/standby的模式。添加多manager,可以保证如果一个manager或host宕掉,另一个manager可以无缝接管过来。
  ]1 T# R# N: @: M
% [# e% [2 ]) Sceph-deploy mgr create node2 node3
  {+ z5 S, b0 n- c8 Y可以通过ceph -s命令看到active和standby的manager.
* T" s3 a' v8 i6 ?/ h+ X6 o; ]
6 j% N, Y# {- E0 B& P& L! X5 o0 O5 L: k6 U; q
0 e# P# A* |9 E
& P' m6 R/ ~6 W3 b% q' e8 |

8 l6 X$ E6 }0 m# i" X" \: s- b
9 [. K- R0 f7 z$ u& x- V  r
2 [/ M! y* e) Q  d4. 添加一个RGW实例) W% c% q" W' z2 G- F
要部署Ceph Object Gateway组件,就必须部署一个RGW实例。
0 H) @% y6 s# _% {" _4 n# h1 D% x9 R/ j5 S9 i# h# _9 M" H
ceph-deploy rgw create node12 f8 D6 z2 {  L& [" P6 L7 v# t2 q
GW instance监听在7480端口。若需改变端口号,可修改ceph.conf文件。# ^' T' L$ X: @+ S* }
( _- }% ], F! E4 H# \
[client]6 ^* E8 q$ L6 O8 M
rgw frontends = civetweb port=80
/ s6 K) J$ H, ~6 Z若要使用IPv6地址,可以如下修改ceph.conf
$ t  r  i2 r# b) r
6 A9 W$ R9 B% V1 r  C) [5 o[client]
  Q5 \+ ~5 w. N" z" `; j4 r- F9 ^2 ergw frontends = civetweb port=[::]:80% O! x1 L' W' i+ W, {
1 J- p% b) A# U$ O

9 }) j' z/ ~& T$ Z$ D: R存储/检索object数据  X' ?  u( w4 Y$ E; N* J
要存储object数据,ceph client必须:
" ~! h& Q, E! x) q% }) o- h& F* [2 d1. 设置一个object name / q' R. h# y% H, u. @# O8 ?6 r" u
2. 指定一个pool
$ b, W; ?2 u, l9 E5 r& Q! r6 y( Q  @2 K; w3 E8 j1 N
注意: 7 s; ^$ P: G0 }# v; D) ?
关于ceph client,将在下篇博客介绍。
8 |  S$ X% H+ L. `
5 I5 P+ N% T, G" ?0 N1 n. dCeph client获取最新的cluster map; 而CRUSH算法计算怎样将一个object对应到一个placement group,然后再怎样将这个palcement group动态赋给一个OSD daemon.
/ p" I  @& `  t8 y8 v要找到这个object的位置,可以执行如下命令:
, E( U8 M/ u$ R, y1 ]/ V0 k: M3 p" ]# w7 ]/ I! S1 ?$ G! Z
ceph osd map {poolname} {object-name}
6 R9 B) F- W9 C$ s9 {; _6 i作为练习,让我们创建一个对象。 在命令行上使用rados put命令指定对象名称,包含某些对象数据的测试文件的路径和池名称。 例如:5 P1 r9 N, e( X6 v) X

  N( m6 e& {/ C( o, Trados put {object-name} {file-path} --pool=mytest$ a1 c) S8 m0 P% n, E
ceph osd pool create mypool 8   # 8是该pool的PG的数量
, H2 ^) l' \% m- Qecho "Hello, World" > 1.txt4 ^5 e2 f8 m2 y. h& o( N% G
rados put my-obj-1 1.txt --pool=mypool
$ }& o2 A: ?7 i0 S! \# w
' O! S  s: P/ \9 w: o' Z检查Ceph集群确实存储了这个object:
/ N9 \) U# M0 M1 Q1 W; k7 W' j# q
rados -p mypool ls
8 h; G5 f0 H# e确定object的位置:
( J, k9 p$ W1 |3 J  C# o
- b7 g8 f$ d+ i- cceph osd map {pool-name} {object-name}" Q9 Z! y( ^, ^8 \" R6 S
[root@node1 luxiaodai]# ceph osd map mypool my-obj-1: e) D  I$ F, v# |& 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)
3 x3 \2 w$ c4 F8 M6 J. c
' n; n8 z5 t( \) r" Q若要删除这个object,可以这样:
* o0 z1 T; {. x$ {+ f8 z8 O( K! R8 A
0 T* B3 o% Y, g; ?5 C+ qrados rm my-obj-1 --pool=mypool
( D: [. q1 Q8 G4 r. h, v8 o如果你要删除池,使用下面命令,出于安全原因,您需要根据提示提供其他参数; 删除池会破坏数据
) ^! z6 x6 K4 J0 O3 d- j
( Y7 F; K: z1 d8 H* M3 Hceph osd pool rm mypool0 W2 \' D" d' P
删除需要修改配置文件,加入红色部分,必须在mon节点上执行
" H# _6 W' h2 o0 @) i) u. B2 `9 c/ w
复制代码' W. K2 Z; ?" f. [. X2 J
[root@node1 my_cluster]# ceph osd pool delete mypool
1 i$ G& S( ?# U& ?0 fError 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.' v  b$ N! R( S, A% G, V4 j
[root@node1 my_cluster]# ceph osd pool delete mypool mypool --yes-i-really-really-mean-it
1 o( F$ X) \" w3 S& X* }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
* P0 v& a- D5 R: |8 o[root@node1 my_cluster]# vim /etc/ceph/ceph.conf 1 @7 Y9 ^! Q# B( _5 m1 S/ U
[root@node1 my_cluster]# cat /etc/ceph/ceph.conf 5 S- C2 W6 {3 L) I) W) R; ?
[global]
9 U2 l$ k6 N5 s5 ?: @* h+ ]5 F) Cfsid = f314d1c1-b6b9-4060-95b7-c25ec192f612  D2 s$ t) W' `
mon_initial_members = node1
( u* ~9 G2 K$ L5 r1 dmon_host = 192.168.1.210
  j" e1 w+ ]* R+ c) iauth_cluster_required = cephx: r7 y0 p7 E; |
auth_service_required = cephx& @5 F, m6 _# a" A: `4 g2 e
auth_client_required = cephx
1 h! p, K" s- @% U$ K/ Upublic network = 192.168.1.210/249 [2 [) ]' e& _

! x5 a1 q7 l9 U# o, v+ k/ @[mon]' [3 p9 D4 _/ v+ ~3 r# R+ o
mon allow pool delete = true
; ]1 T' G' R+ K/ }[root@node1 my_cluster]# systemctl restart ceph-mon.target
) i2 Q9 [* J1 R1 I/ B* s[root@node1 my_cluster]# ceph osd pool delete mypool mypool --yes-i-really-really-mean-it' u: H; o) d2 X2 T$ C
pool 'mypool' removed; q/ ^* @0 B4 G3 |: X+ q
复制代码
0 |9 G* z8 ^/ d2 l  W2 t' |% r现在,集群部署好了,object也能成功创建了,但是却并不利于用户的使用。用户使用存储,一般不直接通过原始的object,而是主要有3种使用方式:7 A, F( @0 p$ o$ a* D; p" N% k
块设备! z8 z. B+ x3 p( e5 a! o$ p% }" f
文件系统  q% H( p9 W1 G& q9 S: C" J( X* M0 _  ]
对象存储(比上述原生的object多了一些封装,常见的有通过S3 API或Swift API进行对象的存取)- ?* S/ B- v( F+ _  B/ j8 U5 F9 i
! \- q. ]" z6 ?
' j9 {+ r9 G3 E7 Z- V
BLOCK DEVICE QUICK START- n# m; V1 @4 _" z3 p) H# q
1. 安装Ceph
0 J$ b4 `3 j$ z5 N首先要确保是Linux kernel以及合适的版本。
. J0 p' y: V6 t- j% d
' o5 Z, W! P0 {  P, k& j在admin node上运行以下命令,将Ceph安装到ceph-client node上:8 c" M* ?$ u: r

& A  d6 Q/ ]/ n. c% U+ _  M6 `ceph-deploy install host
/ A# b) k0 w0 n然后,运行以下命令将Ceph配置文件和ceph.client.admin.keyring拷贝到ceph-client上。
! ?( I- N) A1 u7 S6 d
) }# g" d6 J/ r- Kceph-deploy admin host( }8 B" k* \7 m7 ?3 z$ x; u6 i5 K

. Y4 e0 f5 {$ O8 j, u' _; M/ d7 m3 O0 U; c, R4 L7 L% N
2. 创建一个块设备的pool
, A. v5 b  f8 {2 f( R& h" }在之前的文章中,已经创建了一个叫做mypool的pool,现在需要运行以下命令以使得该pool可以作为RBD使用:
; s4 P; H' b, {% P- Q! ^+ [  S, `7 v5 f9 ]% A: ]* W
rbd pool init mypool) n( }( z7 n& ~" z/ A8 H5 X, x

8 m  ]' Q- \) I5 Z% e: f" P: X
3. 配置一个block device(块设备)
9 q, |+ z9 y3 d  M; R1.创建一个block device image
/ a3 P, X3 b% Q1 rrbd create foo --size 4096 --image-feature layering [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]- |' v* Y: q- A
rbd create test --pool mypool --size 4096 --image-feature layering -m 192.168.1.210 -k /etc/ceph/ceph.client.admin.keyring
5 B4 ^) I; ]$ R* O8 u8 |- c2 Y- M如要查看所创建的rbd,可以这样:
6 ?$ X" J8 A7 w% Y% h( {' J7 B
2 O  A# |3 p+ C# h: ]7 L/ Grbd info test -p mypool! `& d' A( F+ V
结果如下:
  {- I/ t+ A. ~# s. m( ?0 X& i8 v2 u& b7 k) m

% y, a; M6 J$ \. f) A2 F6 ?$ w0 B- A/ X* _% e# F

9 m! x) L4 e# K3 ?! {8 Q8 S& K0 O1 ]" v# E
2.map一个block device image
0 I. Z* o: y" H4 \( isudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]" Y9 Y! U) [: e0 h! @; w% L

& |  ]; J) |# k/ i& Urbd map mypool/test --name client.admin -m 192.168.1.210 -k /etc/ceph/ceph.client.admin.keyring
# G0 }  \3 V! R  E  y9 i0 y
1 {7 I5 x" C- v  h
  }1 P# I% B' H# ?) E3.创建一个文件系统并挂载
1 G; W5 |3 m+ T- w8 t# R
, V$ o7 M0 d+ P+ K4 b- ~; m
/ z. _# {) T) N$ Q; l) x3 N注意: 这里的rbd map和mount命令只是当时起作用。若系统重启了,则需要重新手动做。 若要开机自动做
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:09 , Processed in 0.021168 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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