Ceph集群部署实战

小编 2026-06-07 阅读:1917 评论:0
建议系统内核升级到4.x,不然容易出各种问题,不要给自己找不必要的麻烦。 [root@ceph-admin ceph-ansible-3.1.7]# more hosts [admins] 1...

建议系统内核升级到4.x,不然容易出各种问题,不要给自己找不必要的麻烦。

[root@ceph-admin ceph-ansible-3.1.7]# more hosts

[admins]
10.20.4.10

[osds]
10.20.4.21
10.20.4.22
10.20.4.23

[rgws]
10.20.4.11
10.20.4.12
10.20.4.13

[mds]
10.20.4.31

[clients]
10.20.4.51

[rbdmirrors]
10.20.4.51

[mons]
10.20.4.1
10.20.4.2
10.20.4.3

[mgrs]
10.20.4.1
10.20.4.2
10.20.4.3

[agents]
10.20.4.51

#192.168.12.21 master.cityworks.cn master
10.20.4.1 mon1.cityworks.cn mon1
10.20.4.2 mon2.cityworks.cn mon2
10.20.4.3 mon3.cityworks.cn mon3
10.20.4.21 osd1.cityworks.cn osd1
10.20.4.22 osd2.cityworks.cn osd2
10.20.4.23 osd3.cityworks.cn osd3
10.20.4.10 ceph-admin.cityworks.cn ceph-admin
10.20.4.11 rgws1.cityworks.cn rgws1
10.20.4.12 rgws2.cityworks.cn rgws2
10.20.4.13 rgws3.cityworks.cn rgws3
10.20.4.31 mds1.cityworks.cn mds1

组名称 虚拟机名称

1.自动创建虚拟机 (OK)
1.1 确保虚拟机有2个磁盘 一个是系统本身的 默认是/dev/sda, 另外是/dev/sdb /dev/sdc
至少需要/dev/sdb 我是都在osd 主机上创建的,每个创建500GB 也就是 /dev/sdb 容量500GB .
这个可以通过ansible 自动化完成.

2.设置免密码登陆 (ok)

3.关闭所有yum repo 源头,设置yum 源头,请把docker-ce.repo 重命名一下,这个连接到国外,老卡住,容易导致安装失败.

  1. ceph-admin 安装ansible 安装虚拟环境
    4.1 确保你的虚拟机已经有了python
    4.2 安装虚拟机环境
    5.切换到虚拟环境
    source venv/bin/activate

  2. 在ceph-admin 虚拟机上 安装指定版本的ansible
    6.1 切换目录 cd /home/ceph

6.2 用pip执行安装ansible #务必严格按照官方文档的要求来,ansible版本过新或旧都会有各种报错。 这里注意不要用yum install ansible
pip install ansible==2.4.2

或者用git 下载
#6.2 下载ceph-ansible 部署脚本
wget -c https://github.com/ceph/ceph-ansible/archive/v3.1.7.tar.gz
tar xf v3.1.7.tar.gz
cd ceph-ansible-3.1.7
或 git clone https://github.com/ceph/ceph-ansible.git
cd ceph-ansible
git checkout remotes/origin/stable-3.2 # 这里刚好没有3.1.7 版本。

#在虚拟环境里安装依赖包
pip install -r requirements.txt

  1. 准备好配置文件

cp group_vars/all.yml.sample group_vars/all.yml
cp group_vars/osds.yml.sample group_vars/osds.yml
cp site.yml.sample site.yml

vim group_vars/all.yml

[root@ceph-admin group_vars]# more all.yml
ceph_origin: repository
ceph_repository: community
ceph_mirror: http://mirrors.163.com/ceph
ceph_stable_key: http://mirrors.163.com/ceph/keys/release.asc
ceph_stable_release: luminous
ceph_stable_repo: “{{ ceph_mirror }}/rpm-{{ ceph_stable_release }}”

#fsid: 82D6CE06-6E92-4C2A-AB26-11FF63B7E67D ##通过uuidgen生成
fsid: 82d6ce06-6e92-4c2a-ab26-11ff63b7e67d ##通过uuidgen生成 建议改成小写的,大写的之前运行脚本有问题会报错.
generate_fsid: false

cephx: true

public_network: 10.20.0.0/16
cluster_network: 10.20.0.0/16
monitor_interface: ens160

ceph_conf_overrides:
global:
rbd_default_features: 7
auth cluster required: cephx
auth service required: cephx
auth client required: cephx
osd journal size: 2048
osd pool default size: 3
osd pool default min size: 1
mon_pg_warn_max_per_osd: 1024
osd pool default pg num: 128
osd pool default pgp num: 128
max open files: 131072
osd_deep_scrub_randomize_ratio: 0.01

mgr:
mgr modules: dashboard

mon:
mon_allow_pool_delete: true

client:
rbd_cache: true
rbd_cache_size: 335544320
rbd_cache_max_dirty: 134217728
rbd_cache_max_dirty_age: 10

osd:
osd mkfs type: xfs
# osd mount options xfs: “rw,noexec,nodev,noatime,nodiratime,nobarrier”
ms_bind_port_max: 7100
osd_client_message_size_cap: 2147483648
osd_crush_update_on_start: true
osd_deep_scrub_stride: 131072
osd_disk_threads: 4
osd_map_cache_bl_size: 128
osd_max_object_name_len: 256
osd_max_object_namespace_len: 64
osd_max_write_size: 1024
osd_op_threads: 8

osd_recovery_op_priority: 1
osd_recovery_max_active: 1
osd_recovery_max_single_start: 1
osd_recovery_max_chunk: 1048576
osd_recovery_threads: 1
osd_max_backfills: 4
osd_scrub_begin_hour: 23
osd_scrub_end_hour: 7

# bluestore block create: true
# bluestore block db size: 73014444032
# bluestore block db create: true
# bluestore block wal size: 107374182400
# bluestore block wal create: true

vim group_vars/osds.yml
devices:

  • /dev/sdb

- /dev/vdd

- /dev/vde

osd_scenario: collocated
osd_objectstore: bluestore

#osd_scenario: non-collocated
#osd_objectstore: bluestore
#devices:

- /dev/sdc

- /dev/sdd

- /dev/sde

#dedicated_devices:

- /dev/sdf

- /dev/sdf

- /dev/sdf

#bluestore_wal_devices:

- /dev/sdg

- /dev/sdg

- /dev/sdg

#monitor_address: 192.168.66.125

注释不需要的组件

vim site.yml

Defines deployment design and assigns role to server groups

  • hosts:
    • mons

- agents

  • osds
  • mdss

- rgws

- nfss

- restapis

- rbdmirrors

  • clients
  • mgrs

- iscsigws

- iscsi-gws # for backward compatibility only!

[root@ceph-admin group_vars]# more osds.yml
devices:

  • /dev/sdb
    osd_scenario: collocated
    osd_objectstore: bluestore

#osd_scenario: non-collocated
#osd_objectstore: bluestore
#devices:

- /dev/sdc

- /dev/sdd

- /dev/sde

#dedicated_devices:

- /dev/sdf

- /dev/sdf

- /dev/sdf

#bluestore_wal_devices:

- /dev/sdg

- /dev/sdg

- /dev/sdg

#monitor_address: 192.168.66.125

注释不需要的组件

vim site.yml

Defines deployment design and assigns role to server groups

  • hosts:
    • mons

- agents

  • osds
  • mdss

- rgws

- nfss

- restapis

- rbdmirrors

  • clients
  • mgrs

- iscsigws

- iscsi-gws # for backward compatibility only!

客户端卸载pip中安装的urllib3,不然会失败

pip freeze|grep urllib3
pip uninstall urllib3

ansible-playbook -i hosts site.yml

至此ceph部署完成,登陆ceph节点检查状态。

清空集群
如果部署过程中出现报错,建议先清空集群 再进行部署操作

cp infrastructure-playbooks/purge-cluster.yml purge-cluster.yml # 必须copy到项目根目录下
ansible-playbook -i hosts purge-cluster.yml

创建客户端访问环境:
[root@mon1 ~]# ceph auth get-or-create client.rbd mon ‘allow r’ osd ‘allow class-read object_prefix rbd_children,allow rwx pool=rbd’
[client.rbd]
key = AQAMyxxc1zSRBRAAhp8HTqmXXky8azntPF7gdQ==
[root@mon1 ~]#

[root@mon1 ~]# ceph auth get-or-create client.rbd | ssh ceph@client1 sudo tee /etc/ceph/ceph.client.rbd.keyring
The authenticity of host ‘client1 (10.20.4.51)’ can’t be established.
ECDSA key fingerprint is SHA256:1Li21Z7NsbSmDsHubXT2R7tYFNM003JYfEuSuV8mSJ4.
ECDSA key fingerprint is MD5:b9:d0:23:5d:12:26:84:b9:76:a6:d6:7a:e9:9a:b0:46.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘client1,10.20.4.51’ (ECDSA) to the list of known hosts.
ceph@client1’s password:
[client.rbd]
key = AQAMyxxc1zSRBRAAhp8HTqmXXky8azntPF7gdQ==
[root@mon1 ~]#

#在client1 上操作
cat /etc/ceph/ceph.client.rbd.keyring >> /etc/ceph/keyring

Since we are not using the default user client.admin we

need to supply username that will connect to the Ceph cluster
ceph -s --name client.rbd

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表