微信公众号:运维开发故事,作者:wanger
本文介绍在国产化操作系统和服务器上进行ceph集群的安装
基础配置操作系统使用银河kylin v10,CPU为飞腾处理器S2500
[root@node1 ~]# cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Sword) [root@node1 ~]# lscpu 架构: aarch64 CPU 运行模式: 64-bit 字节序: Little Endian CPU: 128 在线 CPU 列表: 0-127 每个核的线程数: 1 每个座的核数: 64 座: 2 NUMA 节点: 16 厂商 ID: Phytium 型号: 3 型号名称: Phytium,S2500/64 C00 步进: 0x1 CPU 最大 MHz: 2100.0000 CPU 最小 MHz: 1100.0000 BogoMIPS: 100.00 L1d 缓存: 4 MiB L1i 缓存: 4 MiB L2 缓存: 64 MiB L3 缓存: 128 MiB NUMA 节点0 CPU: 0-7 NUMA 节点1 CPU: 8-15 NUMA 节点2 CPU: 16-23 NUMA 节点3 CPU: 24-31 NUMA 节点4 CPU: 32-39 NUMA 节点5 CPU: 40-47 NUMA 节点6 CPU: 48-55 NUMA 节点7 CPU: 56-63 NUMA 节点8 CPU: 64-71 NUMA 节点9 CPU: 72-79 NUMA 节点10 CPU: 80-87 NUMA 节点11 CPU: 88-95 NUMA 节点12 CPU: 96-103 NUMA 节点13 CPU: 104-111 NUMA 节点14 CPU: 112-119 NUMA 节点15 CPU: 120-127 Vulnerability Itlb multihit: Not affected Vulnerability L1tf: Not affected Vulnerability Mds: Not affected Vulnerability Meltdown: Mitigation; PTI Vulnerability Spec store bypass: Vulnerable Vulnerability Spectre v1: Mitigation; __user pointer sanitization Vulnerability Spectre v2: Not affected Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Not affected 标记: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
之前想通过cephadm的方式去部署,结果发现cephadm不支持kylin v10的操作系统,那么剩下的就只有手动部署和编译安装的方式,kylin v10系统已经自带了ceph luminous版本的包,如果想用新版的ceph那只能通过编译安装的方式了
CEPH_GIT_VER = "ae699615bac534ea496ee965ac6192cb7e0e07c0" CEPH_GIT_NICE_VER = "12.2.8" CEPH_RELEASE = "12" CEPH_RELEASE_NAME = "luminous" CEPH_RELEASE_TYPE = "stable"配置hosts解析
cat >> /etc/hosts <关闭防火墙 这里之前忘了关,创建ceph的时候卡主好几次
systemctl stop firewalld && systemctl disable firewalld分别在三个节点设置主机名hostnamectl set-hostname node1 hostnamectl set-hostname node2 hostnamectl set-hostname node3配置主机时间同步vi /etc/chrony.conf server ntp1.aliyun.com iburst allow 192.168.2.0/24 systemctl restart chronyd.service && systemctl enable chronyd.service使用yum安装 安装ceph麒麟v10已经自带了ceph 12版本的rpm包
yum install -y cephceph命令执行需要用到python的PrettyTable模块,需要使用pip安装下
pip install PrettyTable部署monitor节点所有 Ceph 群集至少需要一个monitor,并且至少需要与存储在群集上的对象副本一样多的 OSD。引导初始mon是部署 Ceph 存储群集的第一步,这里我直接在node1、node2、node3创建三个mon。
在node1添加monitor为集群生成唯一的fsid,fsid是群集的唯一标识符,代表 Ceph 存储群集主要用于 Ceph 文件系统的文件系统 ID
uuidgen创建ceph配置文件,将生成的fsid添加到配置文件中
vim /etc/ceph/ceph.repo [global] fsid=9c079a1f-6fc2-4c59-bd4d-e8bc232d33a4 mon initial members = node1 mon host = 192.168.2.16 public network = 192.168.2.0/24 auth cluster required = cephx auth service required = cephx auth client required = cephx osd journal size = 1024 osd pool default size = 1 osd pool default min size = 1 osd pool default pg num = 8 osd pool default pgp num = 8 osd crush chooseleaf type = 1为群集创建keyring并生成monitor keyring。monitor通过密钥相互通信。必须生成具有monitor密钥的keyring,并在引导初始monitor时提供keyring。
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'生成管理员keyring,生成用户并将用户添加到client.admin keyring中。要使用 CLI 工具,必须有一个用户,并且还必须将用户添加到monitor keyring。
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 *'生成引导 osd 密钥,生成用户并将用户添加到client.bootstrap-osd keyring中。
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的所有者。
chown ceph:ceph /tmp/ceph.mon.keyring使用主机名、主机 IP 地址和 FSID 生成monitor映射。将其保存为 :/tmp/monmap
monmaptool --create --add node1 192.168.2.16 --fsid 9c079a1f-6fc2-4c59-bd4d-e8bc232d33a4 /tmp/monmap在monitor主机上创建默认数据目录,目录名是{cluster-name}-{hostname}格式
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-`hostname`在node1节点对monitor进行初始化
sudo -u ceph ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring启动mon
systemctl start ceph-mon@node1 && systemctl enable ceph-mon@node1在另外两个节点安装mon将密钥和配置文件拷贝至其他节点
scp /tmp/ceph.mon.keyring node2:/tmp/ceph.mon.keyring scp /etc/ceph/* root@node2:/etc/ceph/ scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@node2:/var/lib/ceph/bootstrap-osd/ scp /tmp/ceph.mon.keyring node3:/tmp/ceph.mon.keyring scp /etc/ceph/* root@node3:/etc/ceph/ scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@node3:/var/lib/ceph/bootstrap-osd/在两个节点上修改ceph.mon.keyring属主和属组为ceph
chown ceph.ceph /tmp/ceph.mon.keyring获取monmap信息
ceph mon getmap -o /tmp/ceph.mon.map got monmap epoch 1在mon节点上进行mon初始化
sudo -u ceph ceph-mon --mkfs -i node2 --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring sudo -u ceph ceph-mon --mkfs -i node3 --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring将新的mon节点添加至ceph集群的mon列表
[root@node1 ~]# ceph mon add node2 192.168.2.17:6789 adding mon.node2 at 192.168.2.17:6789/0 [root@node1 ~]# ceph mon add node3 192.168.2.18:6789 adding mon.node3 at 192.168.2.18:6789/0在两个节点上启动mon
systemctl start ceph-mon@`hostname` && systemctl enable ceph-mon@`hostname`修改ceph.conf并重启ceph-mon(所有节点操作)
vim /etc/ceph/ceph.conf mon initial members = node1,node2,node3 mon host = 192.168.2.16,192.168.2.17,192.168.2.18 systemctl restart ceph-mon@`hostname`添加osdCeph提供了该ceph-volume实用程序,该实用程序可以准备逻辑卷,磁盘或分区以供Ceph使用。该ceph-volume实用程序通过增加索引来创建OSD ID。
创建osd在node1执行
ceph-volume lvm create --data /dev/sdb上面的创建过程可以分为两个阶段(准备和激活):
ceph-volume lvm prepare --data /dev/sdb 查看osd fsid ceph-volume lvm list ceph-volume lvm activate {ID} {FSID}启动各个节点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创建MGR在运行ceph-mon守护程序的每个节点上,还应该设置一个ceph-mgr守护程序。
创建密钥目录所有mgr节点都要执行
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-`hostname -s` cd /var/lib/ceph/mgr/ceph-`hostname -s`创建身份验证密钥ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' > keyring chown ceph.ceph /var/lib/ceph/mgr/ceph-`hostnbame`/keyring启动mgr守护进程systemctl enable ceph-mgr@`hostname -s` && systemctl start ceph-mgr@`hostname -s` 或者 ceph-mgr -i `hostname`最后查看ceph运行状态,我只添加了两个osd
公众号:运维开发故事
github:https://github.com/orgs/sunsharing-note/dashboard
博客**:https://www.devopstory.cn**
爱生活,爱运维
我是wanger,《运维开发故事》公众号团队中的一员,一线运维农民工,这里不仅有硬核的技术干货,还有我们对技术的思考和感悟,欢迎关注我们的公众号,期待和你一起成长!
扫码二维码
关注我,不定期维护优质内容



