操作系统:centos8
三台服务器:
192.168.6.22:mon,mgr,mds,osd
192.168.6.23:mon,mgr,mds,osd
192.168.6.24:mon,mgr,mds,osd
正式环境osd和mon不应该在一个节点,建议osd单独服务器安装。
ceph版本:18.1.3
配置基础环境
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
安装基础环境
然后安装ceph的密钥,centos7和8都要执行,下面不特别说明都是centos7/8都执行命令:
rpm --import 'https://download.ceph.com/keys/release.asc'
把基础centos镜像传上去,才能执行下面
# 更新yum源
yum install epel-release
yum install snappy leveldb gdisk gperftools-libs
把ceph镜像源加进去,才能安装ceph
或者vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-18.1.3/el8//x86_64/
enabled=1
gpgcheck=1
priority=2
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-18.1.3/el8//noarch/
gpgcheck=1
priority=2
enabled=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-18.1.3/el8//SRPMS
gpgcheck=1
enabled=0
priority=2
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
每个节点都安装
yum install ceph
安装过程中会自动安装python3.6以及相关
的依赖等,安装完成之后最好再确认一下下面两个python模块是否存在,不存在就需要安装一下:
pip3 install pecan
pip3 install werkzeug
ceph-mon服务部署
在第一个节点执行
uuidgen 生成id
创建配置文件 vim /etc/ceph/ceph.conf
fsid, public netword (网络按cidr设置),mon_initial_members ,mon_host 默认端口6789,
osd pool default size = 3(正常数据会复制多少个副本)
osd pool default min size = 2(降级状态下,数据最少有多少副本,如果副本数小于它说明出问题了不能正常用)
osd pool default pg num(pg的数量,官方建议 (100*osd数量)/副本数量, 并且最接近2的幂,这里是 (100*3)/3=100,最接近2的幂是128)
osd pool default pgp num的值和osd pool default pg num相等
这些配置都需要改
[global]
fsid = 88ad70c0-b814-426b-bd92-745cea0e9dd5
mon_initial_members = server22,server23,server24
mon_host = 192.168.6.22,192.168.6.23,192.168.6.24
public network = 192.168.6.0/22
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 128
osd pool default pgp num = 128
osd crush chooseleaf type = 1
mon_allow_pool_delete = true
创建秘钥
# 为集群创建1个密钥环,作为监视器密钥 注意其中的点.不要丢
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
# 生成管理员密钥环 创建admin用户 也是第一个客户端用户
ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
# 生成bootstrap密钥环和用户
ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
# 然后将刚才生成的密钥追加到ceph.mon.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
# 修改ceph.mon.keyring的权限为ceph ceph用户安装时已经自动创建
chown ceph:ceph /tmp/ceph.mon.keyring
安装监控
# 使用主机名,主机IP地址和FSID生成monitor map。另存为/tmp/monmap:
#node1 注意修改 hostname和ip地址
monmaptool --create --add server22 192.168.6.22 --add server23 192.168.6.23 --add server23 192.168.6.23 --fsid 88ad70c0-b814-426b-bd92-745cea0e9dd5 /tmp/monmap
# 复制monitor map到另外2个节点
#node1
scp /tmp/monmap root@server23:/tmp
scp /tmp/monmap root@server24:/tmp
# 复制ceph.client.admin.keyring到另外2个节点
#node1
scp /etc/ceph/ceph.client.admin.keyring root@server23:/etc/ceph/
scp /etc/ceph/ceph.client.admin.keyring root@server24:/etc/ceph/
# 复制ceph.mon.keyring到另外2个节点
#node1
scp /tmp/ceph.mon.keyring root@server23:/tmp/
scp /tmp/ceph.mon.keyring root@server24:/tmp/
#复制conf
scp /etc/ceph/ceph.conf root@server23:/etc/ceph/
scp /etc/ceph/ceph.conf root@server24:/etc/ceph/
#注意修改文件权限
#node1
chown ceph:ceph /tmp/ceph.mon.keyring
#node2
chown ceph:ceph /tmp/ceph.mon.keyring
#node3
chown ceph:ceph /tmp/ceph.mon.keyring
# 创建monitor数据目录. {集群名}-{节点名}
#node1
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-server22
#node2
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-server23
#node3
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-server24
# 用monitor map和keyring填充monitor守护程序。 注意修改节点名
#node1
sudo -u ceph ceph-mon --mkfs -i server22 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
#node2
sudo -u ceph ceph-mon --mkfs -i server23 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
#node3
sudo -u ceph ceph-mon --mkfs -i server24 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
执行这如果出错报/var/lib/ceph/mon/ceph-server23已经存在,就手动把这个目录删了,再次执行
# 查看生成的文件
#node1
ls /var/lib/ceph/mon/ceph-server22/
keyring kv_backend store.db
# 启动monitor服务
#node1
systemctl restart ceph-mon@server22
systemctl enable ceph-mon@server22
#node2
systemctl restart ceph-mon@server23
systemctl enable ceph-mon@server23
#node3
systemctl restart ceph-mon@server24
systemctl enable ceph-mon@server24
查看集群状态
ceph -s,此时应该有三个监控启动
# 若异常则启用msgr2
# ceph mon enable-msgr2
manager节点部署
在三个节点分别执行
#server22
# 创建mgr密钥目录, 命名为: 集群名-主机名
mkdir /var/lib/ceph/mgr/ceph-server22
# 创建mgr身份验证密钥 注意里面的mgr.server22,为主机名
ceph auth get-or-create mgr.server22 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-server22/keyring
# 修改权限
chown -R ceph:ceph /var/lib/ceph/mgr/ceph-server22/
#server23
# 创建mgr密钥目录, 命名为: 集群名-主机名
mkdir /var/lib/ceph/mgr/ceph-server23
# 创建mgr身份验证密钥 注意里面的mgr.server23,为主机名
ceph auth get-or-create mgr.server23 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-server23/keyring
# 修改权限
chown -R ceph:ceph /var/lib/ceph/mgr/ceph-server23/
#server24
# 创建mgr密钥目录, 命名为: 集群名-主机名
mkdir /var/lib/ceph/mgr/ceph-server24
# 创建mgr身份验证密钥 注意里面的mgr.server24,node1为主机名
ceph auth get-or-create mgr.server24 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-server24/keyring
# 修改权限
chown -R ceph:ceph /var/lib/ceph/mgr/ceph-server24/
# 注意官网这里用$name代替主机名,这里说的很含糊,建议使用主机名,无论如何和前面指定的那个host保持一致,这样后面就不会有一些奇怪的问题导致集群不能用,然后启动ceph-mgr守护进程:
ceph-mgr -i server22
ceph-mgr -i server23
ceph-mgr -i server24
# 启动ceph-mgr守护程序:
#node1
systemctl restart ceph-mgr@server22
systemctl enable ceph-mgr@server22
#node2
systemctl restart ceph-mgr@server23
systemctl enable ceph-mgr@server23
#node3
systemctl restart ceph-mgr@server24
systemctl enable ceph-mgr@server24
# 通过ceph status查看输出来检查mgr是否出现
这时候应该有三个mgr
root@server24 ceph-server24\]# ceph -s
cluster:
id: 88ad70c0-b814-426b-bd92-745cea0e9dd5
health: HEALTH_WARN
mons are allowing insecure global_id reclaim
OSD count 0 \< osd_pool_default_size 3
services:
mon: 3 daemons, quorum server22,server23,server24 (age 2h)
mgr: server22(active, since 2h), standbys: server24, server23
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
### OSD部署
# 复制keyring到其他2个节点
#node1
scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@server23:/var/lib/ceph/bootstrap-osd/
scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@server24:/var/lib/ceph/bootstrap-osd/
# 创建OSD
[root@node1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─cs-root 253:0 0 61.2G 0 lvm /
├─cs-swap 253:1 0 7.9G 0 lvm
└─cs-home 253:2 0 29.9G 0 lvm /home
sdb 8:16 0 10G 0 disk
# 3个节点上执行
ceph-volume lvm create --data /dev/sdb
# 启动各个节点osd进程
#node1
systemctl restart ceph-osd@0
systemctl enable ceph-osd@0
#node2
systemctl restart ceph-osd@1
systemctl enable ceph-osd@1
#node3
systemctl restart ceph-osd@2
systemctl enable ceph-osd@2
# 查看集群状态
ceph -s
cluster:
id: 8d2cfd33-9132-48a7-8c00-3ef10cb5ddeb
health: HEALTH_WARN
mons are allowing insecure global_id reclaim
services:
mon: 3 daemons, quorum node1,node2,node3 (age 5m)
mgr: node3(active, since 4m), standbys: node1, node2
osd: 3 osds: 3 up (since 7s), 3 in (since 62s)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 577 KiB
usage: 18 MiB used, 30 GiB / 30 GiB avail
pgs: 1 active+clean
io:
client: 1.2 KiB/s rd, 36 KiB/s wr, 1 op/s rd, 1 op/s wr
recovery: 27 KiB/s, 0 objects/s
### mds部署
# 创建mds数据目录。
#node1
sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-server22
#node2
sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-server23
#node3
sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-server24
# 创建keyring:
#node1
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-server22/keyring --gen-key -n mds.server22
#node2
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-server23/keyring --gen-key -n mds.server23
#node3
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-server24/keyring --gen-key -n mds.server24
# 导入keyring并设置权限:
#node1
ceph auth add mds.server22 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-server22/keyring
chown ceph:ceph /var/lib/ceph/mds/ceph-server22/keyring
#node2
ceph auth add mds.server23 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-server23/keyring
chown ceph:ceph /var/lib/ceph/mds/ceph-server23/keyring
#node3
ceph auth add mds.server24 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-server24/keyring
chown ceph:ceph /var/lib/ceph/mds/ceph-server24/keyring
所有节点修改ceph.conf配置文件,追加以下内容
cat >> /etc/ceph/ceph.conf <