易陆发现互联网技术论坛

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

怎样安装使用ceph ansible

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

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

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

x
Prerequisites: x, x0 J# d5 ^' S/ @8 N. G; j
Root Access to openstack Control Plane
/ [( {% {; W' |' b6 cRoot access to your cloud's control plane nodes is required.) E* a, o7 i" L5 e, D# C; O
$ w( g+ T7 t9 a  V
Path to the Ceph Configuration Files  h4 D1 v6 C) F
Ceph Ansible Inventory
) I- u7 s/ O& e$ t7 A. h# C# g9 x/etc/fm-deploy/ceph-inventory.yml
. ~+ G; q# S* i$ l4 y8 z5 Q. _( bCeph Ansible Config" g+ k; i) j' l* }/ P% h/ n+ }
/opt/ceph-ansible/group_vars/all.yml
8 o! r7 r, U6 |  K8 Q$ |3 o8 P' FPreparation
) ^6 [6 e$ V4 D, i3 jTo prepare Ceph Ansible:2 ]  N- ^  x7 }3 h: a+ x

! L! \1 P" S. @5 Wdocker cp fm-deploy:/opt/ceph-ansible /opt/ceph-ansible& w* _$ G1 I& O" u& ?0 i
chmod 700 /opt/ceph-ansible7 v% @/ Q0 f& R, B; u9 O4 b& ]
cd /opt/ceph-ansible" N3 h# I- n/ d$ J  V1 e; G5 ~" o* s
virtualenv .venv
7 Q6 T2 a+ [, }/ X% W' a. `1 Isource .venv/bin/activate
! D. f' V  B1 tpip install -r requirements.txt. e- o9 O0 F; j2 R
pip install six
# T" z0 _9 D* ?) U; P) T
8 Q) t% l' |7 d* q, ~! xDeploy a Ceph Cluster:
3 Y$ r( S0 l4 D, H5 }- ]( }3 z6 P  b" r" L
ansible-playbook \+ B# c7 A% w3 \1 [' y# S* w
    -i /etc/fm-deploy/ceph-inventory.yml \
* F$ F6 C8 e8 \. B    --private-key /root/.ssh/fm-deploy \
# a* h5 K& J; W& L7 E+ [: }    /opt/ceph-ansible/site.yml3 M. M; R6 h  m. P
1 e; m3 M4 K. b& T" B% w  [1 u
Attempt to repair a broken Ceph cluster:
+ r0 k2 P. x$ T- x5 N+ f2 v+ ^
! }; t/ [. S3 k3 v$ wansible-playbook \
: G' B7 x( w: w1 s& @    -i /etc/fm-deploy/ceph-inventory.yml \
! ~6 u' ^0 j1 Y3 j$ v2 V( y$ R    --private-key /root/.ssh/fm-deploy \3 q3 M5 |4 F# E  p$ F

( J( k3 J" b- E* \: o" `  u
 楼主| 发表于 2025-12-22 23:44:32 | 显示全部楼层
一:Ansible Playbook示例; r, P& {/ D0 M, L. Z
---
+ N1 j6 h9 T2 H) m# ansible-playbook -i inventory ceph-deploy.yml: [, y- B) r$ s% v' i; z

- ?- N( D/ Z  K! \/ H2 [+ u# ]- name: 部署 Ceph 集群基础组件& F; t; K- O  T  q: N
  hosts: mons,mgrs,osds  # 目标主机分组
4 t: C3 s9 w6 N0 T- O4 g0 K, e" j  become: yes  # 使用 root 权限
' J' w' g; R0 i2 c/ [% G  vars:- x% G4 D$ Z; j
    ceph_cluster_name: my-cluster  # 集群名称4 O% Q9 L3 q0 C7 P% p3 r  o% X$ {7 U
    ceph_fsid: "{{ lookup('password', '/dev/null chars=hex,ascii_letters length=32') }}"  # 自动生成唯一集群ID
6 E" l* l0 H6 X/ t4 q3 e) l" t8 v    ceph_mon_group_name: mons  # Monitor 主机组名称& I: f6 G+ @7 j% X* w
    ceph_mgr_group_name: mgrs  # Manager 主机组名称' h; |7 E: B( y" m" u9 v6 W6 T3 E
    ceph_public_network: 192.168.1.0/24  # 公共网络* J% a3 @2 }% k9 f3 J6 u9 O' p
    ceph_cluster_network: 10.0.0.0/24  # 集群内部网络
# m0 ~& z% ~4 ]' c
& `/ R8 Y6 A1 Q2 a% P2 L  tasks:
3 V+ m" G& ~' V. a' ]8 X    - name: 安装 Ceph 基础软件包
# m& [5 m3 S; z8 |      package:
* v6 D3 j+ T) e) ^! U        name: # D9 W/ ?8 |+ P* h2 F7 G! ?
          - ceph-mon
+ e/ x; Q- C  N  E5 f; w          - ceph-mgr4 r3 d  }* C/ M# O
          - ceph-osd
/ n1 d6 x! s. ]2 s- n; Y        state: present0 ^  i* a8 z8 A* A3 D% l; H+ \

/ |. g8 D  o) o  X$ n5 o    - name: 初始化 Monitor 节点- r8 s4 b0 I9 t( R0 q- t" F1 v
      command: ceph-mon --cluster {{ ceph_cluster_name }} --mkfs -i {{ inventory_hostname_short }}1 f0 L: s: K! y6 H2 h6 k8 Z* B& F  a
      when: inventory_hostname in groups[ceph_mon_group_name]
6 N! w- y; J2 z4 G- l! O+ g2 g- @
0 H) h7 ]7 k8 J9 [! F- name: 部署 OSD 节点
# N9 Z8 v; _8 b' V  hosts: osds
3 F" |9 w* r. P7 }- c8 y1 k  vars:1 f2 K1 E/ R) ~; `% v
    osd_devices:  # OSD 磁盘配置! J4 T& P$ b# {' Q7 f
      - /dev/sdb+ E1 j% A' M$ m( @1 ]5 C; U
      - /dev/sdc# V2 `! i, l6 r/ r3 C9 i6 T
    osd_journal_size: 5120  # 日志分区大小(MB)
; A: P  b* C- B  tasks:
  }4 X1 ]; Q+ U. ?" m/ v& t    - name: 创建 OSD
9 W; n% h: X' N+ |      command: ceph-volume lvm create --data {{ item }} --journal-size {{ osd_journal_size }}
0 p9 `! e% T9 Q0 I: j% s5 e      loop: "{{ osd_devices }}"
% l2 x9 j' Y; k: u4 S1 I8 l
/ O6 _+ w' J% F  S9 ]- name: 部署 CephFS
1 ?+ E- e! e" G: v  hosts: mdss  # MDS 节点组* m9 p( Z* ~- B2 d, V2 b
  vars:' ?& p% j' Z4 d9 n! {# F
    cephfs_name: myfs  # 文件系统名称
( c5 |; `6 D# T; D9 ^" Y    cephfs_data_pool: cephfs_data  # 数据池名称3 k" f7 c% K' q( ]
    cephfs_metadata_pool: cephfs_meta  # 元数据池名称) A1 O& _7 ^. j( y7 ?, A
    cephfs_pg_num: 128  # 放置组数量
$ d( Y) w% q' _9 b  tasks:
! F( H+ Q2 X: e: I    - name: 创建文件系统
( w4 S/ I7 I. \; y5 V, @. L1 V5 C      command: |
; q2 c5 p( K+ R- G6 `        ceph osd pool create {{ cephfs_data_pool }} {{ cephfs_pg_num }}
4 G1 h* P" _) o3 D5 ^        ceph osd pool create {{ cephfs_metadata_pool }} {{ cephfs_pg_num }}* @7 e, b& Y& P* k. {
        ceph fs new {{ cephfs_name }} {{ cephfs_metadata_pool }} {{ cephfs_data_pool }}8 ^2 v6 n3 O" O2 \3 F
0 e5 ^6 S; e( ?
- name: 部署 RGW 对象存储
+ y6 F0 [* r0 v6 c, ^- z! U  hosts: rgws
9 z- q7 L* l& c0 C' g% z0 ]  vars:( J! H1 t. }8 C7 y: f( \
    rgw_zone: myzone  # 存储区域名称) s1 a- h/ m/ [
    rgw_zonegroup: myzg  # 区域组名称
% ]3 Y1 x& N0 X% h- k$ ~    rgw_frontend_port: 7480  # 服务端口1 x8 b  T% P7 g9 t* B9 N; z4 o
    rgw_ssl_enabled: false  # 是否启用SSL2 B! P5 w$ S; G2 l4 T
  tasks:% \- L. M/ i3 L
    - name: 创建 RGW 实例
5 K1 Q6 ?) p& x5 ]      command: |
  x* a3 ~" p3 k+ H        ceph-deploy rgw create {{ inventory_hostname }} \
2 T/ _8 o; E; b0 e2 b          --rgw-zone {{ rgw_zone }} \5 U1 v: O4 b2 }/ l+ q6 S. A
          --rgw-zonegroup {{ rgw_zonegroup }} \
5 D$ h5 q6 T7 q% ?5 E$ t$ M( g( k7 V1 e          --rgw-frontends "client.port={{ rgw_frontend_port }}"7 ]  i2 Z! S  Z& I" `

" d5 x$ W7 F. o7 M& i" k' P- name: 验证集群状态# e, K$ H4 {5 I# g7 [, s  i; h# l2 P
  hosts: localhost
3 Z( M( Z4 x) _' W/ u$ L" {: F$ n% ^  tasks:7 q2 W5 r# |5 Y3 d4 O+ V
    - name: 检查集群健康状态: S* [, [' p% j. x) m/ h1 \
      command: ceph -s
/ F- @" D% ~# x" X/ W- |7 z; H# r      register: ceph_status
4 K- o' G. p, k& b1 \7 r- q0 I4 \      changed_when: false5 v, @! w" ?$ D" R) `$ P/ P3 @

  _6 Z  D, E& g5 {    - debug:; b4 l1 F+ Q& M; r4 p4 n: H0 x
        msg: "{{ ceph_status.stdout_lines }}"2 _/ N8 S8 P6 c1 v
AI构建项目
( T! t1 E) V0 \, r) r
* Z- k( R" O& J- T. c- y二:参数详细说明
* i4 u1 q$ T* i  P0 |主机组定义1 j$ r% i7 ]5 o- J: ]8 Q
mons: Monitor 节点组,负责集群状态维护
0 s* c+ T' o8 s# Z; j$ h9 _. l; h! ]- ~) s9 G) h5 k4 n
mgrs: Manager 节点组,负责指标收集和监控
# G; Z: y6 i( w2 F
2 l9 Z+ t: t, h" k3 a. Hosds: OSD 节点组,负责数据存储
1 W9 \4 W. ~) \* j  s9 \
2 ~; w5 E9 \' D. b# |mdss: MDS 节点组(CephFS 元数据服务)
6 Y0 k1 R8 ]0 T$ W  K& W$ e7 J3 l$ E4 q, g6 d% T
rgws: RGW 节点组(对象存储网关): L8 c: E$ [* n2 @! P2 g
  Y+ K0 H) R: \
核心参数" s4 I" V# V. L! n: C7 s) r
#yaml文件6 A+ b& L/ h8 e; `
  {4 j2 n) C' b6 o# M
ceph_cluster_name: my-cluster # 集群标识符
- U' f9 H9 \. y$ P8 @. P$ m3 X) y* `; Y
ceph_fsid: # 集群唯一ID,建议自动生成
" a5 @3 j# I0 H# Y0 W# _- x
1 y* \9 Y5 L# l+ a/ N) iceph_public_network: # 客户端访问网络
& u# U; T- B; k6 |( }* ?$ o+ X# l1 G2 k& p0 {+ B) k
ceph_cluster_network: # 数据同步内部网络
9 h! X3 a) ^1 N2 Y' j
' h+ A, z7 F% a' BOSD 配置
. F: _& t1 \6 G6 r#yaml8 b- ]; X  F7 [% U
& ^' H1 k; \! D
osd_devices: # 磁盘设备列表(根据实际修改)
9 c. K" A8 w4 e" Q* D  - /dev/sdb
# f, f0 J1 p) u# C# B0 x  - /dev/sdc
4 m6 H0 V8 Z+ kosd_journal_size: 5120 # 日志分区大小(MB); Z: |( ~* R+ W, Q

$ A/ a1 M' \: b* R4 o1 {6 TCephFS 参数
" w8 p; e* S* ~, U" L4 C#yaml文件
  v- e# \. A* C6 f4 H( x: @
* i2 o/ b+ t  C; [cephfs_name: myfs # 文件系统名称 ! T) {; x5 `2 J; Y/ `: t6 [

! D, v5 L, K, k) zcephfs_data_pool: # 数据存储池
1 I5 L1 O4 s) c2 I7 z* h4 f/ l; D
& U0 ~: z$ @/ x( P( F  N7 Zcephfs_metadata_pool: # 元数据存储池 0 _$ R3 _9 r$ s  E) L  z' }' `4 V

( N6 ~/ l/ ^3 M' A; o  O9 mcephfs_pg_num: # 每个池的PG数量(根据集群规模调整)+ _) d! y. I+ W' Y0 }: d
5 Z  d9 T: P9 T
RGW 参数
, K: @9 _  {1 {* k#yaml文件( K' `) ~6 |5 q. s4 ^

3 N' ?: m1 E' v& q( t$ m% Wrgw_zone: # 存储区域名称(需全局唯一)
7 r& r/ I1 m5 t5 x( c1 W& @5 I8 ?' |0 g( `# I6 O
rgw_zonegroup: # 区域组名称(逻辑分组) ) V# D. i1 w$ g  a: L- `, s! {8 d
, O) c; q0 {4 j% [, C+ m7 X1 f
rgw_frontend_port: # 服务监听端口9 a4 D7 `# l) p/ ^+ ~5 D: D
/ N( ]; D; i/ W3 F+ u' f0 b  W1 c
rgw_ssl_enabled: # 是否启用HTTPS' l5 K7 j9 l/ O/ P) e( @
8 D0 ]5 v; |1 A; x* T* |2 h$ \
三:补充配置建议
% }$ ~; M5 U; l( d- x* f+ e( g认证配置(建议添加)
. @1 ^3 B- V0 V% ~/ B#yaml
+ O6 N/ B% `" n( Y0 I# P( b" ?; S& y. E0 w; z$ R
cephx: true # 启用认证 $ J9 V- c* ?2 v7 G& p

9 R7 p  H7 l" Z  {+ k2 rclient_admin_key: "AQD...==" # 管理员密钥(自己定义)( k; }+ e; f9 u) s- w

5 W6 f- M9 p) ^$ T- I0 p, w存储池配置  V+ s) n: J5 T* ^) J2 R  Z
#yaml
0 y; @" w5 ]0 C0 v3 `9 @2 |1 v4 L6 s0 o
default_pool_replica: 3 # 默认副本数 . P- U; Q+ |! [" {5 }, k

; e' K; z6 c& e" u$ S* qpgp_num: 128 # 放置组组合数
  j9 k# s' N; s4 y: R
( c, {+ V' S2 O8 T  E监控集成7 Z0 S% D1 n( Y- ~3 W
#yaml
# f3 Y- Z- t$ N& L8 y3 c
# G2 Q2 c0 {3 X& U2 Bceph_dashboard_enabled: true: D9 v( |- {  W* p: X  u
grafana_integration: true! S4 q( n8 O* P- `9 h  \
prometheus_targets: # 监控服务器地址
8 O: Q1 A2 z% u8 P$ _+ P$ y  - 192.168.1.100:9090! ^9 A8 }7 e9 E1 C3 D7 V
2 B( K- t* A2 E, w) }/ u0 ?; l
硬件优化
+ v, i3 x7 E2 a" }% T+ E' m#yaml
. N; c( |4 ~+ U7 m7 H1 e9 U% O  R0 G) _6 |  `2 F
osd_memory_target: 4294967296    # OSD内存限制(4GB)
: N, f4 p( e. _4 O& H' z6 @+ a
filestore_max_sync_interval: 5         # 文件存储同步间隔
# `/ J  E: _& \: k
# X. N7 L4 t7 j( ^* D四:ansible执行注意事项2 t; H! S4 J* p! J8 r4 A3 P. W! U* b
准备 inventory 文件:
$ B5 N3 g: s: Q3 w% h#ini文件% o& D% t3 I& M6 K- y% _; M4 e

# K6 w0 d3 r# k, Z" i; g[mons]
& Z) y5 M2 L% V# _. `& S% hceph-mon1 ansible_host=192.168.1.101
# G9 k5 m) c+ G1 B$ W* \ceph-mon2 ansible_host=192.168.1.102
. |$ d# s5 J7 `; u8 l9 z2 d7 ?
5 s8 x9 [' Q; |: |' I3 R[osds]
" O% ~5 k/ p& n+ p$ s* iceph-osd1 ansible_host=192.168.1.201) A% {' U7 F% ~, ?$ U8 z
ceph-osd2 ansible_host=192.168.1.202. d3 a; I! @" w/ h+ I# h5 W5 v

5 |- v8 @: [# G. e[mdss]
( s  G' r$ w3 A+ |) H' x) Q( `ceph-mds1 ansible_host=192.168.1.301: k0 n% e8 L: L% A1 n" r

! R0 {0 J$ E- u[rgws]
" r1 t0 _: z1 s8 }  u& eceph-rgw1 ansible_host=192.168.1.401
" T3 G( N' I( E  S+ X$ h) b推荐使用官方 ceph-ansible 角色:+ l  o% I" g- A: R9 n8 ~' X
yaml( D6 N- O) Z7 Q- ?9 ?! ^9 l9 R
) Q5 D8 O) X* k: ]: d" A7 ^
roles:- A9 P1 Q1 v- j0 a  Y
  - role: ceph-ansible
. B' U7 o2 C/ \7 h0 b+ a    vars:* C. F4 X5 Y4 w- C
      ceph_origin: repository4 q  J4 U2 L4 a
      ceph_repository: community0 @+ C* n; [" z" \
: J, y0 F- K! i  c- n8 U& V
网络建议:8 x. z, H) L3 A1 }: ~! f* H
公共网络和生产网络分离0 ]$ s$ T* n* T- P
6 W. b; p% @1 J
每个OSD建议10GbE以上带宽" [, V* E3 k6 r1 j, K
# ?$ U( F" J, I& W0 G$ _! W
监控节点使用SSD磁盘
- h0 t. C& ]) d
! P1 d0 z3 t, z# P7 M2 `# w* d验证步骤:
' i4 B/ x6 K7 d" J
( Q" f7 {3 n, M# 检查集群状态) y( B/ _7 D0 B# E7 w0 p5 \; b  l9 K
ceph -s# w* l9 t4 |7 ^; b9 q5 w

" M* e) S, z- o( s4 X  E  U# 测试CephFS挂载# ~. I& ~1 D9 J. f
mount -t ceph mon1:6789:/ /mnt -o name=admin,secret=xxx* T+ F& u: w9 S" z% n* x

/ g% U& M, A  A+ p! n& E$ {# 测试RGW访问
  S, ~0 y1 T( U, cs3cmd --no-ssl --host=rgw1:7480 ls, j* B# S0 \8 j
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:19 , Processed in 0.066677 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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