Please enable Javascript to view the contents

Docker安装ceph luminous

 ·  ☕ 4 分钟  ·  ✍️ starifly · 👀... 阅读

本文基于centos7以docker方式安装ceph 12.2.13版本

操作系统基础配置

  1. 三节点创建文件夹:
mkdir -p  /etc/ceph/  /var/lib/ceph/ /var/log/ceph/
chown -R 167:167 /var/log/ceph/
  1. 配置定时任务
systemctl start ntpd && systemctl enable ntpd
# 将时间每隔1小时自动校准同步
0 */1 * * * ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w
  1. 内核优化
#调整内核参数
[root@CENTOS7-1 ~]# cat >> /etc/sysctl.conf << EOF
> kernel.pid_max=4194303
> vm.swappiness = 0
> EOF
[root@CENTOS7-1 ~]# sysctl -p
# read_ahead, 通过数据预读并且记载到随机访问内存方式提高磁盘读操作,8192是比较理想的值
[root@CENTOS7-1 ~]# echo "8192" > /sys/block/sda/queue/read_ahead_kb 
# I/O Scheduler优化,如果SSD要用noop,SATA/SAS设备采用deadline。
[root@CENTOS7-1 ~]#echo "deadline" > /sys/block/sda/queue/scheduler
[root@CENTOS7-1 ~]#echo "noop" > /sys/block/sda/queue/scheduler
  1. 关闭selinux
# vi /etc/selinux/config文件, 将SELINUX设为disabled, 永久生效。
SELINUX=disabled

# 临时生效:
setenforce 0
  1. 编辑别名
echo 'alias ceph="docker exec mon ceph"' >> /etc/profile
echo 'alias ceph-fuse="docker exec mon ceph-fuse"' >> /etc/profile
echo 'alias ceph-mon="docker exec mon ceph-mon"' >> /etc/profile
echo 'alias ceph-osd="docker exec mon ceph-osd"' >> /etc/profile
echo 'alias radosgw="docker exec mon radosgw"' >> /etc/profile
echo 'alias radosgw-admin="docker exec mon radosgw-admin"' >> /etc/profile
echo 'alias rados="docker exec mon rados"' >> /etc/profile
source /etc/profile

启动mon

主节点启动mon:

docker run -d --net=host     --name=mon1     --restart=always -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     -e MON_IP=192.168.5.203     -e CEPH_PUBLIC_NETWORK=192.168.5.0/24     ceph/daemon:latest-luminous  mon

复制配置到另外两个节点:

scp -r /etc/ceph/ root@192.168.5.204:/etc/
scp -r /etc/ceph/ root@192.168.5.205:/etc/
scp -r /var/lib/ceph/bootstrap-* root@192.168.5.204:/var/lib/ceph/
scp -r /var/lib/ceph/bootstrap-* root@192.168.5.205:/var/lib/ceph/

启动成功之后生成配置数据,在ceph主配置文件中,追加如下内容:

203节点

cat >>/etc/ceph/ceph.conf <<EOF
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
 
[mgr]
# 开启WEB仪表盘
mgr modules = dashboard
[client.rgw.ceph1]
# 设置rgw网关的web访问端口
rgw_frontends = "civetweb port=20003"
EOF

204节点:

cat >>/etc/ceph/ceph.conf <<EOF
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
 
[mgr]
# 开启WEB仪表盘
mgr modules = dashboard
[client.rgw.ceph2]
# 设置rgw网关的web访问端口
rgw_frontends = "civetweb port=20003"
EOF

205节点:

cat >>/etc/ceph/ceph.conf <<EOF
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
 
[mgr]
# 开启WEB仪表盘
mgr modules = dashboard
[client.rgw.ceph3]
# 设置rgw网关的web访问端口
rgw_frontends = "civetweb port=20003"
EOF

204节点启动mon:

docker run -d --net=host     --name=mon2     --restart=always -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     -e MON_IP=192.168.5.204     -e CEPH_PUBLIC_NETWORK=192.168.5.0/24     ceph/daemon:latest-luminous  mon

205节点启动mon:

docker run -d --net=host     --name=mon3     --restart=always -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     -e MON_IP=192.168.5.205     -e CEPH_PUBLIC_NETWORK=192.168.5.0/24     ceph/daemon:latest-luminous  mon

启动OSD

osd建议以bluestore运行,因为性能高于filestore,这里因为仅做测试,所以使用的是filestore,需要新的硬盘作为OSD存储设备, 关闭虚拟机, 增加一块硬盘(具体增加可参考网上的教程),然后挂载磁盘。

mkdir /cephdata
mkfs.xfs -f /dev/sdc1 #设备名字根据实际修改
mount /dev/sdc1  /cephdata
增加开机挂载vim /etc/fstab
/dev/sdc1 /cephdata/                       xfs     defaults        0 0

如果没有独立磁盘,怎么办? 可以在Linux下面创建一个虚拟磁盘进行挂载。

mkdir -p /usr/local/ceph-disk
dd if=/dev/zero of=/usr/local/ceph-disk/ceph-disk-01 bs=1G count=2
将镜像文件虚拟成块设备:
losetup -f /usr/local/ceph-disk/ceph-disk-01
格式化:
#名称根据fdisk -l进行查询确认, 一般是/dev/loop0 
mkfs.xfs -f /dev/loop0 
挂载文件系统:
mkdir  -p /usr/local/ceph/data/osd/
mount /dev/loop0  /usr/local/ceph/data/osd/

三个节点分别执行如下命令启动osd:

docker run -d     --name=osd1     --net=host     --restart=always     --privileged=true     --pid=host     -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     -v /cephdata:/var/lib/ceph/osd -v /dev/:/dev/ -v /run/udev/:/run/udev/ -e OSD_TYPE=directory    ceph/daemon:latest-luminous  osd
docker run -d     --name=osd2     --net=host     --restart=always     --privileged=true     --pid=host     -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     -v /cephdata:/var/lib/ceph/osd -v /dev/:/dev/ -v /run/udev/:/run/udev/ -e OSD_TYPE=directory    ceph/daemon:latest-luminous  osd
docker run -d     --name=osd3     --net=host     --restart=always     --privileged=true     --pid=host     -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     -v /cephdata:/var/lib/ceph/osd -v /dev/:/dev/ -v /run/udev/:/run/udev/ -e OSD_TYPE=directory    ceph/daemon:latest-luminous  osd
如果直接指定磁盘分区,可以用如下命令启动osd:
docker run -d     --name=osd1     --net=host     --restart=always     --privileged=true     --pid=host     -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     -v /dev/:/dev/ -v /run/udev/:/run/udev/ -e OSD_DEVICE=/dev/sdc    ceph/daemon:latest-luminous  osd

启动mgr

三个节点执行如下命令启动mgr:

docker run -d --net=host    --name=mgr1   --restart=always -v /etc/localtime:/etc/localtime:ro   -v /etc/ceph:/etc/ceph   -v /var/lib/ceph:/var/lib/ceph   -v /var/log/ceph:/var/log/ceph   ceph/daemon:latest-luminous mgr
docker run -d --net=host    --name=mgr2   --restart=always -v /etc/localtime:/etc/localtime:ro   -v /etc/ceph:/etc/ceph   -v /var/lib/ceph:/var/lib/ceph   -v /var/log/ceph:/var/log/ceph   ceph/daemon:latest-luminous mgr
docker run -d --net=host    --name=mgr3   --restart=always -v /etc/localtime:/etc/localtime:ro   -v /etc/ceph:/etc/ceph   -v /var/lib/ceph:/var/lib/ceph   -v /var/log/ceph:/var/log/ceph   ceph/daemon:latest-luminous mgr

启动rgw

三个节点执行如下命令启动rgw:

docker run     -d --net=host     --name=rgw1   --restart=always  -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     ceph/daemon:latest-luminous rgw
docker run     -d --net=host     --name=rgw2   --restart=always  -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     ceph/daemon:latest-luminous rgw
docker run     -d --net=host     --name=rgw3   --restart=always  -v /etc/localtime:/etc/localtime:ro     -v /etc/ceph:/etc/ceph     -v /var/lib/ceph:/var/lib/ceph     -v /var/log/ceph:/var/log/ceph     ceph/daemon:latest-luminous rgw

启动mds

MDS 只是为 CephFS 的使用者提供。目前 MDS 多实例仍然处于试验阶段(不提供商业支持),而且文件存储的性能要低于对象存储或者块存储。实际部署参考如下命令。

三个节点执行如下命令启动mds,注意mds名称不能以数字开头:

docker run -d --net=host --name=mds1 --restart=always -v /etc/localtime:/etc/localtime:ro -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -v /var/log/ceph:/var/log/ceph -e CEPHFS_CREATE=1 -e MDS_NAME=m203 ceph/daemon:latest-luminous mds
docker run -d --net=host --name=mds2 --restart=always -v /etc/localtime:/etc/localtime:ro -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -v /var/log/ceph:/var/log/ceph -e CEPHFS_CREATE=1 -e MDS_NAME=m204 ceph/daemon:latest-luminous mds
docker run -d --net=host --name=mds3 --restart=always -v /etc/localtime:/etc/localtime:ro -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -v /var/log/ceph:/var/log/ceph -e CEPHFS_CREATE=1 -e MDS_NAME=m205 ceph/daemon:latest-luminous mds

安装Dashboard管理后台

在主节点执行

  1. 开启dashboard功能

docker exec mgr1 ceph mgr module enable dashboard

  1. 配置外部访问IP

docker exec mgr1 ceph config-key put mgr/dashboard/server_addr 192.168.5.203

  1. 配置外部访问端口

docker exec mgr1 ceph config-key put mgr/dashboard/server_port 18080

  1. 重启各个节点上的Mgr DashBoard服务,主节点最后重启

docker restart mgr

  1. 查看Mgr DashBoard服务信息
[root@CENTOS7-1 admin]# docker exec mgr1 ceph mgr services
{
   "dashboard": "http://0.0.0.0:18080/"
}	

Reference

-------他日江湖相逢 再当杯酒言欢-------
分享

飞鸟
作者: starifly ❉
天无边,智无限。


目录

点击屏幕右上角的 ···
在弹出的窗口中选择 在浏览器中打开