ceph官方仓库尚未提供debian 10 buster版本的ceph nautilus,而debian官方仓库里也只有ceph 12版本,可以使用三方仓库在debian buster上安装ceph nautilus
proxmox仓库
1 2 3 $ echo 'deb \[arch=amd64\] http://download.proxmox.com/debian/ceph-nautilus buster main' sudo tee /etc/apt/sources.list.d/proxmox-ceph.list $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7BF2812E8A6E88E0 $ sudo apt update && sudo apt install ceph
croit.io仓库
1 2 3 $ curl https: $ echo 'deb https://mirror.croit.io/debian-nautilus/ buster main' sudo tee /etc/apt/sources.list.d/croit-ceph.list $ sudo apt update && sudo apt install ceph
Updated(2020/02/01): 现在可以使用buster-backports仓库来安装ceph nautilus
ceph集群安装的第一步是monitor自举
一、monitor bootstrapping 1、添加配置文件/etc/ceph/ceph.conf 这里集群的名字使用默认的ceph,ceph.conf文件名中的基本名ceph也是集群名。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 \[global \] # 使用uuidgen生成,debian请安装uuid-runtime包 fsid = 0238426D-78D6-48CD-AF64-B6A8407996C6 # 使用主机名,可以用hostname -s命令获取 mon initial members = node8 # ip地址,支持messenger v1和v2 mon_host = 192.168 .3 .8 #mon_host = v2:192.168 .3 .8 :3300 /0 ,v1 :192.168 .3 .8 :6789 /0 # public network可以指定逗号分割的多个子网 public network = 192.168 .3 .0 /24 # 使用cephx认证 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 # 默认placement group数量 osd pool default pg num = 333 # 默认placement groups for placement数量 osd pool default pgp num = 333 osd crush chooseleaf type = 1
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 2 $ sudo ceph-authtool /tmp/ceph.mon.keyring --import -keyring /etc/ceph/ceph.client.admin.keyring $ sudo ceph-authtool /tmp/ceph.mon.keyring --import -keyring /var /lib/ceph/bootstrap-osd/ceph.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 2 3 4 5 6 7 8 $ monmaptool --print /tmp/monmap monmaptool: monmap file /tmp/monmap epoch 0 fsid 0238426d-78d6-48cd-af64-b6a8407996c6 last_changed 2019 -10 -28 20 :24 :58.156493 created 2019 -10 -28 20 :24 :58.156493 min_mon_release 0 (unknown) 0 : v1:192.168 .3 .8 :6789 /0 mon.node8
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 2 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 denied2019 -10 -28 19 :43 :54.149 7eff2ff1f440 -1 ceph-mon: error creating monfs: (2 ) No such file or directory
9、初始化monitor数据结构
1 sudo -u ceph ceph-mon --mkfs -i node8 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
10、启动ceph monitor
1 2 3 4 $ sudo systemctl enable ceph-mon@node8.service $ sudo systemctl start ceph-mon@node8.service
生成monitor实例自启动systemd服务文件并开启服务
11、查看集群状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $ sudo ceph -s cluster: id: 0238426d-78d6-48cd-af64-b6a8407996c6 health: HEALTH_WARN 1 monitors have not enabled msgr2 services: mon: 1 daemons, quorum node8 (age 12m) mgr: no daemons active 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:
12、启用messenger v2协议
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $ sudo ceph mon enable-msgr2 $ sudo ceph -s cluster: id: 0238426d-78d6-48cd-af64-b6a8407996c6 health: HEALTH_OK services: mon: 1 daemons, quorum node8 (age 67m) mgr: no daemons active 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:
集群健康状态成为HEALTH_OK dump集群配置
1 2 3 4 5 6 7 8 $ sudo ceph mon dump dumped monmap epoch 2 epoch 2 fsid 0238426d-78d6-48cd-af64-b6a8407996c6 last_changed 2019 -10 -28 20 :15 :02 .687549 created 2019 -10 -28 19 :51 :04 .486571 min_mon_release 14 (nautilus) 0 : \[v2:192.168 .3 .8 :3300 /0 ,v1 :192.168 .3 .8 :6789 /0 \] mon.node8
二、添加其他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 2 $ sudo ceph auth get mon. -o /tmp/ceph.mon.keyring exported keyring for mon.
注意检查/tmp/ceph.mon.keyring文件的访问权限,确保ceph用户可以读取。
4、获取集群monitor map
1 2 $ sudo ceph mon getmap -o /tmp/ceph.mon.map got monmap epoch 2
5、初始化新monitor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $ sudo -u ceph ceph-mon --mkfs -i node6 --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring $ sudo systemctl enable ceph-mon@node6.service $ sudo systemctl start ceph-mon@node6.service $ sudo ceph -s cluster: id: 0238426d-78d6-48cd-af64-b6a8407996c6 health: HEALTH_OK services: mon: 2 daemons, quorum node8,node6 (age 0. 16939s) mgr: no daemons active 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:
可以看到集群已经有了两个monitor 查看集群monitor状态信息
1 2 $ sudo ceph mon stat e3: 2 mons at {node6=\[v2:192.168 .3 .6 :3300 /0 ,v1 :192.168 .3 .6 :6789 /0 \],node8=\[v2:192.168 .3 .8 :3300 /0 ,v1 :192.168 .3 .8 :6789 /0 \]}, election epoch 26 , leader 0 node8, quorum 0 ,1 node8,node6
添加其他新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