ceph ansible部署ceph集群

ceph ansible部署ceph集群

参考:https://docs.ceph.com/ceph-ansible/master/

项目地址:https://github.com/ceph/ceph-ansible

节点规划:

主机名public-ip磁盘角色
node1192.168.93.20系统盘: sda
osd盘: sdb
ceph-ansible,monitor,mgr,mds,osd
node2192.168.93.21系统盘: sda
osd盘: sdb
monitor,mgr,mds,osd
node3192.168.93.22系统盘: sda
osd盘: sdb
monitor,mgr,mds,osd

基本配置

所有节点配置主机名

hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3

配置hosts解析

cat >> /etc/hosts <<EOF
192.168.93.20 node1
192.168.93.21 node2
192.168.93.22 node3
EOF

配置防火墙和时间同步

#关闭防火墙和selinux
systemctl disable --now firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

#配置时间同步
yum install -y chrony
systemctl enable --now chronyd

添加节点SSH互信

ssh-keygen -t rsa
ssh-copy-id root@node1
ssh-copy-id root@node2
ssh-copy-id root@node3

由于ceph ansible安装docker版本较低,这里提前手动安装docker

#安装docker依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

#阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装docker-ce
yum install -y docker-ce

#修改docker配置
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com"]
}
EOF

#启动docker服务
systemctl enable --now docker

安装ceph集群

克隆存储库:

yum install -y git
git clone https://github.com/ceph/ceph-ansible.git

#网络较慢时其他克隆方式
git clone https://github.com.cnpmjs.org/ceph/ceph-ansible.git

接下来,必须确定ceph-ansible要使用哪个分支。有稳定的分支可供选择,或者可以使用master分支,这里安装nautilus版本。

cd ceph-ansible
git tag
git checkout v4.0.9

配置阿里云pip源

mkdir ~/.pip
cat > ~/.pip/pip.conf << EOF 
[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple/
EOF

使用pip和提供的requirements.txt安装Ansible和其他所需的Python库:

yum install -y python-pip
pip install -U pip
pip install -r requirements.txt

release版本

根据需求选择以下分支,其中stable-*分支已经过QE测试,master分支应视为实验性分支,请谨慎使用。

  • stable-3.0支持Ceph版本jewel和luminous。该分支需要Ansible版本2.4。
  • stable-3.1支持Ceph版本luminous和mimic。该分支需要Ansible版本2.4。
  • stable-3.2支持Ceph版本luminous和mimic。该分支需要Ansible版本2.6。
  • stable-4.0支持Ceph版本nautilus。该分支需要Ansible版本2.8。
  • stable-5.0支持Ceph版本octopus。该分支需要Ansible版本2.9。
  • master支持Ceph的master分支。该分支需要Ansible版本2.9。

配置和使用

为Ceph集群创建inventory文件,playbook和配置文件。

配置inventory

Ansible inventory文件定义了集群中的主机以及每个主机在Ceph群集中扮演的角色。inventory文件的默认位置是/etc/ansible/hosts但是可以将该文件放置在任何位置并与ansible-playbook -i 参数一起使用。

inventory文件示例如下所示:

mkdir -p /etc/ansible
cat > /etc/ansible/hosts << EOF
[mons]
node1
node2
node3

[osds]
node1
node2
node3

[mdss]
node1
node2
node3

[mgrs]
node1
node2
node3
EOF

配置playbook

该ceph-ansible项目的根目录有一个示例playbook,名为site.yml.sample。该playbook在大多数情况下都可以正常工作,但默认情况下,它包括了可能不适用于集群设置的每个daemon group 。执行以下步骤来准备剧本。

重命名示例playbook,根据集群的需要对playbook进行修改:

cp site.yml.sample site.yml

配置变量

Ceph集群的配置将通过使用ceph-ansible提供的ansible变量进行设置。所有这些选项及其默认值都在ceph-ansible项目group_vars/目录中定义。在group_vars/目录下,有许多示例Ansible配置文件,它们通过文件名与每个Ceph守护程序组相关。例如,osds.yml.sample包含OSD守护程序的所有默认配置。该all.yml.sample文件是一个特殊group_vars文件,适用于群集中的所有主机。

在最基本的级别上,必须告诉ceph-ansible要安装的Ceph版本,安装方法,集群网络设置以及如何配置OSD。要开始配置,请重命名group_vars/您要使用的每个文件,以使其在文件名的末尾不包含.sample,请取消要更改选项的注释并提供你自己的值。

使用lvm batch方法部署Ceph上游版本octopus的示例配置如下所示group_vars/all.yml:

[root@node1 ceph-ansible]# cd group_vars/

cp all.yml.sample all.yml

cat >> all.yml <<EOF
configure_firewall: False
ceph_origin: repository
ceph_repository: community
ceph_stable_release: nautilus
ceph_mirror: http://mirrors.aliyun.com/ceph
ceph_stable_key: http://mirrors.aliyun.com/ceph/keys/release.asc
ceph_stable_repo: "{{ ceph_mirror }}/rpm-{{ ceph_stable_release }}"
public_network: "192.168.93.0/24"
cluster_network: "192.168.93.0/24"
monitor_interface: ens33
cephx: true

devices:
  - '/dev/sdb'
ceph_conf_overrides:
   mon:
     mon_allow_pool_delete: true  
EOF

执行部署

ansible-playbook -i /etc/ansible/hosts site.yml

维护集群

ceph-ansible在infrastructure-playbooks目录中提供了一组playbook,以便执行一些基本的操作。

添加osd

$ cat hosts
[mons]
mon-node-1
mon-node-2
mon-node-3

[mgrs]
mon-node-1
mon-node-2
mon-node-3

[osds]
osd-node-1
osd-node-2
osd-node-3
osd-node-99

$ ansible-playbook -vv -i hosts site-container.yml --limit osd-node-99

缩小osd

$ ansible-playbook -vv -i hosts infrastructure-playbooks/shrink-osds.yml -e osd_to_kill=1,2,3

清理集群

ansible-playbook -vv infrastructure-playbooks/purge-container-cluster.yml
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值