Ceph集群部署-monitors配置
ceph官方仓库尚未提供debian 10 buster版本的ceph nautilus,而debian官方仓库里也只有ceph 12版本,可以使用三方仓库在debian buster上安装ceph nautilus
proxmox仓库
1 | $ echo 'deb \[arch=amd64\] http://download.proxmox.com/debian/ceph-nautilus buster main' sudo tee /etc/apt/sources.list.d/proxmox-ceph.list |
croit.io仓库
1 | $ curl https://mirror.croit.io/keys/release.asc sudo apt-key add - |
Updated(2020/02/01): 现在可以使用buster-backports仓库来安装ceph nautilus
ceph集群安装的第一步是monitor自举
一、monitor bootstrapping
1、添加配置文件/etc/ceph/ceph.conf
这里集群的名字使用默认的ceph,ceph.conf文件名中的基本名ceph也是集群名。
1 | \[global\] |
2、创建集群keyring,生成monitor密钥
1 | $ ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' |
3、创建管理keyring,生成client.admin用户并加入keyring
1 | $ sudo 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 *' |
4、创建bootstrap-osd keyring,生成client.bootstrap-osd用户并加入keyring
1 | $ sudo 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' |
5、将生成的key添加到ceph.mon.keyring
1 | $ sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring |
6、生成monitor map
1 | $ monmaptool --create --add node8 192.168.3.8 --fsid 0238426D-78D6-48CD-AF64-B6A8407996C6 /tmp/monmap |
注意此处指定的节点名称、ip地址和fsid要与/etc/ceph/ceph.conf中指定的一致,ip地址还可以使用新的格式指定v2:192.168.3.8:3300/0,v1:192.168.3.8:6789/0
map文件是二进制格式的,可以这样查看生成的map内容
1 | $ monmaptool --print /tmp/monmap |
7、创建monitor数据目录
1 | sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node8 |
目录名字格式为{cluster-name}-{hostname}
8、修改ceph.mon.keyring访问权限
1 | $ chmod o+r /tmp/ceph.mon.keyring |
不然会因为ceph用户无法读取/tmp/ceph.mon.keyring而抛出如下错误:
1 | 2019-10-28 19:43:54.149 7eff2ff1f440 -1 mon.node8@-1(???) e0 unable to find a keyring file on /tmp/ceph.mon.keyring: (13) Permission denied |
9、初始化monitor数据结构
1 | sudo -u ceph ceph-mon --mkfs -i node8 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring |
10、启动ceph monitor
1 | //$ sudo ln -sf /lib/systemd/system/ceph-mon@.service /etc/systemd/system/multi-user.target.wants/ceph-mon@node8.service |
生成monitor实例自启动systemd服务文件并开启服务
11、查看集群状态
1 | $ sudo ceph -s |
12、启用messenger v2协议
1 | $ sudo ceph mon enable-msgr2 |
集群健康状态成为HEALTH_OK
dump集群配置
1 | $ sudo ceph mon dump |
二、添加其他monitor
一个monitor可以运行ceph集群,但是在生产环境推荐至少要运行三个monitor实例或以上,而且数量最好是奇数,这是因为容错时需要大多数实例达成一致的原因。monitor可以与OSD实例运行在一台物理机器上,但推荐是分开部署。
以下操作皆是在将要添加的monitor机器上执行
1、拷贝初始monitor配置文件
将集群第一个monitor的配置文件目录/etc/ceph整个拷贝到新monitor相同路径,注意保持文件属性不变。之后,新monitor节点虽然尚未初始化,但已经可以访问ceph集群。
2、创建目录
1 | $ sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node6 |
3、获取monitor keyring
1 | $ sudo ceph auth get mon. -o /tmp/ceph.mon.keyring |
注意检查/tmp/ceph.mon.keyring文件的访问权限,确保ceph用户可以读取。
4、获取集群monitor map
1 | $ sudo ceph mon getmap -o /tmp/ceph.mon.map |
5、初始化新monitor
1 | $ sudo -u ceph ceph-mon --mkfs -i node6 --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring |
可以看到集群已经有了两个monitor
查看集群monitor状态信息
1 | $ sudo ceph mon stat |
添加其他新monitor重复以上步骤。
References:
[1]Ceph Docs
[2]Debian stable and Ceph are great
[3]MANUAL DEPLOYMENT
[4]ceph nautilus版本手动安装
[5]CEPH-MGR ADMINISTRATOR’S GUIDE
[6]NETWORK CONFIGURATION REFERENCE
[7]ADDING/REMOVING MONITORS