找回密码
 注册
查看: 319|回复: 1

怎样安装使用ceph ansible

[复制链接]

0

主题

0

回帖

9

积分

管理员

积分
9
QQ
发表于 2025-12-20 22:38:29 | 显示全部楼层 |阅读模式
Prerequisites
1 O1 H- m" j4 n5 b" URoot Access to OpenStack Control Plane
% {3 A) d* e% i: ?4 {4 DRoot access to your cloud's control plane nodes is required.
" M$ ]2 s( A$ h- z! w
. {/ f# ~6 t6 _Path to the Ceph Configuration Files
* ~6 D- i' I; YCeph Ansible Inventory
2 X, m9 p. S: a6 Q; z% m/etc/fm-deploy/ceph-inventory.yml  |5 e, U0 b. m, q
Ceph Ansible Config
) n4 a3 J9 O  k  e( g5 m/opt/ceph-ansible/group_vars/all.yml
6 Q6 m* C' Z- B, W" g8 [Preparation
; l0 R; H/ h' r5 r' U3 zTo prepare Ceph Ansible:  @$ r1 I' D# ^. h

8 K2 Q( z% z" x$ B" h9 u, Sdocker cp fm-deploy:/opt/ceph-ansible /opt/ceph-ansible
/ g1 W, m9 S9 X! e" g! J: ?chmod 700 /opt/ceph-ansible
: y9 I& A7 w6 f8 ^$ xcd /opt/ceph-ansible$ N* S3 q) R3 h8 u& c6 x
virtualenv .venv; g- P4 Q) T% d
source .venv/bin/activate: ~; q' b3 s6 L' D2 J1 D; z: N
pip install -r requirements.txt, s. F' ^5 ?9 T
pip install six
( E4 I* u9 q" M7 {! J2 W+ S, v8 z3 E/ Q- J9 E( `* y/ ?
Deploy a Ceph Cluster:7 ?+ D- s4 n7 O3 U$ T) ~' N" N0 z5 }

9 l& r0 u3 h1 F3 K4 ransible-playbook \2 V9 j7 ?8 ]. |: G
    -i /etc/fm-deploy/ceph-inventory.yml \# J4 k- f+ O/ S0 B# t& \# d
    --private-key /root/.ssh/fm-deploy \
8 m9 b3 U* T% l4 I    /opt/ceph-ansible/site.yml
8 g- k. x) P& _
. Q' n- V4 w9 V7 n1 RAttempt to repair a broken Ceph cluster:
6 L$ T. ]9 o: B4 @4 G& |9 v! R) {
; b8 m& t* l0 d0 E" {: Mansible-playbook \
' K, V- j" O9 \0 z9 O    -i /etc/fm-deploy/ceph-inventory.yml \* S+ N9 u* n' ?
    --private-key /root/.ssh/fm-deploy \
* ^% X7 q# r: S) x$ C6 d- P
" r% y, R9 A% ~. Y2 n

0

主题

0

回帖

9

积分

管理员

积分
9
QQ
 楼主| 发表于 2025-12-22 23:44:32 | 显示全部楼层
一:Ansible Playbook示例
" E" G" a, h8 ?9 A- ^# D* U. J4 T---' i8 q! f! H; `" P# C
# ansible-playbook -i inventory ceph-deploy.yml
4 o( l& I1 G, x8 {. A $ d( ]! Q8 s! j$ G, x3 h
- name: 部署 Ceph 集群基础组件2 n. ]/ V/ T/ V; i2 d
  hosts: mons,mgrs,osds  # 目标主机分组' ?8 U: _5 ?. ?' S+ Y% H, {# b
  become: yes  # 使用 root 权限8 H( B! g8 s+ {0 ]) K
  vars:
5 }: R8 d; v2 d' l  A9 Q6 g    ceph_cluster_name: my-cluster  # 集群名称
1 s$ r  e( a3 N+ |  {+ c. N    ceph_fsid: "{{ lookup('password', '/dev/null chars=hex,ascii_letters length=32') }}"  # 自动生成唯一集群ID
! ~, Z6 b, ?/ |; n5 E. W5 Q) ?    ceph_mon_group_name: mons  # Monitor 主机组名称& T5 k( D: X# A1 l1 o& x& n
    ceph_mgr_group_name: mgrs  # Manager 主机组名称. ?) M/ P- J9 S) K  b1 {, l
    ceph_public_network: 192.168.1.0/24  # 公共网络, S0 g" C( q! b( p, m
    ceph_cluster_network: 10.0.0.0/24  # 集群内部网络
: c% b$ w* H4 o- D. i) p% E 1 s' b7 u% A+ l' h8 o
  tasks:- C- |0 b5 g6 Y7 s& o& X
    - name: 安装 Ceph 基础软件包
1 m1 w& i# B! [: X1 c" x      package:7 N% ?+ k; m) _0 t/ [
        name: 4 B3 F! b0 x! o
          - ceph-mon
9 W' c( t2 @! |! R( I# V          - ceph-mgr% r$ _8 ?: K; x; v! W
          - ceph-osd
* j7 X& ]2 Y7 a+ B        state: present1 @5 b0 g, E, B9 E% b: D
8 y/ {# l- }' {( Q0 g+ M
    - name: 初始化 Monitor 节点0 _3 X5 w$ X" W7 m2 Y- p, }; k& f
      command: ceph-mon --cluster {{ ceph_cluster_name }} --mkfs -i {{ inventory_hostname_short }}
, U4 d5 @6 e* W  ~- [2 v9 q* i      when: inventory_hostname in groups[ceph_mon_group_name]* V7 C' i. m) w( \5 ]

" \" ~4 l( [4 _1 r3 N6 ?0 a9 t- name: 部署 OSD 节点
1 o9 _! O3 x' O  hosts: osds3 R6 E4 p$ ~5 z! U" d* |
  vars:  O! W* I7 v6 j, A
    osd_devices:  # OSD 磁盘配置4 U. d) J; e$ C
      - /dev/sdb
! v' d6 o) D. ^  t+ D( L6 B  n" `3 E      - /dev/sdc
  B9 L  e# J% E& e2 z- g/ O    osd_journal_size: 5120  # 日志分区大小(MB)
' y+ ^6 O9 a( m, i" v" p1 G  tasks:$ k8 A8 g6 ]# Q( ?/ x5 y
    - name: 创建 OSD
& R, ^4 T- X: h8 a      command: ceph-volume lvm create --data {{ item }} --journal-size {{ osd_journal_size }}' ]% c" F) j! E4 P$ H9 h
      loop: "{{ osd_devices }}"
0 s, U, A/ n( T. Y/ |# }) u5 O
* }+ E/ z4 |5 O7 b& U. I/ P- name: 部署 CephFS# K- C; v* b" \4 w2 q  r
  hosts: mdss  # MDS 节点组
: k4 ~1 [/ X/ M' d, e0 M  u  vars:
! k' h( H: M2 E( r- e- J7 |3 h    cephfs_name: myfs  # 文件系统名称
6 C- Y: v" _0 n' Z    cephfs_data_pool: cephfs_data  # 数据池名称
' W- x" h2 G4 M: s  Y4 T" U    cephfs_metadata_pool: cephfs_meta  # 元数据池名称
& D- R" q7 f% Q* e! M# I    cephfs_pg_num: 128  # 放置组数量* D2 W8 L  U4 Z: i3 h) i& b
  tasks:. I; n& S: ?$ D' X! I2 i* E
    - name: 创建文件系统
. t2 n( K0 D3 j: e/ r6 T5 R      command: |
" p: ]$ B8 p3 z* x0 {2 g4 M        ceph osd pool create {{ cephfs_data_pool }} {{ cephfs_pg_num }}
, Q* x# E# [; `! j+ ?% D% ?        ceph osd pool create {{ cephfs_metadata_pool }} {{ cephfs_pg_num }}0 C0 c* l- Z0 {. \& m% o" K( l
        ceph fs new {{ cephfs_name }} {{ cephfs_metadata_pool }} {{ cephfs_data_pool }}. Y- H0 N  i* o0 \( t0 {) L8 a

+ e6 y! z0 P% S- name: 部署 RGW 对象存储
2 D- B. q  @7 h' h  hosts: rgws, w" u- A6 c3 e" ?4 M% A# h
  vars:
  ?$ K' O; O7 N) c& r1 w, _    rgw_zone: myzone  # 存储区域名称
0 W9 U+ i9 r: t; \    rgw_zonegroup: myzg  # 区域组名称
3 G/ A1 O0 T: ]0 q! x/ t0 y, N    rgw_frontend_port: 7480  # 服务端口
2 \' n, F1 i; {    rgw_ssl_enabled: false  # 是否启用SSL
6 h; A$ z% ~/ a7 R1 b0 s  tasks:; w8 h! d. d4 [: s6 ?
    - name: 创建 RGW 实例
" q5 o8 V+ G( O$ p% z; }" O      command: |
; n, C# |, e9 U4 I" O        ceph-deploy rgw create {{ inventory_hostname }} \
3 [5 H5 i9 O' |4 j+ @- M2 N          --rgw-zone {{ rgw_zone }} \
2 a9 Y8 Q& C3 v: T          --rgw-zonegroup {{ rgw_zonegroup }} \/ F$ w; O1 k# x8 l  I
          --rgw-frontends "client.port={{ rgw_frontend_port }}"
( m0 f3 }* @# v. t3 s
; x, ]/ O4 m% c! f7 Z- name: 验证集群状态
/ i+ I! ?+ g+ H- a, I  hosts: localhost3 S% h; V. |. G+ C1 [, p5 l6 B
  tasks:
( E- T6 m) I7 y% _8 G5 o1 N    - name: 检查集群健康状态
* Y% T  R8 Q' c/ V      command: ceph -s
% L2 G! r" _" a9 T& N! p1 t- ]; b      register: ceph_status( G2 I' T$ r. p0 F; h8 p
      changed_when: false
# ]/ x: m( x3 ~4 K0 ~3 b) \
  r1 @$ x" @- x: m. C5 d/ V    - debug:
/ Q& F5 R1 N" M' b% O! }& Z" y        msg: "{{ ceph_status.stdout_lines }}"- i$ a! j5 k; ^: C& k
AI构建项目
+ P6 Z1 D6 _3 h+ \
+ L! z2 F4 X& R' G. }* V二:参数详细说明
. n* u7 }+ \8 Y" G; }, Q1 ?主机组定义
  i! B+ w$ f9 F9 Bmons: Monitor 节点组,负责集群状态维护% f3 m, [8 ]3 p

4 u, r  V: F2 P2 ^( ^& bmgrs: Manager 节点组,负责指标收集和监控1 m; b$ I7 @/ Q4 a' E) w! D

1 x# S6 L7 L- K% i! v+ ]osds: OSD 节点组,负责数据存储, o- X* o# z8 ]  g3 i) u. @' r
- c! r" f! W7 C9 H
mdss: MDS 节点组(CephFS 元数据服务)
3 ?8 Q8 Q+ ^! [7 B
0 Y" N; `% h' _3 C7 L# i; ^rgws: RGW 节点组(对象存储网关), ]5 s3 R' w) [8 i$ w

6 M# y, P3 t9 P7 \) H! n核心参数, Q3 h9 v6 N0 O7 s& [
#yaml文件
1 b7 L# \+ z  B/ ^) s
$ N" j! E, Z# `' a: x& Xceph_cluster_name: my-cluster # 集群标识符
5 e2 M5 W7 D$ v' g
4 N, G$ m4 V+ a$ l. |ceph_fsid: # 集群唯一ID,建议自动生成
. a5 t+ ]+ C* [& w( O2 ~, S( O4 U/ r1 P
ceph_public_network: # 客户端访问网络
! r0 @9 Q" F+ t2 c' j: f. w* a' w2 T" E7 \7 Z% T$ U
ceph_cluster_network: # 数据同步内部网络+ O) n3 I0 q6 q5 l4 q9 Z
. W* d% }4 ^% X% C, v4 t% S4 x! N
OSD 配置
, j8 K, E! M  p/ Q# ]% s4 p#yaml
* t1 A4 W; ?! D- o* f& x2 l! _' s8 a, n  f; E* W3 \4 ]" e8 G
osd_devices: # 磁盘设备列表(根据实际修改)$ l( b. G+ p4 i+ I) P; {
  - /dev/sdb0 b8 h, ~# Z9 K
  - /dev/sdc
/ {& ^( `) M2 P: j# ]# w6 P! Xosd_journal_size: 5120 # 日志分区大小(MB)! S  I" l7 E, E6 H. b# @
' V: E: D: a! H( V+ }! m
CephFS 参数% q% m! a+ O1 S: L' _6 w& B( t
#yaml文件$ X! w9 z) P/ O2 \( y7 c" }

+ ~- H+ e1 ?7 l/ K# U5 Y9 ?, W+ H6 Lcephfs_name: myfs # 文件系统名称
. n+ N( i8 E+ H* o3 F. l( `7 O
7 d0 v! j8 ~  X( g/ D; f5 zcephfs_data_pool: # 数据存储池
/ V. ~* d# O! d
/ {/ q" F( w$ H$ Z! R0 l3 X3 hcephfs_metadata_pool: # 元数据存储池 0 q; D3 ?# h" H" q8 F8 W
5 S/ `( \# g: T- d
cephfs_pg_num: # 每个池的PG数量(根据集群规模调整)
3 _2 d. K2 K9 y  l& \. N" t* i& s5 A6 K4 ?
RGW 参数8 Y' C9 B: S8 G' W' W
#yaml文件2 f- `6 p) R$ c

( L. [' R7 p9 Trgw_zone: # 存储区域名称(需全局唯一)
: T" l( m( T  Y$ j0 W- a' _4 K$ b/ Q+ D
rgw_zonegroup: # 区域组名称(逻辑分组)
3 A3 }. {. T& D$ E5 q- c
: [- u& {; A  i" n' [( d8 argw_frontend_port: # 服务监听端口
4 ~( c! @( X. V. J* B# e$ k+ @3 K4 [' t% \. I
rgw_ssl_enabled: # 是否启用HTTPS
. Z0 ^# s) e# R0 Q0 ^. @
5 K8 |6 B, j9 _0 |$ [+ i 三:补充配置建议
* ^! y1 V4 q  Y5 s认证配置(建议添加)
2 H# \# b1 p( |5 P/ [$ {% X#yaml4 m$ ^& z% I8 G+ E7 a) n7 G
( h) M6 k" I* V: J
cephx: true # 启用认证 # W8 m4 ~; \) M: r& f

, T- g0 Q- B9 Zclient_admin_key: "AQD...==" # 管理员密钥(自己定义)9 E6 b5 R3 o1 e( k: b

) ?2 r$ q# L* {) R5 m存储池配置
( X3 ]% m* f! a( R( p: x, Y#yaml
9 u2 u6 q. ^( H, S1 O7 b% a6 E" n4 V8 q) N
default_pool_replica: 3 # 默认副本数
5 b6 y& @( R1 \2 h: C5 X! e
0 s& |" b6 l# y0 O" ]1 ]# |' o$ x1 ]pgp_num: 128 # 放置组组合数
' r. h) Y4 L" x7 i- V% r3 l* V: r* I& ]: j
监控集成7 i4 B! k3 p# C  z
#yaml/ e5 ~- \. W+ w6 A( D; m% o* C

1 a* K* L' u& M* E  L; ]ceph_dashboard_enabled: true; v/ Z5 v5 `) f/ [( Y- q
grafana_integration: true
' i" s2 {* u( p5 V( r" Y# k; k3 tprometheus_targets: # 监控服务器地址
) Q& z( c* o4 L5 t, D  - 192.168.1.100:9090& X: n" M; _. ]8 W2 o

( y/ R1 d5 T. J, Z* C硬件优化
7 h9 N, d# v8 }1 p#yaml
6 B! x9 r- W) a* o1 y5 f& J- Q
. d( y: q) c- `3 D' N6 n: w0 wosd_memory_target: 4294967296    # OSD内存限制(4GB) : n, V0 x/ |3 @/ q1 h1 W
5 C: h# D3 I8 |4 i( Y% g9 m
filestore_max_sync_interval: 5         # 文件存储同步间隔8 _$ }; g% x! t1 k

/ V. F7 c$ H: T四:ansible执行注意事项7 O# l. T- C: w" O: x$ J, F5 C" {
准备 inventory 文件:  H! Z8 r- D4 r9 O- O$ V. x9 u
#ini文件
( ^1 ]" M6 T6 Z& @9 M0 Q- E2 T- U
[mons]
$ p2 ?. o+ @5 i; j9 U9 qceph-mon1 ansible_host=192.168.1.101
( s9 c& i& G4 u3 aceph-mon2 ansible_host=192.168.1.102, @. J" b- `7 A5 w. ]
/ `! F: g5 o' r4 Z+ o# ?- V& v" b
[osds]0 o6 J( q7 s( U- Q4 p; X
ceph-osd1 ansible_host=192.168.1.201
0 ^. C9 X+ a: d  X$ Tceph-osd2 ansible_host=192.168.1.202
3 }# B. a5 y+ }
" K7 H: a/ T: I( U5 Y" J# U& Y[mdss], O; \- U; V3 c+ A# z+ u
ceph-mds1 ansible_host=192.168.1.301& y& `7 ]; G" I

% j4 u  W. k& F[rgws]: \  {6 }$ X" ^+ o8 \$ Q" }) Y
ceph-rgw1 ansible_host=192.168.1.4018 E4 H; {" d  [5 m7 v5 ^
推荐使用官方 ceph-ansible 角色:- k1 E* [$ p  _. f3 [) f
yaml
* z& e3 k! @# y  M* W, ]5 y
2 o' g8 r* l  W" N) zroles:
6 J5 C' V/ Z5 e. K  - role: ceph-ansible
8 K+ ~. N5 X0 a' A9 h3 X# h* o    vars:5 q# w" \' @" ?6 |9 X* b& n( @7 c% P
      ceph_origin: repository
* |7 R% g) x% d      ceph_repository: community
& g4 r/ X" m% H/ K! ?, L7 O
! G( z; U6 T6 m) h/ _4 t网络建议:
. D( y4 {6 B# Y1 ]6 p公共网络和生产网络分离
) I6 \# o% N6 r; B& m  F, @7 y) H3 S. u6 ~" \. [8 k; A/ @
每个OSD建议10GbE以上带宽; `8 e7 X- S7 }' y: u3 }

1 b# a$ Y0 M& ]! r9 f: }. Q监控节点使用SSD磁盘
( W6 E( e7 r5 H- ?- \! K
0 L0 d+ H* o0 ?+ u7 s8 b+ o. x: }验证步骤:+ c( \, [/ O: ^& p

1 g. H% |3 `; W0 D# 检查集群状态+ H. [* l! I& b4 z9 F  b
ceph -s3 C) x8 K  |% V, ?  Z4 {

8 Y0 k  k' Y! E' r: J7 f# 测试CephFS挂载
2 M, w) k! M; vmount -t ceph mon1:6789:/ /mnt -o name=admin,secret=xxx3 H9 D" r2 ?5 r" |+ L7 y& P
! S; k2 Q7 O( f5 J, l  g
# 测试RGW访问3 e$ t0 U- q7 y* W5 N! k( ~- P3 G* G
s3cmd --no-ssl --host=rgw1:7480 ls
: Q# D6 q5 U, U; L1 G( n3 m% G
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-11 22:56 , Processed in 0.019385 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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