一、实验目的
Docker部署ceph
二、实验内容
Docker部署ceph
三、实验过程(步骤、命令或源程序代码)及结果(截图)
监控,存储
1.部署环境
三台网络互通的 CentOS 虚拟机。
右键要克隆的虚拟机、选择管理 ——> 克隆,进入克隆虚拟机向导,然后根据向导即可轻松创建。
克隆完成
主机名称 | 主机IP | 说明 |
---|---|---|
summer | 192.168.2.130 | osd、mon、mgr、rgw |
ceph- 1 | 192.168.2.140 | osd、mon |
ceph- 2 | 192.168.2.150 | osd、mon |
2.虚拟机CentOS7三台集群配置网络
(1)进入虚拟机网络编辑器,选择VMnet8, 选择NAT模式,确定子网IP段
点击DHCP设置,看下IP使用范围段
看完可用IP段后,我们将三台虚拟机的IP确定下来
主机名称 | 主机IP | 说明 |
---|---|---|
summer | 192.168.2.130 | osd、mon、mgr、rgw |
ceph- 1 | 192.168.2.140 | osd、mon |
ceph- 2 | 192.168.2.150 | osd、mon |
(2)对于虚拟机的配置
进入第一台CentOS 7虚拟机,使用命令:
先输入systemctl stop firewalld命令关闭防火墙,然后输入systemctl disable firewalld命令禁用防火墙
修改主机名(hostbname):
不然会出现系统识别不出对应的虚拟机的情况,因为名字都一样
具体修改是通过命令hostnamectl set-hostname ***,例如:
修改后重启虚拟机,发现主机名被改变:
(3)配置Centos网络
通过命令到cd /etc/sysconfig/network-scripts到网络配置的目录下,找到当前虚拟机使用的网络的配置文件,修改为:
(4)修改host映射
通过命令vim /etc/hosts进入,加上所需的各个虚拟机的IP地址和主机号即可
修改完之后需要重启一下网络,使用命令service network restart,没有重启成功把虚拟机重启
(5)以同样的方式配置另外两台虚拟机
执行命令service network restart可能出现问题:
检查配置文件无问题还有报错
执行以下语句
$ systemctl stop NetworkManager
$ systemctl disable NetworkManager
重启网络:systemctl start network.service即可解决。
如上所述,如果不出意外,三台虚拟机之间应该可以相互ping通,下图是在summer上ping了ceph-1和在summer上ping了ceph-2的演示。
3.拉取镜像
# 拉取镜像
docker pull ceph/daemon:master-7ef46af-nautilus-centos-7-x86_64
# 更改镜像tag
docker image tag ceph/daemon:master-7ef46af-nautilus-centos-7-x86_64 ceph/daemon:latest
4.启动 mon 容器
(1)登陆到第一台服务器(summer)。
创建挂载目录,并赋予权限。
sudo mkdir -p "/root/ceph/etc"
sudo mkdir -p "/root/ceph/lib"
sudo mkdir -p "/root/ceph/logs"
sudo mkdir -p "/root/ceph/data"
chmod -R 777 /root/ceph
(2)启动容器。
docker run -d \
--net=host \
--name=mon \
--privileged=true \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib:/var/lib/ceph/ \
-v /root/ceph/logs:/var/log/ceph \
-e MON_IP=192.168.2.130,192.168.2.140,192.168.2.150 \
-e CEPH_PUBLIC_NETWORK=192.168.2.0/24 \
ceph/daemon mon
(3)复制配置文件到另外两台服务器.
# ceph-1 192.168.2.140
scp -r /root/ceph [email protected]:/root
# ceph-2 192.168.2.150
scp -r /root/ceph [email protected]:/root
(4)执行上面的容器启动命令,在另外两台服务器上启动 mon 容器。
docker run -d \
--net=host \
--name=mon \
--privileged=true \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib:/var/lib/ceph/ \
-v /root/ceph/logs:/var/log/ceph \
-e MON_IP=192.168.2.130,192.168.2.140,192.168.2.150 \
-e CEPH_PUBLIC_NETWORK=192.168.2.0/24 \
ceph/daemon mon
docker run -d \
--net=host \
--name=mon \
--privileged=true \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib:/var/lib/ceph/ \
-v /root/ceph/logs:/var/log/ceph \
-e MON_IP=192.168.2.130,192.168.2.140,192.168.2.150 \
-e CEPH_PUBLIC_NETWORK=192.168.2.0/24 \
ceph/daemon mon
(5)查看部署状态。如下图,三个 mon 节点启动成功。
docker exec mon ceph -s
4.启动 osd 容器
在三台主机上执行下面的(1)(2)操作
(1)执行如下命令,在 mon 节点生成 osd 密钥信息,否则启动 osd 容器会报错。
docker exec -it mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring
(2)启动容器。
docker run -d \
--net=host \
--name=osd \
--restart=always \
--privileged=true \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib/:/var/lib/ceph/ \
-v /root/ceph/logs/:/var/log/ceph \
-v /root/ceph/data/osd:/var/lib/ceph/osd \
ceph/daemon osd_directory
(3)查看部署状态。如下图,三个 osd节点启动成功。
docker exec mon ceph -s
5.在三台主机上启动 mds 容器
docker run -d \
--net=host \
--name mds \
--restart=always \
--privileged=true \
-v /root/baseService/ceph/etc:/etc/ceph \
-v /root/baseService/ceph/lib:/var/lib/ceph/ \
-v /root/baseService/ceph/logs:/var/log/ceph \
-e CEPHFS_CREATE=0 \
-e CEPHFS_METADATA_POOL_PG=512 \
-e CEPHFS_DATA_POOL_PG=512 \
ceph/daemon mds
CEPHFS_CREATE 是为METADATA服务生成文件系统, 0表示不自动创建文件系统(默认值), 1表示自动创建。
CEPHFS_DATA_POOL_PG是数据池的数量,默认为8。
CEPHFS_METADATA_POOL_PG是元数据池的数量,默认为8。
6.启动 rgw 容器
在summer主机上执行(1)(2)操作
(1)执行如下命令,在 mon 节点生成 rgw密钥信息,否则启动 rgw容器会报错。
docker exec mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring
(2)启动容器。
docker run -d \
--net=host \
--name rgw \
--restart=always \
-p 7480:80 \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib:/var/lib/ceph/ \
-v /root/ceph/logs:/var/log/ceph \
ceph/daemon rgw
7.启动 mgr 容器
(1)在summer主机上启动容器。
docker run -d --net=host \
--name=mgr \
--restart=always \
-v /root/ceph/etc:/etc/ceph \
-v /root/ceph/lib:/var/lib/ceph \
-v /root/ceph/logs:/var/log/ceph \
ceph/daemon mgr
(2)查看部署状态。如下图,至此,Ceph 集群节点全部启动成功。
docker exec mon ceph -s
8.安装 Dashboard 管理后台
(1)开启 Dashboard 功能。
docker exec mgr ceph mgr module enable dashboard
(2)创建证书。
docker exec mgr ceph dashboard create-self-signed-cert
(3)创建登陆用户名和密码。
docker exec mgr ceph dashboard set-login-credentials cephAdmin cephPassword
(4)配置外部访问端口。
docker exec mgr ceph config set mgr mgr/dashboard/server_port 7800
(5)配置外部访问 ip。
docker exec mgr ceph config set mgr mgr/dashboard/server_addr 10.0.28.10
(6)关闭 HTTPS(如果没有证书或内网使用,可以关闭)。
docker exec mgr ceph config set mgr mgr/dashboard/ssl false
(7)重启mgr服务。
docker restart mgr
(8)查看 Dashboard 服务信息。
docker exec mgr ceph mgr services
(9)浏览器访问 Dashboard 管理页面。
http://192.168.2.130:7800/
(10)登录用第(3)步创建的登陆用户名和密码
cephAdmin cephPassword
(11)登录后的界面