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

CentOS7环境部署虚拟ceph集群

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-12-13 08:54:05 | 显示全部楼层 |阅读模式
二 ceph简介
  • 分布式存储
  • ceph层次结构
  • 最简部署方式:一个管理节点、一个mon节点、两个osd节点
    4 }. E/ I* W2 V8 q( B& a; g1 F$ S
三 环境准备
  • 镜像选择: X, O* i" C0 I
CentOS-7-x86_64-Minimal-1810.iso
1 I! d6 K/ ^. h9 I& K6 G6 W
  • 资源配置
    0 f0 h9 H# A$ N
mem:1G6 C/ j& T9 @6 H& Z9 j
disk:50G0 D% m, b3 }+ w
cpu:1core
) J0 S5 f) N4 A1 S, H
  • 虚拟机名称7 I( e# a8 `6 s, L5 x6 v
ceph
% K. F% ~, V  _( W, T6 m8 k
  • 虚拟网络选择
    " ^; {: U. k/ l4 s5 q% ^/ O' b
NAT:default+ e: f  n8 E) k! q; e% \" N0 P" v3 Y
四 ceph节点工具安装本节操作在上一节创建的虚拟机中执行
/ \: S1 P! E  G5 a( ~) Z
  • 安装常用网络工具9 F" ?7 E' e& ]4 P6 P0 \5 _" x
yum install net-tools -y
4 w/ v, @. n- o% A! Z2 e
  • 网络修改,使用静态IP8 g. \; s0 s7 t4 `
ifconfignetstat -rn
6 e2 h/ S# M. P1 m+ b' e( D结果如下图:
8 r7 F' k2 x) z5 m5 o
# l& h9 V8 {' J  H$ k
$ J+ V* N/ H1 g& g7 Q, Z" Hhttp://upload-images.jianshu.io/upload_images/6582575-6319afd9d040f3f3.png?imageMogr2/auto-orient/strip|imageView2/2/w/756/format/webp
8 r( a5 y( r, D7 |5 R
( S& f8 \. q9 [" D" p, q
CEPH_Node_01.png
+ r. H  m7 P, s$ x; a8 l
/ x" g/ F9 I# e( r& J4 d
3 W/ l, v- C/ r, m/ {# V/ ^' j6 ]0 L将这些信息写到配置文件中固化:4 \5 w7 T0 j, ^3 h9 u- Z9 P4 O
修改DNS4 d5 Z( y  q) t; u' T2 Z9 D' i
echo "NETWORKING=yes" >> /etc/sysconfig/networkecho "DNS1=114.114.114.114" >> /etc/sysconfig/networkecho "DNS2=8.8.8.8" >> /etc/sysconfig/network4 L; ~/ V7 O6 }! E
修改静态IP
7 J0 P" n# x) n# D% nvi /etc/sysconfig/network-scripts/ifcfg-eth0/ @" M0 L6 g0 F- Q; x1 |
修改如下配置,其他配置不变9 e- q9 b5 f. o8 M
#BOOTPROTO="dhcp"  //这一行需要注释掉BOOTPROTO="static"NM_CONTROLLED=noIPADDR=192.168.122.122 //IP 和原先IP一样也可NETMASK=255.255.255.0GATEWAY=192.168.122.1
+ y3 k7 c; U& d7 P) ?+ n# {) c. y$ X添加主机名$ J3 s8 x$ V. H4 D5 u$ j' K. S2 t
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
3 Q. Y% ^) U" J: @. Q7 k重启网络服务, c. O1 D. G- u9 b* {' M
service network restart
% }6 J8 _% H& ^: `
NOTE:如果你是ssh到这个虚拟机的,会失去连接,可以关闭终端重新连接" T& y8 q2 h( n/ i5 t1 M. b: v/ y
  • yum相关
    % M) N$ w5 z" i( K2 v- K8 o( i
  • 安装第三方源管理工具
    . |# W% A+ s; o1 s; t) V6 |6 i
yum install -y https://dl.fedoraproject.org/pub ... est-7.noarch.rpmyum install -y yum-plugin-prioritiesyum install -y yum-utils ) p4 v9 k/ S; k! f
  • 源配置8 J$ U8 ^1 l6 ?' m
    创建ceph源配置文件,并打开编辑
    7 k4 s2 S/ Z) |+ h8 ^6 ~! p# X
touch /etc/yum.repos.d/ceph.repovi /etc/yum.repos.d/ceph.repo
5 v% u- l2 }; b% C. Z( t在文件中写入如下内容
/ x0 ^( q# }1 s$ 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.asc4 F( K! \8 [3 S/ g
更新yum源2 D, X# D( q8 ^3 _
yum update -y
" a4 N' {+ p% P  n1 ^
  • 时钟相关
      G' m1 P. X4 l1 f$ \" Q5 J
yum install -y ntp ntpdate ntp-doc+ }. @+ U, X! M) a! r+ s% H
  • 关闭防火墙, z3 `2 D  x3 k  y2 y( t) s! W, w
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
3 x5 i" |: M/ q7 L
  • ceph部署用户
    2 B  f# J9 D- _9 l7 X创建用户3 \" X0 b, S& W. N9 `8 k
useradd -g root -m cephD -d /home/cephDpasswd cephD& P# y: n8 o) v2 S3 M
免密码权限. p+ O* _( X+ X5 F% c2 ]/ Q
echo "cephD ALL=(ALL)NOPASSWD: ALL" | sudo tee /etc/sudoers.d/cephDchmod 0440 /etc/sudoers.d/cephD
" z4 X: k1 b& B" S五 ceph节点clone本节操作在宿主机执行( N) g9 h+ S" F- W
  • 获得root权限
    - C$ S$ S- L4 f0 s
sudo su
$ |' I, D' d, V$ F4 q& W
  • 关闭虚拟机ceph
    9 D% q' ]' W7 r- {. r. Z; u" S
virsh shutdown ceph& c1 T: d8 s& j% |
  • clone出ceph-1、ceph-2、ceph-3节点
    - M8 s! W1 C, }, B& [( q, G# P
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.qcow28 H' \3 F' y0 {6 M4 L4 O
注:ceph为管理节点,ceph-1为mon节点,ceph-2、ceph-3为osd节点
  h) h0 |( G# F1 q6 L- S/ W0 S
  • 挂载硬盘
    ( r# D0 |8 x; R( L9 j1 \! k
  • 创建硬盘镜像8 D& O* w* |& g+ r3 p
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
' }# P0 ^8 v: I1 n9 E8 i
  • 修改配置文件,将磁盘挂载到虚拟机(以ceph-2为例)7 _  t- f& B0 _' T5 v0 _# j
virsh edit ceph-2
  O( N' z8 e! q5 L% z$ K添加如下内容到domain.devices节点下$ T& q* }% f% `
<disk type='file' device='disk'>      <driver name='qemu' type='qcow2' cache='none'/>      <source file='/home/data/osd2.qcow2'/>      <target dev='vdb' bus='virtio'/> </disk>1 V6 b  K7 @4 N: X& Z3 _
  • 启动虚拟机
    % y( N4 P0 _$ C* Y; w$ S6 v/ B* \* X
virsh start cephvirsh start ceph-1virsh start ceph-2virsh start ceph-37 j. g. z% z% k- i0 n2 u
查看虚拟机状态
7 n" |% D) C9 q# l9 ~. ~virsh list --all' b- W2 `* A! q7 e. F9 g+ c
  q5 _" y! r( e9 `: v
http://upload-images.jianshu.io/upload_images/6582575-ddef4a93268cde15.png?imageMogr2/auto-orient/strip|imageView2/2/w/475/format/webp& r& \6 W: M' ?" `) a
& A, t% C9 I0 t
CEPH_Node_02.png
' R$ Y8 r% v( @* X" Y+ ?: ?9 C
0 S. M' m4 U8 ]4 z7 i+ n
  • 修改虚拟机IP! R( d8 e3 s" f$ A" A
    KVM进行clone操作之后,虚拟机IP也被clone了,在同一网段中,IP冲突,需要手动修改(以ceph-1为例)6 {2 E( f% W& ]$ X, g+ r
virt-viewer -c qemu:///system ceph-1
; u) u" V2 N7 V  i) c进入控制台,root登陆,修改eth0的IP8 O/ o7 V$ U. T
vi /etc/sysconfig/network-scripts/ifcfg-eth0
) L- I9 X' j8 ^, r/ e1 F2 C! \修改IPADDR,不与其他虚拟机冲突
: I* D" u& v8 Q3 `2 nIPADDR=192.168.122.1239 J! N! }* Z+ z9 N5 k$ Z
重启网络服务
1 j& l2 a( s5 Lservice network restart
) c. C2 H& y8 ~1 N修改 ceph-2、ceph-3的IP为124、125
6 T4 e+ F8 T: N. T0 F六 ceph-deploy 部署ceph集群本节操作在虚拟机ceph[ceph管理节点]上执行
, L  M2 e1 M$ F+ ]9 n& G, X* B
  • 安装ceph-deploy
    8 \6 j3 m, P9 V9 B4 ^$ {+ t/ j) ?
yum install -y ceph-deploy- F# n& Z6 {7 j2 F: @: ?4 U$ U& z
  • 部署用户的免密码登陆其他节点
    ! h; I% h' ^. b6 `
su - cephD
/ U1 f: S  s0 D$ d生成SSH秘钥,不输入密码,全部[enter]
7 \+ K. K8 w3 F; k. z& @. J/ ?; Mssh-keygen
6 t, q+ ?& ^3 L! J) K
0 G7 F4 ]  r" z- y. V1 L% j! H) ihttp://upload-images.jianshu.io/upload_images/6582575-b0afce24da2d3c9c.png?imageMogr2/auto-orient/strip|imageView2/2/w/611/format/webp
+ ~, s4 l" t1 f+ x7 T  G, B1 o3 I
# p! e  y6 h7 H' \0 u
CEPH_Node_03.png. F. W( R  T/ G4 @2 d5 U2 `. @& H9 Y) U

( ]+ y3 Z: I/ `* I2 J/ P3 m. w$ @; t! ?" ?3 ^
添加信任,执行以下操作
* t# p& s/ d2 u8 M( ]8 d  R$ Xssh-copy-id cephD@node1ssh-copy-id cephD@node2ssh-copy-id cephD@node3" P6 J" y5 x5 ~3 Y$ H) T
cd ~;touch ~/.ssh/config;vi ~/.ssh/config) \3 y7 e5 P# O/ @( B1 S( `
输入如下内容4 h; C0 a7 _& m/ _2 I- o
Host node1    Hostname node1    User cephDHost node2    Hostname node2    User cephDHost node3    Hostname node3    User cephD2 b: w( S0 B8 s5 y+ V8 b1 }
  • 创建集群
    1 ^6 p; b" A$ _. E& {( V; O9 n
cd ~;mkdir my-cluster;cd my-cluster;ceph-deploy new node1( `! v6 b& d3 O* I; }" z# \& X
结果如下:
" r9 w& H8 B. ~: @) E8 t) C1 }" u, S) m% W- U/ t+ w1 _
" \" [1 W, D9 T0 v. U; m  K/ ]
http://upload-images.jianshu.io/upload_images/6582575-1e2620e0391192b9.png?imageMogr2/auto-orient/strip|imageView2/2/w/839/format/webp. W. A2 |: h2 y
0 e) X: V+ L( ^- b; W. v+ D# @
CEPH_Node_04.png2 M4 [+ V# S7 K+ R& y

% _6 A0 S, d" [8 j
9 U8 r, w: z9 v修改OSD默认数量为2
# W. [# B# L$ t, {echo "osd pool default size = 2" >> ceph.confecho "public_network = 192.168.122.0/24" >> ceph.conf( K* h( W) M" h& W8 H
  • 集群安装ceph- |3 h6 T+ T3 E0 F  W' k
ceph-deploy install --release luminous node node1 node2 node33 I5 M' t' j9 a' ~6 `; V$ r

/ D7 k& h( u1 c9 Zhttp://upload-images.jianshu.io/upload_images/6582575-0ae9958bb7a46686.png?imageMogr2/auto-orient/strip|imageView2/2/w/725/format/webp
/ C- S# v! n0 `) x9 _" C
4 ?0 l- s8 i8 L6 F, B
CEPH_Node_05.png
5 {( `" b6 q( {, T! b7 g: G4 Y" B
  • 初始化ceph-moni服务
    0 e. i+ ?/ T( X% F. r
ceph-deploy mon create-initial
+ e6 ]4 h: C* B( g' {
& h& ^2 B! t+ u" ?) phttp://upload-images.jianshu.io/upload_images/6582575-1de180078709ccc6.png?imageMogr2/auto-orient/strip|imageView2/2/w/721/format/webp
( O3 \- W* ?3 v7 H( I) H

! c8 j2 ]  n9 i9 V. Z: X' cCEPH_Node_06.png
5 W" P; G" ^! y* v2 C' k& k" e! Q6 K
  • 拷贝管理员配置到各个节点6 Z. A% {: m: W' f
ceph-deploy admin node node1 node2 node32 o! W- f) J+ I* P& Q7 n
  • 安装管理例程
    5 F) g4 S( {/ d8 V! q. T
ceph-deploy mgr create node1 " ]  Q- e. @1 i. U' T0 D5 k: u6 t. t
NOTE:mgr和moni是什么关系
3 p5 @% b! h. D
  • 添加OSD节点9 |, @; d4 v  L
ceph-deploy osd create --data /dev/vdb node2ceph-deploy osd create --data /dev/vdb node3* y. @- S, c4 Z- o

7 K- N7 t: c9 @4 _9 H& V: D5 Mhttp://upload-images.jianshu.io/upload_images/6582575-858fea0c1ddfdc61.png?imageMogr2/auto-orient/strip|imageView2/2/w/722/format/webp
" _6 |* f/ ^  D$ b% A, s) E5 S

) e  Y3 l6 N% r4 R% dCEPH_Node_07.png
3 J# ^) K" F- L7 L+ O5 Z! y* j3 {  h6 x5 ^- H4 I- ]% i% Q. ]
  • 查看ceph集群状态2 x3 D: G8 W: M. I, a0 X0 h
ssh node1 sudo ceph healthssh node2 sudo ceph healthssh node3 sudo ceph health& r" e; v  \: f- w4 b  K

* M; F; [7 |; Q* Uhttp://upload-images.jianshu.io/upload_images/6582575-c64d213a876a4f0b.png?imageMogr2/auto-orient/strip|imageView2/2/w/472/format/webp
  W# ^" E9 G% B/ {

8 U) g1 u9 B' @! I: ICEPH_Node_08.png0 j5 k! ], |6 o% B2 O  g! x

2 q- W% J% ]8 l0 u8 u' nssh node1 sudo ceph -s. I$ f6 u. X4 Q

8 T4 g7 [8 f6 o# j1 a6 w$ y& vhttp://upload-images.jianshu.io/upload_images/6582575-b86aedb7d28f262d.png?imageMogr2/auto-orient/strip|imageView2/2/w/660/format/webp" v7 |% @6 d) D

- H5 q# V8 U" D" c" b1 KCEPH_Node_09.png
* f- Q6 d1 t8 e7 g( k* Y% U1 b7 _' `2 F9 s" o
  • 集群扩展
    5 x. M, ^$ i' H, ]
  • 新增元数据服务节点
    * j+ t1 ?# j$ j' O: X8 g
ceph-deploy mds create node1ceph-deploy mds create node2( n: O9 j( \5 s3 `  G: J: r
  • 新增ceph-moni; f7 s  n6 J( N6 N* ~8 i& Y* y) g5 h
ceph-deploy mon add node2 ceph-deploy mon add node3
0 |) f1 z! Y; E8 U
NOTE:现在集群三个节点都运行了ceph-moni ?
, z) R; @5 E/ [9 J: [
  • 新增管理例程节点" M5 O2 A& b. G2 P) e- i$ [) _
ceph-deploy mgr create node2 node3! L3 q; j# x4 S
  • 新增rgw实例' ^" a3 l1 \. T7 t9 S
ceph-deploy rgw create node1ceph-deploy rgw create node2
/ g' A/ ?/ t" D5 ]( ^; X
  • pool操作
    / w( S4 V+ |; G8 f/ S
ceph osd pool create mytest 8  //创建ceph osd pool rm mytest //删除! G  B" s* T, p
  • 对象操作5 g- D% X! _3 ~. y6 C3 d4 l
[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=mytest: G& u, _+ [6 u3 @+ S: i/ O- ]( X
七 ansible 部署ceph集群本节在ceph主机以cephD用户执行
! M9 J! a8 H" g  [. V7 l( q7 J0 ^0 R
  • 准备工作
    , T. X+ V+ C# X; r
  • 卸载ceph集群
    ) I$ _  h6 F5 h$ R; n; `
cd ~/my-cluster;ceph-deploy purge node node1 node2 node3ceph-deploy purgedata node node1 node2 node3ceph-deploy forgetkeysrm ceph.*
, @/ f& ^  p, ?9 k+ l; T
  • 安装python-pip工具( K1 A* i  A! X
cd ~;sudo yum update -y;sudo yum install -y python-pip;
# m, i. l% |$ @1 g0 S* j9 D; y- @
  • 安装ceph-ansible( |& h- z0 l" m9 b
  • 安装ansible-2.6.4
    : T. J4 g0 h3 u1 n  t( o9 m! ?
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
) R7 W1 U* K, }
. i5 l, K" X& j7 ^http://upload-images.jianshu.io/upload_images/6582575-794b0da59192c239.png?imageMogr2/auto-orient/strip|imageView2/2/w/1031/format/webp0 a' [0 B6 ?. H  b% T6 J; c6 ~* v
: v& x: F% o/ X5 A; J) p
CEPH_ANSIBLE_02.png
. }1 A! B2 N+ t* r+ e
: q" F( g8 c1 K  E+ F" F: G3 Z
  • 下载ceph-ansible  t' L- v4 b5 L" }
cd ~;sudo yum install -y git;git clone https://github.com/ceph/ceph-ansible.gitcd ceph-ansible;git branch -a|grep stable* \2 ^! e% \& R3 |, L* Z" T
结果如下:
! Q# [) z, Q9 D3 E
4 W3 G& s6 {$ h5 i1 x6 F. h' X! V8 H1 c, t- p- ?
http://upload-images.jianshu.io/upload_images/6582575-91657a2dd15e6f50.png?imageMogr2/auto-orient/strip|imageView2/2/w/618/format/webp$ R5 {4 u/ p% A

3 W& w) i' }( {9 r4 ]% C5 mCEPH_ANSIBLE_01.png
6 _! j- q, K' C2 @
8 G! F$ D. Q4 }+ u& J) b
  • 发行版说明0 ~  `3 ]9 ?: y  Z# t' d
[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依赖
    ; R; v& s8 [7 s" O  s" v
git checkout stable-3.2sudo pip install -r requirements.txtsudo pip install --upgrade pip7 k' u" t% m! P7 X0 h- Y/ [' z' R* V
  • 配置Inventory集群主机
    6 K9 j2 A2 ]( 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/hosts
; l3 g- u5 \' ^& W
  • 配置Playbook部署指令
    % l: o# }8 _( q+ a4 ?
cp site.yml.sample site.yml
9 h3 s- m& I) d# s
  • 配置ceph部署
    ; n' p" A! q, w
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------8 O2 g$ {& c, X1 P6 C& \
  • 安装执行; r5 }" R9 X7 W8 V+ m) ^1 J6 i3 L& z
ansible-playbook site.yml -vvceph -s: ]7 Z2 R' W1 |  P4 `$ n
NOTE:-vv 提示更多错误信息
$ L" V2 H( b. E" W" [. ~9 t
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 ---------------------------------------------------------------------------------------------------------------------------------
/ U2 ~( Y0 ]1 e, d( S2 M. j1 Y检查集群状态
8 H0 a5 C/ r+ z- ^0 J3 WcephD@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:     
" K4 y8 X1 ^  s( ^0 P  P其他操作可以参考【七 使用ceph-deploy安装】第7步之后的操作
" U9 J' A; h: _! j
NOTE:本节安装没有ceph-admin节点,所以node节点上是没有ceph的,所有ceph操作需要在node1上执行:
. ~  x  ]" _; ?5 Q$ Yssh node1. o2 L4 O: ^: j9 `0 }
八 离线部署本章在cceph主机以ephD用户执行- g, m$ a, F3 |" @1 q  m+ c
  • 搭建本地仓库
    1 t# Y/ V+ l2 n( B7 `CentOS7搭建本地仓库--CEPH
  • 使用ceph-ansible部署
    6 A- e& Y1 S. G6 I0 W9 n$ \参考【七 ansible 部署ceph集群】
  • 与第七章不一样的地方
    , e. j, ]" I/ I" d6 [7 ?) ~0 z
  • 安装python-pip工具注意点
    : D, k: R3 @5 [" I0 M' A
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& n6 R7 }2 }! Q1 d* J9 ^5 k8 U& Y
  • 配置ceph部署注意点/ B4 X" A) @- t/ M5 E
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------
) @5 v7 M8 i- B
  • 提醒
    / F  n9 ]9 K: cceph-ansible 部署ceph集群的时候 cephD用户的一系列操作也是必要的
    ! Y* B2 _+ w' n& x4 J
九 操作集群
  • 启动所有守护例程6 z: A6 p0 m# y! @# O' `4 e
sudo systemctl start ceph.target
+ P. Z' k6 ~/ l
  • 停止所有守护例程& L; o0 ~3 {: f, Y: Z7 g) Z' ]5 S
sudo systemctl stop ceph\*.service ceph\*.target
' U; F& S4 o1 z) W- {十 问题&解决
  • [ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph'
    7 z; w/ U9 J, t" n* S) KSolution:等待20分钟,再次执行(有时候,由于网络原因,yum install -y ceph ceph-radosgw 时间会超过300s,造成超时)
  • [node1][WARNIN] Another app is currently holding the yum lock; waiting for it to exit...1 l9 T9 u6 V7 o# q, `
    Solution:等待,或者通过[ps -ef|grep yum]找到锁住的指令进程,cancel掉之后,以此执行yum指令
  • 安装特别慢
    . E! O6 s3 I' {$ WSolution:可以不在一个命令中安装,经测试,支持并行安装,如下:" ?+ e- p! ]  n% F" J
ceph-deploy install --release luminous node &ceph-deploy install --release luminous node1 &ceph-deploy install --release luminous node2 &ceph-deploy install --release luminous node3 &
& m+ m- c( U( ^& ]
  • auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring  ---- ceph quorum_status --format json-pretty
    * b: A' d4 b- N6 E* g& C
sudo cp * /etc/ceph/sudo chown cephD:root /etc/ceph/*
, \4 t7 j7 P. @7 w& `1 U8 R- _5 h' O
  • [ceph_deploy.rgw][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; ...7 v" a6 D3 E& @: x  _3 `
ceph-deploy  --overwrite-conf rgw create node1  E2 h9 Q' [5 W* X+ Q: K- r4 S4 U
  • [ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
    ' X: z- f% n5 @0 Q% x, d2 [1 `
echo "public_network = 192.168.122.0/24" >> ceph.confceph-deploy --overwrite-conf config push node node1 node2 node3
$ M7 ]9 ]' P. G$ I" X; @# V3 p
  • mgr和moni有啥区别
    0 o' t( O# W8 Q& Y4 Z! X% b在luminous版本之前,mgr进程包含在moni进程内部,L版开始拆分出来
    7 c' k- n5 l' S5 t! T# U. B5 X

+ ~* T- p5 F3 }. H1 i; V. Y: E5 N, U4 k) d8 V2 m0 N

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-12-13 11:49:33 | 显示全部楼层
继续上节ceph 安装继续配置配置 Mgr
  Y- ]2 r3 A. W8 p) H5 r9 Y, L( g: A2 E; B1 D* W% |
  #  ceph-deploy mgr create ceph1:mon_mgr ceph2:mon_mgr ceph3:mon_mgr5 A" J" a; l$ b+ V

2 i- ?( h' Y3 {开启 dashboard (在任一 mon_server 节点上)9 N: n8 V3 k( @' c$ }
( J, F, I8 L; O0 Y- Y
  # ceph mgr module enable dashboard1 E  ?5 @' \  a
& N" y8 o# f" N* ]- ?$ ?/ q
到此处mgr 配置完成。
; `+ L- y/ Z, r" m9 M5 Y7 u& u8 J& G' K
在浏览器访问:http://mgr-server-ip:7000/
9 x6 X& B4 k5 R4 X1 f
' b# Y( b& \# [5 _% H  
. Z  `: E8 M: V. L3 N) |5 C7 V7 _* ^& V5 ~/ d/ E

6 f, |: Y  x9 B% k
1 J: t! y; k$ i6 X9 [( I' h# G提醒:目前 mgr 功能模块可能还存在选举问题,如果多mgr 节点都开启,可能会出现web页面取不到数据,建议只开启一个mgr节点服务,然后关闭其他节点mgr服务。
1 }% A6 n3 t8 L" l4 ]# D/ t5 l( K; _: r' Z6 u0 o  O! c

0 w* K# j3 ]1 `. g8 b9 x5 b% J+ y0 y$ V
& a) p- B* |# w0 F% I

7 J8 K; h- ^% s3 u( g% O . }, h* l) G- Z; b* Y
6 `2 X! {8 H, t9 e+ A
设置dashboard 端口和IP
2 b$ C- x# j2 ?' B$ e/ K9 r' U' G. g$ e$ ~: }+ x. N' v* K
  # ceph config-key set mgr/dashboard/server_port 7000   (指定集群dashboard的访问端口。可以不用配置,默认7000端口。)
, r' {% l8 w. {5 M% j% l. u: S# |8 |' V) e, A
  # ceph config-key set mgr/dashboard/server_addr $IP       (指定集群 dashboard的访问IP); Y+ l1 U* }: o$ a+ ~
& W3 R  O% U: S* i
服务重启:/ o, V3 {; W1 |3 X9 s

8 |' D0 \8 f2 |/ V- P  # systemctl restart ceph-mgr@mon_mgr
; ]5 S+ N: N: ~0 Y8 p! ~* U) I9 ]7 T

6 v7 d6 a1 h- z* Z' W# o: I; {# h- v' g: X" M# I. E- q0 s9 F
更新:1 G+ b' |5 s6 g7 f2 n) H

% D  k2 p4 }. G3 g. ?mimic版  (nautilus版)  dashboard 安装& ~. J6 d2 W: d8 m
. H$ j# ~6 }! ]% Z
  如果是  (nautilus版) 需要安装 ceph-mgr-dashboard
0 \# K7 {$ b. v0 P$ ^9 t4 B2 a9 }3 q% p0 {7 L
  # yum install -y ceph-mgr-dashboard" r/ a1 z$ O5 A$ R1 F

! E  e1 V3 |, T1、添加mgr 功能/ \) g$ e) e* O# m, t* S! [

# k7 R  G; G6 h- Z% f+ K8 T   # ceph-deploy mgr create node1 node2 node3
4 E. q1 X( y  }) ]! u! m) R% c) ~! f
2、开启dashboard 功能
7 h! r  L5 ]$ N' j
; p3 {( N5 w, c   # ceph mgr module enable dashboard6 T7 W4 ], w- Y/ {2 ^
1 I! F# k( \4 H6 ^. ?1 x- [
3、创建证书
* I: r* j6 H; k& m( W' \" ]; G3 A3 F4 S2 b' h7 M- X: F
  # ceph dashboard create-self-signed-cert
# b3 J; l4 ]# ?6 I, t! ]# \; ]) G# N' x2 {1 I
4、创建 web 登录用户密码
, h/ |& m$ P: v1 j6 W1 T; @8 v3 s, [6 x8 I9 N/ Y, s3 s
  # ceph dashboard set-login-credentials user-name password* S% _0 n. ?/ m" I
- X  Y2 d& i; O; k/ ]
5、查看服务访问方式
( J) [( \9 E- L8 o  M
( b- s* l* g3 t  O. K  # ceph mgr services
7 c& m; j5 n& b7 T2 P
9 _4 x9 W# u+ T, ?* S9 Q+ S- c+ Z4 J

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配置文件
( _* f" Y, p% u1 W复制代码# t. x5 J- d4 |
# 认证,但我显示系统证书崩溃,请重新注册,就先跳过了5 ^: O7 C' W" }+ ~, \% Q
yum install subscription-manager
6 c' I. I( H" }' x: gsubscription-manager repos --enable=rhel-7-server-extras-rpms
$ Y, W0 M* t( K) a' F# X; b
+ _% Z; k/ T1 y' U4 G5 kyum install -y https://dl.fedoraproject.org/pub ... latest-7.noarch.rpm
  [6 j7 k$ M: r; R安装参考:
% S" ]9 f" J/ b6 C& Y' uhttp://www.mamicode.com/info-detail-1287279.html9 g: I8 `4 `: _) B8 B+ m' b
复制代码/ F$ f3 A1 Z) f) Y9 Z

$ E* Y4 Y9 Y& E" B9 e
$ x6 U% W: b( g文件位于控制节点(即admin node)的 /etc/yum.repos.d/ceph.repo
% t4 P- }/ U/ }4 ]& y2 d9 V  v; C7 v
复制代码
/ U. p. y1 i( O# X9 s7 c1 V' x8 r" n[ceph-noarch]% z: s% s6 s2 K0 m) t
name=Ceph noarch packages
( ?4 [+ O! F' R6 L8 a# baseurl=https://download.ceph.com/rpm/el7/noarch4 l% f9 r* Z3 W/ R6 b" z
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch
* \" O' [, v  z; l+ Benabled=1: Q5 f2 c0 n% K
gpgcheck=1
" r0 |$ ]: b0 \% Q0 F! v- i5 \type=rpm-md
+ k8 @/ p. ~0 s7 s3 i5 K# gpgkey=https://download.ceph.com/keys/release.asc
/ Q' A. o6 L; p- k2 F9 j! Ggpgkey=http://mirrors.163.com/ceph/keys/release.asc
: c3 B4 z' c2 @1 R& U# T$ H# s6 @5 d复制代码& b' B/ q( v8 R; ~2 t1 M- S
注意:
* v4 i1 ]. }2 {/ B上面的注释部分,是Ceph官网的写法。但是对于我们国内的安装,这样几乎无法成功,因为下载Ceph太慢了,会导致失败。因此,需要改写repo文件以更新Ceph源。
* n& S6 x3 v- G  F7 w/ g- e常用的Ceph镜像是163镜像。但在使用163镜像之后,必须将rpm写成rpm-luminous,这样才会安装ceph-deploy-2.0.0;若只写成rpm,则实际安装的是ceph-deploy-1.5.  V+ [' @# E  }2 `, v
0 t0 E/ k4 h6 x/ e$ }

0 T; @# n4 A6 O  w! }, I8 K/ P% P4 e. o) j
Step 2.admin node安装ceph-deploy
) Z; b' c9 i: {7 M6 G+ _7 \yum update, w6 R- u6 w- S2 w- _0 ~
yum install -y ceph-deploy4 u- `* q3 o" j/ _8 g) u3 T3 C
管理节点必须具有对Ceph节点的无密码SSH访问。 当ceph-deploy以用户身份登录到Ceph节点时,该特定用户必须具有无密码的sudo权限。
- N/ R# ?: C- X$ P% W6 r  n& V7 h+ j- _  K

9 }7 s2 y) k# V$ `: H; X& A% S5 F5 u
Step 3.每个ceph node 安装ntp和openssh-server
: u5 C4 K. Y4 K& s+ X: X2 t: }因为将来拥有monitor的Ceph node需要使用ntp来同步时间,因此需要安装ntp相关工具。而openssh-server也是必须的。
( C6 S' Z  ~5 P; c0 H3 s& k- e5 D$ I+ j4 k( Y; y9 B3 c
yum install -y ntp ntpdate ntp-doc5 {# L* k  T, M7 b7 g- u
yum install -y openssh-server
5 Z' b, G/ L4 l# M 7 ^% \, {; g5 q% y
; @: _9 S; d, [5 |  O7 T
Step 4.每个ceph node创建一个Ceph Deploy用户" {# Q  \, P' e, K' F, P
ceph-deploy实用程序必须以具有无密码sudo权限的用户身份登录到Ceph节点,因为它需要安装软件和配置文件而不提示输入密码。: ]9 q$ g% ^9 Q# L) [
; ^+ J0 P  I# [( ^& g+ Q
最新版本的ceph-deploy支持--username选项,因此您可以指定任何具有无密码sudo的用户(包括root用户,但不建议这样做)。要使用ceph-deploy --username {username},您指定的用户必须具有对Ceph节点的无密码SSH访问权限,因为ceph-deploy不会提示您输入密码。
% I2 ]) }8 F' N  K. U2 y+ ]* p5 I; L; o9 J# R/ Z8 y; v4 R' v
我们建议在群集中的所有Ceph节点上为ceph-deploy创建特定用户。请不要使用“ceph”作为用户名。群集中的统一用户名可以提高易用性(不是必需的),但是您应该避免使用明显的用户名,因为黑客通常会使用暴力破解(例如root,admin,{productname})。以下过程用{username}替换您定义的用户名,描述了如何使用无密码sudo创建用户。
7 Q5 g# |! N) J7 P- e! c/ h8 J$ |/ b; Z8 g2 K; J5 |
注意:从Infernalis版本开始,“ceph”用户名是为Ceph守护进程保留的。 如果Ceph节点上已存在“ceph”用户,则必须在尝试升级之前删除该用户。9 a. m' q% R3 p: ]  a! E3 {, ~

4 a- W$ A8 M5 v" D: D# `/ xuseradd -d /home/luxiaodai -m luxiaodai/ S# O+ K% @' t* V+ M
passwd luxiaodai(123456)
4 @  H5 F5 X8 }& O6 p# 给该用户sudo的权限
9 M7 e4 Z- e: c3 p2 t  @echo "luxiaodai ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/luxiaodai
7 g2 g/ ]' d+ J/ }8 ?7 R% rchmod 0440 /etc/sudoers.d/luxiaodai: |: D2 @3 P/ ~/ H

" i" G, F  K6 v
6 l$ d( f/ Z- n& j* A& }Step 5.admin node设置免密和填写 ~/.ssh/config 文件
- H! r. M. Z/ w1 U设置免密
, `7 V7 U1 X/ a. X( A( I$ q
- N9 {0 q* L+ V7 v9 R% z* b复制代码5 X- ~, k' C  j9 j
# 生成秘钥
- W& @% q2 W# Y- F  Dssh-keygen; X- M1 m: T/ N4 T  U' p; r
' w# m) A/ k4 ^/ A1 S0 K+ w
# 拷贝到其余节点; y% j* @# N: p; _& f' L# P
ssh-copy-id {username}@node1% S, [: t% o. ]+ Y3 m! J
ssh-copy-id {username}@node24 K, W# Y. ^* @$ r$ x+ J
ssh-copy-id {username}@node3- q# z; ?* v4 h. l. m) n
复制代码- J, b& K, W, e- m+ `
~/.ssh/config 这个文件是给ceph-deploy使用的。通过此文件,ceph-deploy可以知道用户名和Ceph node的信息;这样,就不用每次在执行ceph-deploy的时候都指定–username {username}了。用户(luxiaodai)和节点名称(node1等)后面会介绍怎么创建的! t& ~, d$ X' O( }2 i

2 Q0 |4 F% Y: g复制代码
  @- X7 K# }# U5 ~) SHost node1
/ G9 Z9 h6 \) l4 t    Hostname node1
# S$ D$ w% s3 N7 Y: J: U& ~    User luxiaodai
4 o' e* h8 l0 f8 oHost node2" i6 P0 ^$ a" X
    Hostname node2
. r: O9 _; ?# B    User luxiaodai
# m- q% w& ^& p* C; P* m8 K- l: f4 ~) wHost node3. n& N7 r& _5 e6 G5 W% S, c1 I. w, ~
    Hostname node3
" L! M" F8 D6 V: P% o    User luxiaodai7 z# P; Y# c, p1 ?9 r
复制代码! }  N: R/ }3 c  P" G2 ^7 H) |4 G
关闭防火墙:
$ t  \8 R+ w% v2 Y) ~! o4 q& V' K  X
linux修改主机名+免密认证+关闭防火墙 8 _" H* r- g' ~1 Q

6 ?4 v2 Y) [+ w8 j9 [2 E6 F * e/ v. d1 }# N( R- J* W! n3 P

: ~! `+ n! s1 `% MStep 6.TTY& y$ X5 m3 v# H" `( j, y6 f
在CentOS和RHEL上,您可能在尝试执行ceph-deploy命令时收到错误。 如果在您的Ceph节点上默认设置了requiretty,请通过执行sudo visudo并找到Defaults requiretty设置来禁用它。 将其更改为Defaults:ceph!requiretty或将其注释掉以确保ceph-deploy可以使用您创建的用户与创建Ceph部署用户进行连接。
/ s. a+ k9 U; [& A# c2 H7 r' d1 `8 b: |
& h) @" ]. {, g& b  U
9 P$ `+ p. |/ n- |
Step 7.确保您的包管理器已安装并启用了priority/preferences package。 在CentOS上,您可能需要安装EPEL* o. n9 U# o% z1 s" i. v
yum install yum-plugin-priorities
6 L1 G$ v9 F; A. b
* @0 [9 x4 |' S  ~9 ]8 k
+ d5 b5 m/ f3 J: l3 rCEPH STORAGE CLUSTER安装
: q' v# P/ g# _Step 1. 创建工作目录
! {7 S# U: \1 b" E本步骤在admin node上完成。: y% U7 y! {( c) P

2 m' y& ^% n6 W# E9 n% ~, |0 Y% Fmkdir my_cluster3 E  t( Q) `5 w- A$ [3 q  Q" s/ }
cd my_cluster
- p: ]! z! Y2 q! f; V9 n& y, M5 \+ pceph-deploy工具将输出一些文件到这个my-cluster目录。要确保每次运行ceph-deploy命令都是在这个目录下。
1 ~% u( |+ k3 L2 S1 O' o0 L7 r) f
! @& ?' q) {& @, ^& C$ c0 @7 z& e. G注意: 不要使用sudo来运行ceph-deploy命令,也不要在使用非root用户时以root用户身份运行ceph-deploy命令。因为ceph-deploy不会把sudo命令也发送到远端的ceph node上执行。3 a7 ?( _* ]3 b: ]
0 v0 r* i" j0 `7 E; h3 R; R
; Z/ @2 U! j3 g5 B! d

, [/ u# X. `$ S1 ~, R4 B# RStep 2.环境清理
7 Y- ^9 r" G+ w( ^$ h在任何时候当你陷入困境希望从头开始部署时,就执行以下的命令以清空Ceph的package以及擦除它的数据和配置:
' [) X. n, C1 {% \6 r; l3 y# e# c' }! W" S7 v  F" J- k
ceph-deploy purge {ceph-node} [{ceph-node}]
* {8 E% G$ H; p+ u; T; \ceph-deploy purgedata {ceph-node} [{ceph-node}]
% l. T  ?/ Y5 {9 T& ~! y; O$ Tceph-deploy forgetkeys
3 l. O9 L; M2 t' J6 Q" G0 k4 X! grm ceph.*5 Q9 N8 B7 o" c6 J
这里执行" A, l- F* n' n( L9 T: Q
. v- y& l& h' H3 g& ~& Y" N
ceph-deploy purge node1 node2 node3; e! l0 J5 W% S9 L
ceph-deploy purgedata node1 node2 node3! M  L1 V" i4 o9 i! V  o6 E
的时候提示
3 C) B# M* [6 y6 u9 g9 q7 g' }, i5 h* S3 h  s; _9 B
ImportError: No module named pkg_resources
, u) X* ~! n$ I& b解决方法:) K* _/ C. J9 ~9 C2 F6 Z
" b6 ]/ p, r7 V" H
yum install python-setuptools, J. p9 c/ s. j  i9 h3 e
如果执行purge,则必须重新安装Ceph。 最后一个rm命令删除在先前安装期间由本地ceph-deploy写出的所有文件。
: d3 ~9 r! f8 E8 c5 p& }! S: G7 g% h7 t% X) D
5 F, ]( m4 R+ Y& S
; g/ K/ q. ], x% z1 B* i' j
Step 3. 创建一个集群6 L) @1 S, {5 J' G
先创建如下图所示的ceph集群,1 monitor + 1 manager + 3 osd daemon ' }7 A' E- Y; m6 X8 Y* t/ ]  d% ]& ~, e! K
5 p, D* [3 M( O; p, `  |

& X4 C2 e+ g* L3 \/ G  N! H8 Y
1 R5 p& I0 O2 F  {7 W4 i
/ b2 G% R: U7 I/ b: Q! L$ f
: p3 W  ~2 p, @# T) n% c8 j$ {1.创建( P$ g* c. C( d1 C, e
ceph-deploy new node1
: _0 v( p$ R1 N; n* z这个命令结束后,会在my-cluster目录下看到:ceph.conf, ceph.mon.keyring, log文件
# h. j& O0 V; l* ^% W# B5 b/ P1 R* B0 G

# g3 t0 n) C1 @0 ?; Z: `4 n  Y; m. j; c# c' k

% s$ k2 b) R1 U8 O% k% ^0 h1 K- P% u6 L$ y; C
2. 添加public network的配置到ceph.conf; {4 P  B! y- j$ X
添加下面这句话到 ceph.conf 文件的 [global] 段
5 f- k  s' p3 a; a5 r, L" R, a0 `% m0 O' [
public network = 192.168.1.210/24
. ^2 G7 C5 O1 {1 k7 `, t7 t8 oor" }+ E. u8 @+ y( H& u
public network = 192.168.1.210/255.255.255.0) b" {& W; q& U) M2 S( D, [) J

9 j+ O7 M8 F% q7 C6 @2 Q* ]! H8 L% T
如果要在IPv6环境中部署,请将以下内容添加到本地目录中的ceph.conf:
) d8 T4 I4 R) n* m' W
1 j) O# B( w* x; cecho ms bind ipv6 = true >> ceph.conf
+ n0 r0 w5 h2 i5 |. a + N: C# D8 B- P0 l& K& `6 E( h) g

- J4 s9 J$ y2 O0 X3. 安装Ceph的packages) P, ^$ J$ X7 s/ C
ceph-deploy install node1 node2 node3
8 B7 K! \  q/ I. @) \- K安装过程中出现的问题
/ S0 F/ A5 {: F& \2 m5 g9 L4 S/ ?# u5 k
复制代码2 B2 O2 p9 z, V9 M! v  ]2 _
# 如果安装一直有问题,清空/etc/yum.repo,然后将yum源换掉:http://mirrors.ustc.edu.cn/help/epel.html, {" p3 X% T. M* T  u
问题:/ Q8 C; f7 y( }/ F- P. c
[ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph'5 X2 y; |; M; h9 w
解决方法:* ^& U- N( l9 N# V3 P. i  G
yum remove ceph-release
/ |  m: H5 a3 z, E) D' frm  /etc/yum.repos.d/ceph.repo.rpmsave$ o1 c% M/ M2 f# u# f; e* d
问题:2 g3 H8 ?' V) z5 r& m) ^
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: yum -y install ceph ceph-radosgw" m! P5 M6 D; m. Q/ @! X# W' a
解决方法:; Q  R+ A$ K6 J& t
yum -y install ceph ceph-radosgw
8 K" ]& g  Z* M( }) I. R& Gceph安装缺少python-werkzeug包
& v7 }& @1 Q3 j; i: r安装包下载地址:http://rpmfind.net/linux/rpm2htm ... ery=python-werkzeug
  j  C& x2 A. j+ |! d  I& J, rrpm -ivh python-werkzeug-0.9.1-2.el7.noarch.rpm
6 v! I( K, `; X% V$ d问题:[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph –version: o- x* w3 Q, S3 j/ R6 ?: h% h6 u
解决:ceph1 安装速度过慢,已经超时了,直接手动安装 yum -y install ceph ceph-radosgw
0 T. W6 A* J+ W" r. G% }4 w7 `3 ]复制代码+ X* K* C- C/ a: q2 G
安装成功!!!
# Q# L5 ^" K: d3 i% |, }- Z- p9 }) S9 w/ }3 ?

0 u" s; S0 Z5 x( B* W" X$ H: Y6 N% S' F) N; k
4 I  c3 P6 Z8 s9 G/ n7 d, ]5 v

. U1 f* `7 D/ \3 c# @5 j2 M4. 部署第一个monitor并产生keyring
3 [$ d3 B/ B- }ceph-deploy mon create-initial, L) U3 q9 E  x, M6 h0 a: b0 }
注意: - i  R: N3 d( J  Y
若出现类似于”Unable to find /etc/ceph/ceph.client.admin.keyring”这样的错误,则要确定在ceph.conf文件中的mon_host的IP应该是public IP,而不是其他IP.$ v% Y8 {0 S! H; A2 y

  m) r# \/ {6 E/ H/ v, w$ v/ K当这一步结束时,my-cluster目录会出现如下的keyring:+ N2 b/ N0 h( n; y. T4 M7 g2 W

4 G; J2 z9 F) N/ b5 D/ V$ g) m) @( p! V4 K. w/ g8 D

0 b! d9 K- E* O- s4 u- J
: u1 J2 Q6 _4 M8 {5 F- t% {' K( N6 ]; d/ w6 q5 y4 r) U2 ~* J+ N
5. 使用ceph-deploy拷贝配置文件和admin key到ceph nodes.' q0 l  z8 @( x
这样就可以使用ceph CLI来执行命令了,而不用每次都指定monitor的地址和ceph.client.admin.keyring.; V# c" ^0 t; Y: w/ \  X
& o0 R5 f& F" w0 z; g0 h; L
ceph-deploy admin node1 node2 node3
- N/ Y- j& a# D- I. B: H  D 6 p' P. g7 c/ O* g' ~% |
1 H' I+ I+ j4 r1 e% R
6. 部署一个manager daemon. (Luminous开始要求的)3 h' M& J- o$ k9 d, ^
ceph-deploy mgr create node1
0 D: f  C" f4 J) T
1 M. `' Y- M0 H1 Y- x7 e  k$ e4 j. j; |
7. 添加osd
0 a" E! o1 X+ F& s  _/ p1 s添加3个OSD。 出于说明的目的,我们假设您在每个节点中都有一个名为/ dev / vdb的未使用磁盘。 确保设备当前未使用且不包含任何重要数据。0 y/ h! {  Q9 M
+ v7 s; \3 {0 h. w5 ^
复制代码
" U- ~) C& e  @2 c# E0 Y* N/ }ceph-deploy osd create -data {device} {ceph-node}
/ g) B. K1 o+ n' _2 x6 j3 |. _# p4 L. S% [0 K& ^! q
ceph-deploy osd create --data /dev/sdb node18 ~- g) j( {/ {9 f# I% z! D
ceph-deploy osd create --data /dev/sdb node2
2 W! V1 F  H, H4 o0 C, @  zceph-deploy osd create --data /dev/sdb node3/ {& J0 ?" ]8 Q% W- V1 x

( o6 d+ o7 l2 C9 z2 A( `注意:如果要在LVM卷上创建OSD,则--data的参数必须是 volume_group/lv_name,而不是卷的块设备的路径。
! y1 K$ `) C4 |" }$ ^1 h复制代码" b9 t3 x- c4 N/ K4 v; @* y

: ^' B8 w, h( i( q" a: u; h& y: w: ?- [% E$ u, F) j
  B6 N  _$ M7 J  |+ a. R

( S# \" P$ b) F# k ' n$ r. f  o3 H' n" u
) P/ k, \# B0 N/ `+ m5 z& n
8. 健康验证
- k% [* B2 o3 @ssh node1 sudo ceph health
+ |% g3 l! {( x2 f' O& |4 s, \/ P& p5 n; X4 s1 c
您的群集应报告HEALTH_OK。 您可以使用以下命令查看更完整的群集状态:
5 X3 k2 a5 ]* r7 i# c* `' {
6 }' |7 ?& _) i0 jssh node1 sudo ceph -s  ~5 A! Y: n) k$ v: @  m
查询结果如下:
; g9 \  i1 ~# X; X( |" U7 ^2 L, e' q7 k3 f* d6 @

+ m2 Y* Y" V2 U5 O5 J; s; I7 z% a! R1 x* j

/ g" E4 I( Q6 N: w* W" R
* u" H: S6 p- D6 y! t5 |2 S( s
: ~' r+ Z# S7 S6 F9 j. ~  x" O: Z( M  q; @9 e
Step 4. 扩展集群' b0 U# Q' g! H) X5 L
启动并运行基本群集后,下一步是展开群集。 将Ceph元数据服务器添加到node1。 然后将Ceph Monitor和Ceph Manager添加到node2和node3,以提高可靠性和可用性。
! @- A" F/ M9 s: K7 A% Z2 ^
# \. h+ [. {/ t6 `* q8 d5 ?* C
, v8 l8 ^) y$ B4 R9 u: M$ D3 c/ s; q3 u. b/ f5 b5 Y
对比第一阶段的工作,第二阶段要扩展的是:
/ ]' m2 M/ A+ l) |( B' c. ]2 r5 {  d+ m* b) M+ [' Z
添加1个metadata server
/ {0 a6 H0 W$ t$ |. F# K添加2个monitor
, j" O; G. O4 A* f添加2个manager( I$ ~% ]& M% X: c2 D  I
添加1个RGW
, H5 V  h9 u3 t) \ $ E, ]  m1 ~- K+ i6 m

6 k: F0 f; {. j; z4 C2 {1. 添加一个metadata server; p3 p3 _9 `# o; A* N, H
如果要使用CephFS,就必须至少添加一个metadata server.% ?9 |. |" r2 u/ Y" {

  L! y6 t6 D) V0 H* L7 r& Vceph-deploy mds create node1# ~) D  o0 m/ N6 Q: c

) a; I" Y% Y3 U0 }# q
& P" I' z9 l. @/ `2. 添加2个monitors,达到3个monitors
, V4 A1 V+ Z4 r3 FCeph存储集群需要至少运行一个Ceph Monitor和Ceph Manager。 为了实现高可用性,Ceph存储集群通常运行多个Ceph监视器,因此单个Ceph监视器的故障不会导致Ceph存储集群崩溃。 Ceph使用Paxos算法,该算法需要大多数监视器(即大于N / 2,其中N是监视器的数量)才能形成法定人数。 虽然这不是必需的,但监视器的数量往往更好。
! ^5 H6 A3 j. b0 z% ?% c2 W5 i, M
ceph-deploy mon add node2! p& f  T4 ^) C8 k: X7 z
ceph-deploy mon add node37 S5 T- N7 J1 Y) A5 ~
在添加新的monitor之后,ceph会开始同步这些monitor,并形成一个quorum. 要检查quorum的状态,可运行:4 `& B3 g6 v0 l" P9 Y1 h. ^# d3 ?
7 j' f- L( t% g6 c
ceph quorum_status --format json-pretty; C! W$ X# \1 R2 `
复制代码
8 ~3 Z/ q$ m  L; f# g[root@node1 my_cluster]# ceph quorum_status --format json-pretty
$ h4 ?. n1 `- Y; e/ R{; t& Y0 j, U' H
    "election_epoch": 12,% e! K; Q" H# r0 v/ l
    "quorum": [- |/ C+ T. ^: s) P
        0,3 [. c' n. T$ _2 r3 N
        1,& I0 C$ H+ m4 O+ @8 c# m  {
        2
$ D+ `; I* v3 c/ a    ],2 c4 ]2 l; D& y
    "quorum_names": [5 `! \, n0 V. t1 O
        "node1",$ u6 C8 u) G, E( r
        "node2",
$ o& X4 b$ \3 x        "node3"
- L* |3 |6 y& _* E7 @- ]3 b2 c    ],
2 s# J% }$ B9 d+ c1 M9 J    "quorum_leader_name": "node1",
8 C) [0 Z  z& W0 |4 T+ ?    "monmap": {" H% u5 X9 G0 x6 L
        "epoch": 3,  w1 k4 X2 n# _3 e- m5 @& }3 D
        "fsid": "f314d1c1-b6b9-4060-95b7-c25ec192f612",5 y, O7 d: \. o+ I9 G7 @' l2 w7 w
        "modified": "2018-11-13 16:04:02.221558",
: b0 y/ ?  H7 n        "created": "2018-11-13 15:35:34.338001",
: V# z: M& M7 ?, u, ^9 H        "features": {
/ \7 a$ [- _5 D  c4 N            "persistent": [
" v3 f( B! g+ ^3 K8 m: U                "kraken",/ Y$ S3 K: y' N9 A2 h9 N; E
                "luminous",! l8 w! E) _$ W/ F# a
                "mimic",
( c* ^; u: `9 K/ _- R; d                "osdmap-prune"
& X; Q- F4 s( q            ],3 d+ X7 ?5 X* ^. d
            "optional": []
4 y$ I4 ]) S! q+ |& f- @        },- U5 G  ~3 P5 }$ i; I. T
        "mons": [6 a( q5 U) H  T/ S; m
            {
9 E, o- p+ i% i7 R- q                "rank": 0,
' J( n% a5 _9 J' I2 _2 W- \                "name": "node1",3 ]; I0 t+ M% Q( G( R1 o
                "addr": "192.168.1.210:6789/0",( i' W6 l! w* C6 W+ C$ |
                "public_addr": "192.168.1.210:6789/0"
6 _0 M6 \+ x+ q9 H) c( ~            },4 D% j  ~4 c2 o' s1 l
            {2 ]# h$ d. M5 I* F. [; M
                "rank": 1,
  ]% \; l* d! {                "name": "node2",
6 v( w/ q9 D$ a; t; E% H0 I                "addr": "192.168.1.212:6789/0",
; @, D) g: T$ i9 T                "public_addr": "192.168.1.212:6789/0"- R5 a2 `! W" z' E3 o
            },1 v4 ]) A/ z3 Y& ]* h3 _
            {2 F& g. G! n* ]% w  p
                "rank": 2,
4 K6 H# K- W& w                "name": "node3",4 A9 |1 e3 ~& v
                "addr": "192.168.1.214:6789/0",( h' H  q  K( {4 w. m; i
                "public_addr": "192.168.1.214:6789/0"
1 \# i& f9 w# v& c0 @& q( Y            }
' `* ^! F; e- t0 O9 N/ @        ]
; K3 z( J( F& H( \- f    }6 X  n$ l) T3 s
}
6 q9 }" P. \2 Y8 y0 Z! V; \( b复制代码
# d9 I! k) P6 @0 B6 g2 Z2 z当给Ceph安装多个monitor之后,应该在每个monitor主机上都安装并配置NTP,以保证时间的同步。ntp的配置这里从略,只简单概述一下原理:将2台monitor所在机器配置成向第3台monitor机器做ntp的同步,而第3台monitor上通过crontab来定时调用ntpdate命令向Internet上的ntp时钟源做同步。4 H0 n! U. r# O% A$ j; d
2 Y( z9 U) F. @, ~3 H# L  W

2 N5 o4 o- l: G, G4 J4 A9 p  k: V" @4 o  z1 C, Z, J' O; L
3. 添加2个managers,达到3个managers
3 z5 \3 X5 D3 L  J/ i( D) aCeph Manager daemon工作在active/standby的模式。添加多manager,可以保证如果一个manager或host宕掉,另一个manager可以无缝接管过来。
3 J1 R! D# B% S4 ]: q" k; k) Y* a$ r6 H' n
ceph-deploy mgr create node2 node3
8 W" u- K1 X- i' d2 Y# E% }/ u可以通过ceph -s命令看到active和standby的manager.
5 w0 U  p# M9 v+ D9 M; u& D( s6 q; M3 o0 M6 \% ^3 T
0 X9 v4 x- o: A( D! i

. N; ^6 J' o8 g# R $ F/ O6 W8 c" H4 M. b4 a
1 r# \7 K+ G! R# N
3 ~# I& ?0 h$ p% N
/ ~0 j& e8 ~+ Y1 Y6 a+ M
4. 添加一个RGW实例
' }& d% F# d. \" M0 t, H& `要部署Ceph Object Gateway组件,就必须部署一个RGW实例。
  F# U% W& Y& @1 b' O$ M% Z  c. f# A4 B6 N; \! o8 W7 R
ceph-deploy rgw create node10 J) y3 E4 w8 W
GW instance监听在7480端口。若需改变端口号,可修改ceph.conf文件。% V3 f' q2 x! G& r8 x

' q$ P! Y- l3 C8 q+ _- \[client]( S7 T7 |' \& v# W, X: i
rgw frontends = civetweb port=80
, I( G  s- d! ^若要使用IPv6地址,可以如下修改ceph.conf
2 k4 C; L" h$ u- m( v( T9 Y/ P, N, D6 J* e
[client]
( r$ P# E9 A' n8 o& _$ hrgw frontends = civetweb port=[::]:80
+ T1 A4 T: }/ j* F  T8 v) N * o/ B/ B+ ]# U% [

& t6 S$ H$ |0 u3 X" ~+ V存储/检索object数据; H- u9 j. G$ P$ q% H0 t7 y  g5 ~
要存储object数据,ceph client必须: 4 |& i# U) z! B4 G
1. 设置一个object name
3 J0 s% p. l: H( [2. 指定一个pool
" p6 i% P" N" z8 j/ K! C/ q) c8 T* q! V' H% D9 F; i
注意:
! ]9 C" \' f, I4 B( J关于ceph client,将在下篇博客介绍。6 }3 A0 T8 h& `  N) K
) E0 ?" \$ U! z' c9 ~8 U1 B! R
Ceph client获取最新的cluster map; 而CRUSH算法计算怎样将一个object对应到一个placement group,然后再怎样将这个palcement group动态赋给一个OSD daemon.
( g& i4 r4 q, a* q要找到这个object的位置,可以执行如下命令:
9 r6 l7 r* m5 N" v6 y, H
7 T2 N5 H0 p- |ceph osd map {poolname} {object-name}& j1 P& d  O6 j7 d
作为练习,让我们创建一个对象。 在命令行上使用rados put命令指定对象名称,包含某些对象数据的测试文件的路径和池名称。 例如:  n  z7 s$ B& F( Z+ c2 s7 w. C1 ^9 y
& g; K4 |; D7 r- |+ k9 E! U
rados put {object-name} {file-path} --pool=mytest
. J7 c9 m2 D% _7 B3 h  r* t! a; Qceph osd pool create mypool 8   # 8是该pool的PG的数量: t4 y/ y& d/ N3 \  T
echo "Hello, World" > 1.txt/ T6 l( e) d$ \% K5 O3 S8 g8 k" G! O9 A
rados put my-obj-1 1.txt --pool=mypool
0 F  d7 ?& C/ H" I* Z9 c. Y9 l) b. U6 c2 X
检查Ceph集群确实存储了这个object:
: `2 a8 P- [, i* _  H& j- {  {' B" j% F
rados -p mypool ls# t; w5 r$ s2 b+ T2 y. H
确定object的位置:
/ O$ {: `2 n' Y
+ U% y* H1 \- {6 e  n% Mceph osd map {pool-name} {object-name}# g2 }3 X$ ~+ E. G% P+ q$ X% Z
[root@node1 luxiaodai]# ceph osd map mypool my-obj-1% u8 \# S1 A2 H4 h/ y" {$ o1 C5 F
osdmap e26 pool 'mypool' (5) object 'my-obj-1' -> pg 5.ced445fe (5.6) -> up ([0,1,2], p0) acting ([0,1,2], p0)
% I% H/ E( a5 G; V( Y. I5 u3 A. K. P4 S
若要删除这个object,可以这样:# h  @/ ^, n( O' X

( }' T! M( G0 G( Urados rm my-obj-1 --pool=mypool4 m' D7 e$ c; h5 t
如果你要删除池,使用下面命令,出于安全原因,您需要根据提示提供其他参数; 删除池会破坏数据5 \( c1 z3 c; B4 ?4 C* [

5 O8 g8 R7 [" i& |ceph osd pool rm mypool. ~0 N# J% h- F& {( j; z" a7 U1 d
删除需要修改配置文件,加入红色部分,必须在mon节点上执行
# N3 g, i) B4 Z6 M+ A/ H% v' o' j- m) `8 Q' L% q6 w
复制代码; _/ k# b# X. H+ d( t4 R
[root@node1 my_cluster]# ceph osd pool delete mypool) O5 H/ B  m  m/ C. x
Error 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.
( l6 y" `" {4 a: H[root@node1 my_cluster]# ceph osd pool delete mypool mypool --yes-i-really-really-mean-it' a5 M, D1 s6 I  U8 T
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
! l9 i# C5 H7 p5 Z) O3 o- B1 s5 q3 i[root@node1 my_cluster]# vim /etc/ceph/ceph.conf
# w6 A- i- J1 s% D3 V$ N[root@node1 my_cluster]# cat /etc/ceph/ceph.conf : Q% R" b- b, Z, H9 _7 Q. _( u
[global]6 B* k- [! _$ k+ b* f- W- \
fsid = f314d1c1-b6b9-4060-95b7-c25ec192f612
" h4 W$ _" N) i: j7 R0 U4 Smon_initial_members = node15 v8 ~& Q2 z' ]9 |; s
mon_host = 192.168.1.210" B3 J$ W9 R; i8 w
auth_cluster_required = cephx
/ v5 n- z4 w1 x, f( iauth_service_required = cephx
* M* Z/ ]( H" j  Z% }$ P$ sauth_client_required = cephx
* [# |5 w( x, Cpublic network = 192.168.1.210/24
" e% J7 o' T+ v4 v, {' _3 q
0 Q6 g4 K. R( @[mon]
! H( L. u2 T; N1 B7 F) Hmon allow pool delete = true: i# M* q/ }" ^' Y
[root@node1 my_cluster]# systemctl restart ceph-mon.target
! E; M1 X; K( {  R! }8 \+ p[root@node1 my_cluster]# ceph osd pool delete mypool mypool --yes-i-really-really-mean-it/ n0 l) p1 |0 i2 i$ X( j
pool 'mypool' removed$ o% N7 E! e, \: i2 l& V
复制代码' P* c( M) Z. }3 n/ G) u; b) I* o
现在,集群部署好了,object也能成功创建了,但是却并不利于用户的使用。用户使用存储,一般不直接通过原始的object,而是主要有3种使用方式:7 |7 ~7 s( k' ]
块设备9 A  O( b9 E# P: c1 K% P( c, Q. e
文件系统$ J. |3 |& g  \2 Z
对象存储(比上述原生的object多了一些封装,常见的有通过S3 API或Swift API进行对象的存取)0 n% J6 W9 @9 C5 C- u/ o1 C9 b) L

( k, Z( P# x/ }) g1 P, u
4 q; d' m" l- tBLOCK DEVICE QUICK START4 D7 n; L8 v. F3 J% B
1. 安装Ceph/ i- Q7 i; x2 z/ j' X) X
首先要确保是Linux kernel以及合适的版本。1 L3 S3 t# r/ L( |; X0 c

  z6 t% T9 l% w7 w在admin node上运行以下命令,将Ceph安装到ceph-client node上:
8 a" K  R) f2 m; F4 q# I2 G0 _. s& t& P9 b/ D- Q
ceph-deploy install host4 D4 M( k4 ]3 S% ?
然后,运行以下命令将Ceph配置文件和ceph.client.admin.keyring拷贝到ceph-client上。
4 j6 g5 Q( y5 F9 P9 e9 E# o# I+ L2 E# o& N8 t
ceph-deploy admin host
: l3 n+ @1 m6 F" p& }3 l7 i% Y$ v 1 ~7 t  I3 z8 q- ?
+ s, @) r/ `. Z6 K/ [# W
2. 创建一个块设备的pool
2 P: j7 N) u9 P* K在之前的文章中,已经创建了一个叫做mypool的pool,现在需要运行以下命令以使得该pool可以作为RBD使用:) M4 Z' D& |& n: u6 X  x" P

! U' a, o$ B! v2 _6 |. G  i8 L5 i% _5 ]# Grbd pool init mypool; v& ]" Q% B1 b0 _. y3 a

- W- P& e$ \9 y! U) y
9 c8 f1 |* O# ^; b1 d/ T3. 配置一个block device(块设备)
( Y6 [- g$ d  X# W+ [1.创建一个block device image
4 t# Y* h" l4 H, i! V8 Srbd create foo --size 4096 --image-feature layering [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]* |" o2 Y7 W  T% ^1 B4 s
rbd create test --pool mypool --size 4096 --image-feature layering -m 192.168.1.210 -k /etc/ceph/ceph.client.admin.keyring' z4 L. ]% v/ J- Y6 ?  \
如要查看所创建的rbd,可以这样:# C$ D: i+ ?' }$ t

( H) i7 M  G8 x5 R" srbd info test -p mypool
2 N, O; z' T3 C' N0 t3 S6 c6 ~! r$ J结果如下:
, f" Y- m. D& m! v+ u1 x) x3 v5 a  q. k- y" V; l" C* t& k( ]1 f
5 q/ D% ~  w; \/ a% O

8 ~# _: D  [9 A  y
' y( Y( \: G0 v# j: p3 ^8 w* t1 n* ?1 p
2.map一个block device image7 w. c2 |. n+ R8 v
sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] [-p {pool-name}]
9 f% H$ }; D, r1 C6 e
' _1 Y: k. i, ~0 y1 }2 R( Brbd map mypool/test --name client.admin -m 192.168.1.210 -k /etc/ceph/ceph.client.admin.keyring% y% [7 E( u+ D! w, W" ]: O

; q( z7 r+ A# q( f0 n& E8 q4 d$ j6 T7 g" C0 N  w  ]
3.创建一个文件系统并挂载
! c. D/ L" g  T ; X7 p# u: v4 M4 D
6 `" N& e7 L3 y8 B
注意: 这里的rbd map和mount命令只是当时起作用。若系统重启了,则需要重新手动做。 若要开机自动做
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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