
关于中兴新支点系统
中兴新支点操作系统基于Linux稳定内核,分为嵌入式操作系统(NewStart CGEL)、服务器操作系统(NewStart CGSL)、桌面操作系统(NewStart NSDL),经过近10年专业研发团队的积累和发展,产品形成安全加固、自主可控、易用管理的突出优势。目前,中兴新支点操作系统已在国内外各大电信运营商、国有大中型企业及电子政务解决方案中投入使用,服务于交换网络、核心网络、骨干网络、智慧城市、视频监控等系统底层。以上转自某乎。
背景
在国家数字化转型和国产化替代的大背景下,尤其是政务类项目,现在基本用国产化的CPU和操作系统来承载其业务,实现自主创新和安全可靠。本文在中兴新支点系统(CGSL)和海光CPU上进行ceph离线部署。下面方法也适用于龙蜥和centos8。
制作离线安装包
首先需要找一台可以联网的中兴新支点机器,在上面制作ceph的离线rpm源。中兴新支点系统会默认安装一些组件(如libvirt、qemu),为避免安装ceph时与其他包产生依赖冲突问题,安装系统的时候可以选择最小安装。项目中其他需要安装的组件后面一起安装。我这边除了ceph,libvirt的包也会用到,系统默认安装libvirt的版本较低,我这里都采用手动方式部署并制作离线的rpm包。
yum源配置
中兴新支点系统目前没发现有官方的在线yum源地址。在线安装可以使用龙蜥和epel8的yum源。下面是yum源的配置。
复制
AnolisOS.repo
[AppStream]
name=AnolisOS-8.6 - AppStream
baseurl=http://mirrors.openanolis.cn/anolis/8.6/AppStream/x86_64/os
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[BaseOS]
name=AnolisOS-8.6 - BaseOS
baseurl=http://mirrors.openanolis.cn/anolis/8.6/BaseOS/x86_64/os
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[DDE]
name=AnolisOS-8.6 - DDE
baseurl=http://mirrors.openanolis.cn/anolis/8.6/DDE/x86_64/os
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[AppStream-debuginfo]
name=AnolisOS-8.6 - AppStream Debuginfo
baseurl=http://mirrors.openanolis.cn/anolis/8.6/AppStream/x86_64/debug
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[BaseOS-debuginfo]
name=AnolisOS-8.6 - BaseOS Debuginfo
baseurl=http://mirrors.openanolis.cn/anolis/8.6/BaseOS/x86_64/debug
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[Plus-debuginfo]
name=AnolisOS-8.6 - Plus Debuginfo
baseurl=http://mirrors.openanolis.cn/anolis/8.6/Plus/x86_64/debug
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[PowerTools-debuginfo]
name=AnolisOS-8.6 - PowerTools Debuginfo
baseurl=http://mirrors.openanolis.cn/anolis/8.6/PowerTools/x86_64/debug
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[DDE-debuginfo]
name=AnolisOS-8.6 - DDE Debuginfo
baseurl=http://mirrors.openanolis.cn/anolis/8.6/DDE/x86_64/debug
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[Extras]
name=AnolisOS-8.6 - Extras
baseurl=http://mirrors.openanolis.cn/anolis/8.6/Extras/x86_64/os
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[HighAvailability]
name=AnolisOS-8.6 - HighAvailability
baseurl=http://mirrors.openanolis.cn/anolis/8.6/HighAvailability/x86_64/os
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[Plus]
name=AnolisOS-8.6 - Plus
baseurl=http://mirrors.openanolis.cn/anolis/8.6/Plus/x86_64/os
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V6
[PowerTools]
name=AnolisOS-8.6 - PowerTools
baseurl=http://mirrors.openanolis.cn/anolis/8.6/PowerTools/x86_64/os
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CGSL-V61.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.
复制
epel.repo
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
baseurl=https://mirrors.aliyun.com/epel/8/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/yum.repos.d/RPM-GPG-KEY-EPEL-81.2.3.4.5.6.7.8.9.10.11.
复制
ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-pacific/el8/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-pacific/el8/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-pacific/el8/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.
配置yum缓存:
复制
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
cachedir=/data/yum
keepcache=11.2.3.4.5.6.7.8.
安装ceph
制作离线仓库
复制
find /data/cache -name "*.rpm" -exec cp {} /mnt \;
createrepo /mnt
tar -zcvf offline.tar.gz mnt/1.2.3.
安装ceph
使用做的离线rpm包安装ceph。
复制
tar -zxvf offline.tar.gz
cd mnt
rpm -ivh *.rpm --nodeps --force1.2.3.
部署monitor节点
所有 Ceph 群集至少需要一个monitor,并且至少需要与存储在群集上的对象副本一样多的 OSD。引导初始mon是部署 Ceph 存储群集的第一步,这里我直接在node1、node2、node3创建三个mon。
在node1添加monitor
为集群生成唯一的fsid,fsid是群集的唯一标识符,代表 Ceph 存储群集主要用于 Ceph 文件系统的文件系统 ID。
创建ceph配置文件,将生成的fsid添加到配置文件中。
复制
vim /etc/ceph/ceph.conf
[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 = 3
osd pool default min size = 2
osd pool default pg num = 8
osd pool default pgp num = 8
osd crush chooseleaf type = 11.2.3.4.5.6.7.8.9.10.11.12.13.14.15.
为群集创建keyring并生成monitor keyring。monitor通过密钥相互通信。必须生成具有monitor密钥的keyring,并在引导初始monitor时提供keyring。
复制
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon allow *1.
生成管理员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 *1.
生成引导 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 r1.
将生成的键添加到 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.keyring1.2.
更改 ceph.mon.keyring的所有者。
复制
chown ceph:ceph /tmp/ceph.mon.keyring1.
使用主机名、主机 IP 地址和 FSID 生成monitor映射。将其保存为 :/tmp/monmap。
复制
monmaptool --create --add `hostname` 192.168.2.16 --fsid 9c079a1f-6fc2-4c59-bd4d-e8bc232d33a4 /tmp/monmap1.
在monitor主机上创建默认数据目录,目录名是{cluster-name}-{hostname}格式。
复制
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-`hostname`1.
在node1节点对monitor进行初始化。
复制
sudo -u ceph ceph-mon --mkfs -i `hostname` --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring1.
启动mon。
复制
systemctl start ceph-mon@`hostname` && systemctl enable ceph-mon@`hostname`1.
在另外两个节点安装mon
将密钥和配置文件拷贝至其他节点。
复制
scp /tmp/ceph.mon.keyring ceph2:/tmp/ceph.mon.keyring
scp /etc/ceph/* root@ceph2:/etc/ceph/
scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@ceph2:/var/lib/ceph/bootstrap-osd/
scp /tmp/ceph.mon.keyring ceph3:/tmp/ceph.mon.keyring
scp /etc/ceph/* root@ceph3:/etc/ceph/
scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@ceph3:/var/lib/ceph/bootstrap-osd/1.2.3.4.5.6.
在两个节点上修改ceph.mon.keyring属主和属组为ceph。
复制
chown ceph.ceph /tmp/ceph.mon.keyring1.
获取monmap信息。
复制
ceph mon getmap -o /tmp/ceph.mon.map
got monmap epoch 11.2.
在mon节点上进行mon初始化。
复制
sudo -u ceph ceph-mon --mkfs -i `hostname` --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring
sudo -u ceph ceph-mon --mkfs -i `hostname` --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring1.2.
在两个节点上启动mon。
复制
systemctl start ceph-mon@`hostname` && systemctl enable ceph-mon@`hostname`1.
修改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`1.2.3.4.
移除mon
复制
ceph mon remove {mon-id}1.
添加osd
Ceph提供了该ceph-volume实用程序,该实用程序可以准备逻辑卷,磁盘或分区以供Ceph使用。该ceph-volume实用程序通过增加索引来创建OSD ID。
创建osd
在node1执行。
复制
ceph-volume lvm create --data /dev/sdb1.
上面的创建过程可以分为两个阶段(准备和激活):
复制
ceph-volume lvm prepare --data /dev/sdb
查看osd fsid
ceph-volume lvm list
ceph-volume lvm activate {ID} {FSID}1.2.3.4.
启动各个节点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@21.2.3.4.5.6.7.8.9.10.11.
创建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`1.2.
创建身份验证密钥
复制
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-`hostname`/keyring1.2.
启动mgr守护进程
复制
systemctl enable ceph-mgr@`hostname -s` && systemctl start ceph-mgr@`hostname -s`
或者
ceph-mgr -i `hostname`1.2.3.
最后查看ceph运行状态,我只添加了两个osd。
