ceph集群安装docker版

一. 三台服务器准备
centos 
192.168.0.151 
192.168.0.180 
192.168.0.156 


二.三台服务器免密登陆设置,参考 https://blog.51cto.com/lihuansong/2172326
1.设置三台/etc/hosts

192.168.0.151 ceph-node1
192.168.0.180 ceph-node2
192.168.0.156 ceph-node3

2.在每个节点都执行:

ssh-keygen -t rsa

3.将ceph-node2,ceph-node3生成的公钥改名,拷贝到ceph-node1节点上
#节点node2

cp /root/.ssh/id_rsa.pub /root/.ssh/key_node2
scp /root/.ssh/key_node2 root@ceph-node1:/root/.ssh/

#节点node3

cp /root/.ssh/id_rsa.pub /root/.ssh/key_node3
scp /root/.ssh/key_node3 root@ceph-node1:/root/.ssh/

4.node0节点生成公钥也改名

cp /root/.ssh/id_rsa.pub /root/.ssh/key_node1

5.在节点node0上,把公钥导入到认证文件,执行如下命令:

cd /root/.ssh/
cat key_node1 >> authorized_keys
cat key_node2 >> authorized_keys
cat key_node3 >> authorized_keys
chmod 700 /root/.ssh
chmod 600 authorized_keys

6.把这个authorized_kesy文件分发到其它节点

scp authorized_keys root@ceph-node2:/root/.ssh
scp authorized_keys root@ceph-node3:/root/.ssh

7.测试SSH免密码登录

 

三.ntp时间同步 centos7 参考https://blog.51cto.com/lihuansong/2172270
                        centos8 参考 https://blog.whsir.com/post-4925.html
在CentOS8.0中默认不再支持ntp软件包,时间同步将由chrony来实现,像我这种习惯了ntp同步时间的,一时难以去适应chrony。
本文将通过wlnmp提供的源,来安装ntp服务
1.添加wlnmp源

rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm
或 把这个repo连接 换成 
http:
//mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.安装ntp

yum install wntp -y

3.时间同步

ntpdate ntp1.aliyun.com

四 安装docker ( 已部署跳过本条)


centos7 

curl -fsSL https://get.docker.com/ | sh

 yum install -y docker-ce
1.如何添加必要的Docker存储库

我们将使用dnf config-manager实用程序添加Docker存储库。为此,请打开一个终端窗口并发出命令:

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
或者设置为阿里云的存储库更加快速稳定
#centos7 yum-config-manager 依赖于 yum-utils 
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# centos8 
dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.如何找到Docker CE的可安装版本
截至目前,Red Hat已阻止docker-ce的安装,因此,如果您尝试运行命令sudo dnf install docker-ce,将运行失败。相反,您必须安装特定版本的Docker。要找出可用的版本,请发出以下命令:

dnf list docker-ce --showduplicates | sort -r

从该列表中,我们可以看到版本docker-ce-3:18.09.1-3.el7可用于安装。
3.如何安装Docker CE
要安装该版本,请发出命令:

sudo dnf install docker-ce-3:18.09.1-3.el7


为了强制DNS解析在Docker容器中起作用,必须禁用firewalld。为此,发出命令:

systemctl stop firewalld
sudo systemctl disable firewalld

接下来,我们将使用以下命令启动并启用docker守护进程:

sudo systemctl enable --now docker

最后,使用以下命令将您的用户添加到docker组:

sudo usermod -aG docker $USER
docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

调整参数可以根据情况来调,正常一般不调也可以

#调整内核参数

cat >> /etc/sysctl.conf << EOF
kernel.pid_max=4194303
vm.swappiness = 0
EOF
sysctl
-p


# read_ahead, 通过数据预读并且记载到随机访问内存方式提高磁盘读操作,根据一些Ceph的公开分享,8192是比较理想的值

echo "8192" > /sys/block/sda/queue/read_ahead_kb

# I/O Scheduler,关于I/O Scheculder的调整,简单说SSD要用noop,SATA/SAS使用deadline。

echo "deadline" > /sys/block/sd[x]/queue/scheduler
echo "noop" > /sys/block/sd[x]/queue/scheduler

 

五 下载镜像

docker pull ceph/daemon:latest  (这个版本会更新,如果不行就使用阿里镜像) 或
docker pull registry.cn-hangzhou.aliyuncs.com/kenyon/ceph:v1.0 (阿里镜像)


六.创建文件夹三台都要创建

mkdir /home/ceph
mkdir /home/ceph/{admin,etc,lib,logs}

#docker内用户id是167,这里进行授权

chown -R 167:167 /home/ceph/ 
mkdir /home/ceph-data
mkdir /home/ceph-data/data{1..3}

七创建启动脚本

1.创建mon启动脚本(mon ip 三个都要写,然后对应的网关)

vi /home/ceph/admin/start_mon.sh

#!/bin/bash
docker run -d --net=host \
--name=mon \
--restart=always \
-v /etc/localtime:/etc/localtime \
-v /home/ceph/etc:/etc/ceph \
-v /home/ceph/lib:/var/lib/ceph \
-v /home/ceph/logs:/var/log/ceph \
-e MON_IP=192.168.10.95,192.168.10.96,192.168.10.97 \
-e CEPH_PUBLIC_NETWORK=192.168.10.0/24 \
ceph/daemon:latest mon

2.创建osd启动脚本(要创建好对应的目录 mkdir /home/ceph-data/data{1..3})

vi /home/ceph/admin/start_osd.sh

#!/bin/bash
# 这里表示有1个分区,及从data1-data11,请根据实际情况修改:
for i in {1..2};do
docker ps | grep -w osd_data${i} && continue
docker ps -a | grep -w osd_data${i} && docker rm -f osd_data${i}

docker run -d \
--name=osd_data${i} \
--net=host \
--restart=always \
--privileged=true \
--pid=host \
-v /etc/localtime:/etc/localtime \
-v /home/ceph/etc:/etc/ceph \
-v /home/ceph/lib:/var/lib/ceph \
-v /home/ceph/logs:/var/log/ceph \
-v /home/ceph-data/data${i}/osd:/var/lib/ceph/osd \
ceph/daemon:latest osd_directory
done
/home/ceph-data/data${i}/osd:/var/lib/ceph/osd
表示osd存储映射到指定文件夹


3.创建mds启动脚本(可不创建)

vi /home/ceph/admin/start_mds.sh

#!/bin/bash
docker run -d \
--net=host \
--name=mds \
--restart=always \
--privileged=true \
-v /etc/localtime:/etc/localtime \
-v /home/ceph/etc:/etc/ceph \
-v /home/ceph/lib/:/var/lib/ceph/ \
-v /home/ceph/logs/:/var/log/ceph/ \
-e CEPHFS_CREATE=0 \
-e CEPHFS_METADATA_POOL_PG=512 \
-e CEPHFS_DATA_POOL_PG=512 \
ceph/daemon:latest mds

 

#CEPHFS_CREATE 0表示不自动创建文件系统(推荐),1表示自动创建

4.创建mgr启动脚本

vi /home/ceph/admin/start_mgr.sh

#!/bin/bash
docker run -d --net=host \
--name=mgr \
--restart=always \
--privileged=true \
-v /etc/localtime:/etc/localtime \
-v /home/ceph/etc:/etc/ceph \
-v /home/ceph/lib:/var/lib/ceph \
-v /home/ceph/logs:/var/log/ceph \
ceph/daemon:latest mgr

 

 

5.创建rgw启动脚本

 

vi /home/ceph/admin/start_rgw.sh

#!/bin/bash
docker run -d \
--net=host \
--name=rgw \
--restart=always \
--privileged=true \
-v /etc/localtime:/etc/localtime \
-v /home/ceph/etc:/etc/ceph \
-v /home/ceph/lib:/var/lib/ceph \
-v /home/ceph/logs:/var/log/ceph \
ceph/daemon:latest rgw

 


 

6.创建rbd启动脚本

vi /home/ceph/admin/start_rbd.sh

#!/bin/bash
docker run -d \
--net=host \
--name=rbd \
--restart=always \
--privileged=true \
-v /etc/localtime:/etc/localtime \
-v /home/ceph/etc:/etc/ceph \
-v /home/ceph/lib:/var/lib/ceph \
-v /home/ceph/logs:/var/log/ceph \
ceph/daemon:latest rbd_mirror

 

7.服务开启前将节点的hostname修改为ceph-node1-3,然后重新打开窗口

#节点1
sudo hostnamectl set-hostname ceph-node1
#节点2
sudo hostnamectl set-hostname ceph-node2
#节点3
sudo hostnamectl set-hostname ceph-node3

 

八 开始启动服务
1.mon启动

bash /home/ceph/admin/start_mon.sh

2.设置配置文件 osd容量自行调整编号根据osd容器启动的个数顺序从0开始自行编号

vi /home/ceph/etc/ceph.conf

# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true

[mgr]
# 开启WEB仪表盘
mgr modules = dashboard
#设置osd容器的存储大小1073741824000 1t 322122547200 300g 
#自行调整不设置默认10g 目前设置300g 每个服务两个osd 减轻压力
[osd.0]
bluestore_block_size = 644245094400
[osd.1]
bluestore_block_size = 644245094400
[osd.2]
bluestore_block_size = 644245094400
#[osd.3]
#bluestore_block_size = 644245094400
#[osd.4]
#bluestore_block_size = 644245094400
#[osd.5]
#bluestore_block_size = 644245094400
#[client.rgw.节点名]
# 设置rgw网关的web访问端口 oss端口 默认7480 修改最好三台都修改
#rgw_frontends = "civetweb port=20003"

 

3.设置快捷键,其他命令也可以一一映射出来,具体操作自行调整

echo 'alias ceph="docker exec mon ceph"' >> /etc/profile
source /etc/profile

4.将配置复制到其他两个节点

scp -r /home/ceph/* ceph-node2:/home/ceph
scp -r /home/ceph/* ceph-node3:/home/ceph

#给其他两个节点的文件授权

chown -R 167:167 /home/ceph/

5.启动其他两台服务

ssh ceph-node2 bash /home/ceph/admin/start_mon.sh
ssh ceph-node3 bash /home/ceph/admin/start_mon.sh

6.查看是否启动成功

ceph -s
docker ps

看到有三台就算成功了
7.osd启动
#每台都执行创建osdkey

docker exec -it mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring

#运行脚本

bash /home/ceph/admin/start_osd.sh
ssh ceph-node2 bash /home/ceph/admin/start_osd.sh
ssh ceph-node3 bash /home/ceph/admin/start_osd.sh

8.启动mds(可跳过)

bash /home/ceph/admin/start_mds.sh
ssh ceph-node2 bash /home/ceph/admin/start_mds.sh
ssh ceph-node3 bash /home/ceph/admin/start_mds.sh

创建文件系统(可跳过)
# 创建data pool
ceph osd pool create cephfs_data 256 256
# 创建 metadata pool
ceph osd pool create cephfs_metadata 64 64
# 创建 cephfs
ceph fs new cephfs cephfs_metadata cephfs_data
# 查看信息
ceph fs ls
#name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

 

9.启动mgr

bash /home/ceph/admin/start_mgr.sh
ssh ceph-node2 bash /home/ceph/admin/start_mgr.sh
ssh ceph-node3 bash /home/ceph/admin/start_mgr.sh

10.激活仪表盘

ceph mgr module enable dashboard
#设定管理端访问的用户名密码
ceph dashboard set-login-credentials admin admin@gp2OZ0
ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
#指定为7000端口,这里可以自定义修改
ceph config set mgr mgr/dashboard/server_port 18080
#关闭https
ceph config set mgr mgr/dashboard/ssl false


11、启动RGW

#这里需要每个节点都创建rgwkey
docker exec mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring
bash /home/ceph/admin/start_rgw.sh
ssh ceph-node2 bash /home/ceph/admin/start_rgw.sh
ssh ceph-node3 bash /home/ceph/admin/start_rgw.sh

12、启动RBD

#这里需要每个节点都创建rbdkey
docker exec mon ceph auth get client.bootstrap-rbd-mirror -o /var/lib/ceph/bootstrap-rbd-mirror/ceph.keyring
bash /home/ceph/admin/start_rbd.sh
ssh ceph-node2 bash /home/ceph/admin/start_rbd.sh
ssh ceph-node3 bash /home/ceph/admin/start_rbd.sh

13.创建用户
创建s3访问用户

docker exec rgw radosgw-admin user create --uid=mgruser --display-name=mgruser --system

 

返回的记录下 access_key secret_key

{
"user_id": "mgruser",
"display_name": "mgruser",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "mgruser",
"access_key": "akhsanflasnvlajl",
"secret_key": "skhsanflasnvlajl"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"system": "true",
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"temp_url_keys": [],
"type": "rgw",
"mfa_ids": []
}
View Code

 

将返回的ak sk 加入服务

docker exec mgr ceph dashboard set-rgw-api-access-key akhsanflasnvlajl
docker exec mgr ceph dashboard set-rgw-api-secret-key skhsanflasnvlajl

 

 

修改mon重启失败问题

docker cp mon:/opt/ceph-container/bin/start_mon.sh .

# 注释此行,直接将v2v1赋值为2,代表是走V2协议, 以指定IP方式加入集群
#v2v1=$(ceph-conf -c /etc/ceph/${CLUSTER}.conf 'mon host' | tr ',' '\n' | grep -c ${MON_IP})
v2v1=2

docker cp start_mon.sh mon:/opt/ceph-container/bin/start_mon.sh

 

 至此对象存储的ceph服务搭建完成

posted @ 2020-11-12 16:23  zhou周  阅读(705)  评论(0编辑  收藏  举报