易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 302|回复: 1
收起左侧

怎样安装使用ceph ansible

[复制链接]
发表于 2025-12-20 22:38:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
Prerequisites3 Z1 h0 t. `& h9 U* @& Y) Z0 T
Root Access to openstack Control Plane5 K) ?; N; M0 V0 A3 u4 _' V
Root access to your cloud's control plane nodes is required.
# l! F% k9 x8 Y: ^5 b" \
* d+ I8 u0 q* P! T: [/ D0 B7 IPath to the Ceph Configuration Files
: {8 o9 K# a& G0 a. eCeph Ansible Inventory9 v0 R3 S1 ~$ ?
/etc/fm-deploy/ceph-inventory.yml
% a5 J' r6 P4 c  s) g) R; r* K1 ACeph Ansible Config1 L% S+ ]' b. k" m5 q4 ^9 N9 ~
/opt/ceph-ansible/group_vars/all.yml
  g8 X. O+ t6 L. a' oPreparation
: y2 h: d% D6 E0 }$ F2 n# OTo prepare Ceph Ansible:
5 |$ H3 V* E! U- N6 J' l: c/ s* H1 C/ F5 v! C7 ~- Z0 h( [7 `
docker cp fm-deploy:/opt/ceph-ansible /opt/ceph-ansible2 o9 a6 L" e  [+ [- b5 E1 Z
chmod 700 /opt/ceph-ansible
) R: |9 A$ p2 c* Hcd /opt/ceph-ansible/ }  d2 h1 J& M0 r& S* ~2 Z
virtualenv .venv
: f# R5 p( s1 |source .venv/bin/activate2 V2 p/ e  ?" z7 f" ]+ T
pip install -r requirements.txt
4 Z" c7 E" }! `1 M, v4 Rpip install six! E7 o- ~# m# s5 P
1 j3 ~: ~( N! T) o3 ~
Deploy a Ceph Cluster:0 r: ]: q+ X3 B0 Z/ d
0 F2 Q; M0 L( `
ansible-playbook \
! b& r4 @, ?' @  N; D    -i /etc/fm-deploy/ceph-inventory.yml \
+ z# U! N  p6 b! W; D2 b    --private-key /root/.ssh/fm-deploy \5 ^& z0 n  ?  `
    /opt/ceph-ansible/site.yml
2 X* j# Y( u3 C' s' i2 B7 J9 W# m2 V( o7 r
Attempt to repair a broken Ceph cluster:) M7 R0 j0 ~* V) [( @

2 h/ N& J: j4 t9 w  j! ]1 jansible-playbook \
$ l6 \. A. v4 c9 C1 J. u    -i /etc/fm-deploy/ceph-inventory.yml \3 C: k7 W( ^; e1 n+ z
    --private-key /root/.ssh/fm-deploy \
" u" ?3 E' u1 w  K, j$ x4 i2 g' D4 }6 q, S% B% n9 E* @- H! e
 楼主| 发表于 2025-12-22 23:44:32 | 显示全部楼层
一:Ansible Playbook示例9 X) Z) C. w2 R
---3 C: _, {9 i) c* y' o
# ansible-playbook -i inventory ceph-deploy.yml
; j" R0 a+ Y" B& A
. p' d! o5 A& ]& M3 B) ^2 B' O- name: 部署 Ceph 集群基础组件- l0 P4 Q. E$ v
  hosts: mons,mgrs,osds  # 目标主机分组( c; R$ j' q2 Z% l* V
  become: yes  # 使用 root 权限$ m0 B5 T1 f/ U% U# ?# w, z
  vars:0 k& i: W( d" u6 Y  t
    ceph_cluster_name: my-cluster  # 集群名称  @9 j& K( E9 [+ _3 {
    ceph_fsid: "{{ lookup('password', '/dev/null chars=hex,ascii_letters length=32') }}"  # 自动生成唯一集群ID
+ n/ B( R& r5 \+ P2 c/ J5 F    ceph_mon_group_name: mons  # Monitor 主机组名称
4 {) }+ a8 m  m  `3 U  g( s& y9 i    ceph_mgr_group_name: mgrs  # Manager 主机组名称& s3 ]# K3 `8 I6 [$ Q  p4 C  {
    ceph_public_network: 192.168.1.0/24  # 公共网络
; D3 w; Z! V$ I# h    ceph_cluster_network: 10.0.0.0/24  # 集群内部网络
8 t# ?- z" X4 K+ V  g
$ ?+ Z4 C! r8 Z  tasks:4 P4 X; v; E  Y! S! `2 E3 |
    - name: 安装 Ceph 基础软件包3 w; @6 }" B4 d$ K7 `. h, H0 J
      package:- _: @4 i6 O0 P$ t" j5 ~# W$ B. c0 S
        name:
( E* j% v$ x$ M" }# ^! W0 z; M# M          - ceph-mon
- _2 U4 H# i' h          - ceph-mgr
; I9 d2 l: O! J/ V4 c          - ceph-osd
! o& s; X- i3 f) t        state: present
) w9 r, E3 ], I- a
6 s% g; x$ ~& O3 o    - name: 初始化 Monitor 节点4 U0 i9 w% ~) y1 D# g
      command: ceph-mon --cluster {{ ceph_cluster_name }} --mkfs -i {{ inventory_hostname_short }}! ]$ O" p! Q1 Q9 j4 A* l9 h
      when: inventory_hostname in groups[ceph_mon_group_name]
/ J, u: R1 p: d# N( P9 L # ~8 g4 w. w: S
- name: 部署 OSD 节点4 O) W+ j4 g) O' w
  hosts: osds
! C3 m/ v) w! K- S# K3 Y8 M  w) C  vars:
5 @/ a# `* a* ?3 j/ x9 [    osd_devices:  # OSD 磁盘配置. p& [2 H/ n' R
      - /dev/sdb1 t+ n/ S3 Y& O  l+ d4 b# e7 V0 X
      - /dev/sdc
" w9 J4 Y% [3 d, Z7 @, P    osd_journal_size: 5120  # 日志分区大小(MB)
  G( j* |! Y4 m; I' `  tasks:
7 |7 F- j3 A  j" g1 M  W; t. n) \    - name: 创建 OSD; {/ E" u5 e* J7 k* j
      command: ceph-volume lvm create --data {{ item }} --journal-size {{ osd_journal_size }}
" Z) D* D) ^- ]: V/ x- S      loop: "{{ osd_devices }}"
8 [* {* O9 `5 W: }: W( I0 M
, R5 g3 C0 m) c5 P  E" G9 _+ Y8 e- name: 部署 CephFS6 H0 Z' c7 ?- ^: e; d
  hosts: mdss  # MDS 节点组
; m# Y- B" w; C& E! o# G  vars:
# f+ R3 h" v2 d9 W4 u  |" \" a    cephfs_name: myfs  # 文件系统名称* q, z! ?0 N9 W4 O* T
    cephfs_data_pool: cephfs_data  # 数据池名称
% k2 z, ~; f5 f0 N0 I2 y+ m; D    cephfs_metadata_pool: cephfs_meta  # 元数据池名称) h$ q, t# Y) c
    cephfs_pg_num: 128  # 放置组数量  m5 d' b+ g8 U) C; y
  tasks:
& V( c$ B( H. u! ?    - name: 创建文件系统& a' T% ^8 Y. N3 Y
      command: |
! P/ L4 W4 A6 @/ q4 [: q9 E1 f" n0 Z        ceph osd pool create {{ cephfs_data_pool }} {{ cephfs_pg_num }}
" n7 h8 b; a/ P" r1 Q        ceph osd pool create {{ cephfs_metadata_pool }} {{ cephfs_pg_num }}* x0 Q. L: M( ~9 K6 c
        ceph fs new {{ cephfs_name }} {{ cephfs_metadata_pool }} {{ cephfs_data_pool }}; `, s, P! k0 Q0 S

* r4 z6 ~7 j( G) r) L( M- name: 部署 RGW 对象存储0 ^: {* \" z+ S$ I6 h% E  w
  hosts: rgws1 }( j+ I6 x9 J6 \8 S
  vars:
( u/ C6 l+ |4 ~  j    rgw_zone: myzone  # 存储区域名称8 U2 |" J' D- R. L4 V
    rgw_zonegroup: myzg  # 区域组名称
; v+ @; L$ o. o9 t! i- d    rgw_frontend_port: 7480  # 服务端口/ A$ B2 U+ W6 D0 {. P
    rgw_ssl_enabled: false  # 是否启用SSL
$ s; L9 o1 |5 i, s. C  tasks:
, f( o) z0 ], c$ K  K$ E    - name: 创建 RGW 实例
* c3 w. A% r. X6 @- f      command: |
! ~* N. Q$ h* K        ceph-deploy rgw create {{ inventory_hostname }} \
9 s! s* S& W6 s          --rgw-zone {{ rgw_zone }} \
3 B$ Q9 e; B4 s. n. v* ?          --rgw-zonegroup {{ rgw_zonegroup }} \! f# T: i4 c! R- C! J/ y9 [0 j4 }
          --rgw-frontends "client.port={{ rgw_frontend_port }}"% z5 H# t9 Y$ S- c
5 A* G) T2 g& z) |, ]* l" m- S- s5 R
- name: 验证集群状态
% {7 f* s  x8 f8 P  hosts: localhost
$ a8 ]+ R; F: K9 l  tasks:; p( S0 Q3 ~4 v/ T8 x0 h
    - name: 检查集群健康状态# A- r% F% y% A# U. |
      command: ceph -s
) L! T5 V$ s1 Q$ @' `9 g      register: ceph_status* ?' `( E) k  D8 {. ]2 d
      changed_when: false
2 u- Q, U. s- @* Z  a# m7 Y : X. w+ A8 R2 T' D1 o1 E8 d
    - debug:
1 z' \! U! c# q2 q        msg: "{{ ceph_status.stdout_lines }}"
1 W  Z1 i# d$ P% ]9 jAI构建项目
' n$ ?8 d- p1 K9 S' i2 ~+ P% y3 s- j* g5 E9 J5 Y% F7 Z
二:参数详细说明& Q  B, ?' Q( i+ U, F6 X
主机组定义/ l. ?5 E( }% o& }5 S
mons: Monitor 节点组,负责集群状态维护
1 K1 L8 d  K8 a, |+ Y) H) i+ y& M2 f6 ]9 }
mgrs: Manager 节点组,负责指标收集和监控: f3 G9 a! a3 q- {& j" ^' s
# R6 O( B% d+ K; r, ~/ t; m9 B
osds: OSD 节点组,负责数据存储/ u+ [+ ^5 v% {+ c8 J  V% X0 u' _
5 N6 k; q8 C5 E8 d8 A4 q
mdss: MDS 节点组(CephFS 元数据服务); S2 l$ m6 l# T
$ ?8 w2 T- H! F8 q# E5 m8 g9 H
rgws: RGW 节点组(对象存储网关)
9 B$ T* C9 t$ h+ m2 K
) C' Z, y+ v, `核心参数
; F2 k4 E2 C7 K5 p* n6 l7 U4 l#yaml文件, Y' a. f: y& q/ V4 ~) z

. W/ I# G. D/ d3 Gceph_cluster_name: my-cluster # 集群标识符
& ^/ R$ ~6 z2 a5 F: t8 x% v
& u, q# s. j+ x4 Kceph_fsid: # 集群唯一ID,建议自动生成 % q* M, Z# y3 U/ }

( l% c4 j( M. _$ I" nceph_public_network: # 客户端访问网络
$ [7 p1 z$ i& y1 {  C1 o; ?# Z4 W% p% Z! W$ M; q" W
ceph_cluster_network: # 数据同步内部网络
! r6 P0 [9 a2 b, d. l9 c+ M/ V  R3 U8 R2 X( M0 [" o
OSD 配置
  I: H( [4 R, y& B& D9 H' F#yaml+ ~9 I! L7 p3 b2 \/ Q( K7 U- _! X

5 m' ^- N+ d. q. z& N8 kosd_devices: # 磁盘设备列表(根据实际修改)* C$ s' Z: ^# x& X7 m
  - /dev/sdb
; z! |: f- b% n5 ]7 i  - /dev/sdc
0 N( @1 v- K1 G+ z2 `osd_journal_size: 5120 # 日志分区大小(MB): @1 ?# t, @  D* D+ f0 t2 @

4 m6 k1 M3 {+ g. `# `+ a- oCephFS 参数3 E5 _: {! {* t5 F  i
#yaml文件" Z; V" w  n3 a2 _# H5 K1 Z7 e$ W1 |' a

" e; [: Q9 @2 scephfs_name: myfs # 文件系统名称 : }6 E9 G4 U$ v5 d4 I

0 [- I( ]6 G4 v, G* q& ?& h& E, ecephfs_data_pool: # 数据存储池
$ |3 V8 r9 |, D. y0 P2 n) `
% C$ R) E7 e. Q/ h7 U2 G3 ncephfs_metadata_pool: # 元数据存储池
- G- x; r1 P6 e& w7 Z2 k4 n( H" i1 T4 u; G7 t; D6 D4 C
cephfs_pg_num: # 每个池的PG数量(根据集群规模调整)% b1 ^- ?+ `9 X; Y: t

$ x( s4 P8 R$ hRGW 参数! f0 g: _& q" p6 [3 |
#yaml文件& @' W" i6 h& f. x
6 ?& S' m5 a, |  q- @
rgw_zone: # 存储区域名称(需全局唯一)* Q0 C4 @, Q/ T' Y6 _
' C3 s( c8 c. T& V: }# n6 ~4 F
rgw_zonegroup: # 区域组名称(逻辑分组) 3 {- s8 @- w0 `1 S: @8 E

6 \6 A! }0 e6 \rgw_frontend_port: # 服务监听端口* D; a5 x# c* F- P; o2 w! I

; K8 y( y; Q  y7 Jrgw_ssl_enabled: # 是否启用HTTPS
8 Q0 n/ K) `3 V: g  V
- P, t9 d) Y2 T- e4 n 三:补充配置建议& H" G: \+ x. F
认证配置(建议添加)
! {7 l+ Z3 \$ X4 x#yaml
1 J: `" k8 K) ~, K( |5 R6 f( p! m2 e
cephx: true # 启用认证
- U: C7 ~2 s' d# C1 n# c# g8 ^! J! u5 m+ w* b* R8 q# l3 u- `
client_admin_key: "AQD...==" # 管理员密钥(自己定义)' S) w. F/ {; c2 X% X4 ^
4 o# g% @! _& D# W& U
存储池配置
4 Z9 K$ l7 w, Q" I#yaml
! h9 U# T4 R% f+ T4 @, Y" x5 r- |$ y# ^: [
default_pool_replica: 3 # 默认副本数
# V( p8 F' D/ _( t' F2 ?8 f! P- S  \7 h
pgp_num: 128 # 放置组组合数/ j" G1 ^( @; d) \" e

4 D9 Q3 n' ~2 y+ p+ i监控集成9 a9 R1 \( i/ c3 I
#yaml8 p8 w0 z2 i1 N. F/ I5 r: e

  B5 m9 |8 E* V2 H: W* S2 ]$ yceph_dashboard_enabled: true
& d. k6 R' \2 s8 T3 _6 U- Z9 L& ]grafana_integration: true5 g. s5 p. J! P9 E" C$ q
prometheus_targets: # 监控服务器地址+ A0 V, `& L4 V% S! J% t
  - 192.168.1.100:9090
. J$ I) W: @% F4 V4 r; F* |9 E- G! v' E" ]* v# x
硬件优化
' u; Y8 D4 m8 `3 k5 x* }; T#yaml
; H  c6 `* N. `& ?3 u2 D" v  n/ k% c* S) w7 X  `
osd_memory_target: 4294967296    # OSD内存限制(4GB) , w# N2 s9 _) R7 l
# p; L8 w6 |" K, c
filestore_max_sync_interval: 5         # 文件存储同步间隔+ b' t: R/ L' D6 Q* V
# h' T$ C; }# I% k/ g/ N1 V
四:ansible执行注意事项# t6 [# C9 R# T1 x# w# b5 [& x4 C" h
准备 inventory 文件:4 ]3 [- x: {% _: Z/ D
#ini文件
) K1 T. o6 ]- v' F
$ x+ U! {& |) Z- I. X4 A) t3 `[mons]
. h& d, r( N7 kceph-mon1 ansible_host=192.168.1.101, J, U( Q% ~; W) c2 v: V4 K4 y8 m9 b
ceph-mon2 ansible_host=192.168.1.102, R& M+ F( W# L; H+ c+ J. r1 R
9 G' D0 N/ I6 B& \8 a! M
[osds]
* W, z3 o4 C6 `( _: [" Zceph-osd1 ansible_host=192.168.1.201
- p' m$ D! \1 o: Y/ X, Hceph-osd2 ansible_host=192.168.1.2021 E& A! U8 M, Q* _' \

! ?6 p. R6 S# p[mdss]
! X" D' H1 k) D3 g4 ?, }ceph-mds1 ansible_host=192.168.1.301  N: c" I. Y% E$ Q

6 ?2 h' _0 D; O) @, ^/ v2 }% `% \[rgws], l: q# Q& \  c' O& x6 M
ceph-rgw1 ansible_host=192.168.1.401
6 _9 ?* ?8 G# E9 g, b! M' t推荐使用官方 ceph-ansible 角色:# Z' m4 H  F# n; m0 H
yaml
2 {" ?7 |& i. C4 o. g
* u9 P! g& j$ Z. g' T0 t' H0 Hroles:/ i! ?0 n! P8 @
  - role: ceph-ansible
* c2 |0 t: R$ ~- D: a# N    vars:% s. ]0 o8 C- n/ I% E
      ceph_origin: repository% D  S  m( U' T
      ceph_repository: community' x" C% K+ b" d% ], l  b

' l6 \2 l6 M, m$ {# g+ H网络建议:
% X' H5 v. d' ?; v9 ~3 a% y9 w公共网络和生产网络分离
4 q* }& w" k) E7 {  E. ]* C- m& B! A7 C- }0 j# A4 ~5 O
每个OSD建议10GbE以上带宽
! ?! c9 v: n8 m7 C& ^: D' N8 Q) I
. v6 Z: z2 ]- h$ q; B6 |' {3 c! B监控节点使用SSD磁盘( c1 q8 I& E4 K
( L5 }" T5 y2 a5 C4 t. h5 ]
验证步骤:
( ?2 t, a, T  J* n/ u
8 Q9 F0 U7 Q9 G+ C7 m" F7 |) V# 检查集群状态/ F/ I" X+ V5 u' I
ceph -s
8 o9 m- f; k' o- s3 C1 s% ?7 G# L9 G8 `/ X* i+ ~" J
# 测试CephFS挂载
* V9 @9 K! ]3 p" Y% P8 `mount -t ceph mon1:6789:/ /mnt -o name=admin,secret=xxx( a8 C% E/ o6 \7 D: A2 u9 V( F
" \8 G/ I! \( r! `. J) ]% |
# 测试RGW访问5 a* M9 p; w* t# k) u9 u
s3cmd --no-ssl --host=rgw1:7480 ls% x) T, L8 b/ x" O' B4 a
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-3-9 00:33 , Processed in 0.047336 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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