Ceph容器化部署(离线环境)

前提:各节点已安装docker,已部署好局域网docker registry
1、节点规划

172.17.47.85 aipaas0    admin(启动mon、osd、mgr)
172.17.47.86 aipaas1    node1(启动mon、osd)
172.17.47.88 aipaas2    node2(启动mon、osd)
172.17.47.90 aipaas3    node3(启动mon、osd)docker registry

2、设置
2.1在每台机器都添加hosts

vim /etc/hosts

添加如下内容
172.17.47.85 aipaas0
172.17.47.86 aipaas1
172.17.47.88 aipaas2
172.17.47.90 aipaas3
2.2设定网卡开机启动

grep ONBOOT /etc/sysconfig/network-scripts/ifcfg-xxx

ONBOOT=yes
最终保证ONBOOT为yes,若不为yes则vim修改配置文件
2.3关闭防火墙和selinux

systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

禁用 SELINUX:修改配置文件(重启生效)+ 手动设定(立即生效)

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

配置修改的确认:

grep SELINUX= /etc/selinux/config
getenforce

2.4配置 SSH(生成公秘钥实现免密访问)
免密访问的目的:用于后面能通过admin节点来部署各分节点。
生成公秘钥文件,并拷贝公钥到各个节点

ssh-keygen        #(需要输入的地方都直接回车,表示不需要密码)
ssh-copy-id root@aipaas0
ssh-copy-id root@aipaas1
ssh-copy-id root@aipaas2
ssh-copy-id root@aipaas3

2.5添加或修改配置文件
有些系统中是没有这个文件,则需要添加

vim /root/.ssh/config
Host aipaas0
   Hostname aipaas0
   User root
Host aipaas1
   Hostname aipaas1
   User root
Host aipaas2
   Hostname aipaas2
   User root
Host aipaas3
   Hostname aipaas3
   User root

2.6配置完成后重启所有机器reboot

3、镜像下载
在可联网的机器上选择较新的stable版本下载

docker pull ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64

导入导出命令

docker save -o xxx.tar ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64
docker load -i xxx.tar
#(172.17.47.90:5000为局域网搭建好的docker registry地址与端口)
docker tag ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 172.17.47.90:5000/ceph-daemon-3.0.5               
docker push 172.17.47.90:5000/ceph-daemon-3.0.5

4、运行ceph核心模块
下载的镜像中包含所有需要的核心模块,不同模块通过启动不同容器来提供服务
4.1首先启动主节点mon

docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=172.17.47.85 -e CEPH_PUBLIC_NETWORK=172.17.47.0/24 172.17.47.90:5000/ceph-daemon-3.0.5 mon

4.2拷贝配置文件和系统文件到其他两个节点
这一步非常重要。如果没有拷贝admin节点安装mon后生产的配置文件和系统文件到其他节点,就开始在其他节点启动mon则三个节点会单独启动3个ceph集群,而不是一个集群的三个mon节点(因为已设置过节点名称和无密码访问,故scp可直接使用)
若直接使用非xfs文件系统的硬盘,需要在配置文件中加以下配置:

vim /etc/ceph/ceph.conf
osd max object name len = 256 
osd max object namespace len = 64

然后将配置文件推送到其他各节点

scp -r /etc/ceph aipaas1:/etc/
scp -r /etc/ceph aipaas2:/etc/
scp -r /etc/ceph aipaas3:/etc/
scp -r /var/lib/ceph aipaas1:/var/lib/
scp -r /var/lib/ceph aipaas2:/var/lib/
scp -r /var/lib/ceph aipaas3:/var/lib/

4.3再用4.1中的命令启动其他节点mon,对应IP做相应修改

4.4挂载osd,准备好节点上的osd磁盘
在足够空间的硬盘上建好目录:mkdir osd1(等等)
在每个节点都启动osd服务并挂载osd磁盘:

docker run -d --net=host --name=osd1 -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -v /dev:/dev -v /osd1:/var/lib/ceph/osd --privileged=true 172.17.47.90:5000/ceph-daemon-3.0.5 osd_directory        (osd1做对应修改)

4.5在主节点启动mgr:

docker run -d --net=host \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
172.17.47.90:5000/ceph-daemon-3.0.5 mgr

在ceph中创建一个pool

docker exec mon ceph osd pool create rbd 64

5、配置
5.1手动修复crushmap

docker exec mon ceph osd crush add osd.0 0.15 host=admin (根据osd数目,0.15做相应调整,整体之和不大于1)
docker exec mon ceph osd crush add osd.1 0.15 host=admin

... 
检查osd tree

docker exec mon ceph osd tree

5.2更新crushmap使得节点都归属于root default

docker exec mon ceph osd crush move aipaas0 root=default
docker exec mon ceph osd crush move aipaas1 root=default

...
检查ceph运行情况

docker exec mon ceph -s

6、测试ceph集群
测试ceph集群在块存储下镜像的创建和文件的上传,如果成功才能说明ceph集群安装成功

docker exec mon rbd create rbd/test-image --size 100M
docker exec mon rbd info rbd/test-image
docker exec mon rados -p rbd put test_upload /etc/fstab(容器内部可访问的资源)
docker exec mon rados -p rbd ls


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章