聊聊中興新支點(diǎn)系統(tǒng)離線安裝ceph 16.2.10
關(guān)于中興新支點(diǎn)系統(tǒng)
中興新支點(diǎn)操作系統(tǒng)基于Linux穩(wěn)定內(nèi)核,分為嵌入式操作系統(tǒng)(NewStart CGEL)、服務(wù)器操作系統(tǒng)(NewStart CGSL)、桌面操作系統(tǒng)(NewStart NSDL),經(jīng)過近10年專業(yè)研發(fā)團(tuán)隊(duì)的積累和發(fā)展,產(chǎn)品形成安全加固、自主可控、易用管理的突出優(yōu)勢(shì)。目前,中興新支點(diǎn)操作系統(tǒng)已在國內(nèi)外各大電信運(yùn)營商、國有大中型企業(yè)及電子政務(wù)解決方案中投入使用,服務(wù)于交換網(wǎng)絡(luò)、核心網(wǎng)絡(luò)、骨干網(wǎng)絡(luò)、智慧城市、視頻監(jiān)控等系統(tǒng)底層。 以上轉(zhuǎn)自某乎。
背景
在國家數(shù)字化轉(zhuǎn)型和國產(chǎn)化替代的大背景下,尤其是政務(wù)類項(xiàng)目,現(xiàn)在基本用國產(chǎn)化的CPU和操作系統(tǒng)來承載其業(yè)務(wù),實(shí)現(xiàn)自主創(chuàng)新和安全可靠。 本文在中興新支點(diǎn)系統(tǒng)(CGSL)和海光CPU上進(jìn)行ceph離線部署。下面方法也適用于龍蜥和centos8。
制作離線安裝包
首先需要找一臺(tái)可以聯(lián)網(wǎng)的中興新支點(diǎn)機(jī)器,在上面制作ceph的離線rpm源。中興新支點(diǎn)系統(tǒng)會(huì)默認(rèn)安裝一些組件(如libvirt、qemu),為避免安裝ceph時(shí)與其他包產(chǎn)生依賴沖突問題,安裝系統(tǒng)的時(shí)候可以選擇最小安裝。項(xiàng)目中其他需要安裝的組件后面一起安裝。我這邊除了ceph,libvirt的包也會(huì)用到,系統(tǒng)默認(rèn)安裝libvirt的版本較低,我這里都采用手動(dòng)方式部署并制作離線的rpm包。
yum源配置
中興新支點(diǎn)系統(tǒng)目前沒發(fā)現(xiàn)有官方的在線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-V6
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-8
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.asc
配置yum緩存
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
cachedir=/data/yum
keepcache=1
安裝ceph
yum install ceph -y
制作離線倉庫
find /data/cache -name "*.rpm" -exec cp {} /mnt \;
createrepo /mnt
tar -zcvf offline.tar.gz mnt/
安裝ceph
使用做的離線rpm包安裝ceph
tar -zxvf offline.tar.gz
cd mnt
rpm -ivh *.rpm --nodeps --force
部署monitor節(jié)點(diǎn)
所有 Ceph 群集至少需要一個(gè)monitor,并且至少需要與存儲(chǔ)在群集上的對(duì)象副本一樣多的 OSD。引導(dǎo)初始mon是部署 Ceph 存儲(chǔ)群集的第一步,這里我直接在node1、node2、node3創(chuàng)建三個(gè)mon。
在node1添加monitor
為集群生成唯一的fsid,fsid是群集的唯一標(biāo)識(shí)符,代表 Ceph 存儲(chǔ)群集主要用于 Ceph 文件系統(tǒng)的文件系統(tǒng) ID
uuidgen
創(chuàng)建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 = 1
為群集創(chuàng)建keyring并生成monitor keyring。monitor通過密鑰相互通信。必須生成具有monitor密鑰的keyring,并在引導(dǎo)初始monitor時(shí)提供keyring。
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
生成管理員keyring,生成用戶并將用戶添加到client.admin keyring中。要使用 CLI 工具,必須有一個(gè)用戶,并且還必須將用戶添加到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 *'
生成引導(dǎo) 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
使用主機(jī)名、主機(jī) IP 地址和 FSID 生成monitor映射。將其保存為 :/tmp/monmap
monmaptool --create --add `hostname` 192.168.2.16 --fsid 9c079a1f-6fc2-4c59-bd4d-e8bc232d33a4 /tmp/monmap
在monitor主機(jī)上創(chuàng)建默認(rèn)數(shù)據(jù)目錄,目錄名是{cluster-name}-{hostname}格式
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-`hostname`
在node1節(jié)點(diǎn)對(duì)monitor進(jìn)行初始化
sudo -u ceph ceph-mon --mkfs -i `hostname` --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
啟動(dòng)mon
systemctl start ceph-mon@`hostname` && systemctl enable ceph-mon@`hostname`
在另外兩個(gè)節(jié)點(diǎn)安裝mon
將密鑰和配置文件拷貝至其他節(jié)點(diǎn)
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/
在兩個(gè)節(jié)點(diǎn)上修改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節(jié)點(diǎn)上進(jìn)行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.keyring
在兩個(gè)節(jié)點(diǎn)上啟動(dòng)mon
systemctl start ceph-mon@`hostname` && systemctl enable ceph-mon@`hostname`
修改ceph.conf并重啟ceph-mon(所有節(jié)點(diǎn)操作)
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`
移除mon
ceph mon remove {mon-id}
添加osd
Ceph提供了該ceph-volume實(shí)用程序,該實(shí)用程序可以準(zhǔn)備邏輯卷,磁盤或分區(qū)以供Ceph使用。該ceph-volume實(shí)用程序通過增加索引來創(chuàng)建OSD ID。
創(chuàng)建osd
在node1執(zhí)行
ceph-volume lvm create --data /dev/sdb
上面的創(chuàng)建過程可以分為兩個(gè)階段(準(zhǔn)備和激活):
ceph-volume lvm prepare --data /dev/sdb
查看osd fsid
ceph-volume lvm list
ceph-volume lvm activate {ID} {FSID}
啟動(dòng)各個(gè)節(jié)點(diǎn)osd進(jìn)程
#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
創(chuàng)建MGR
在運(yùn)行ceph-mon守護(hù)程序的每個(gè)節(jié)點(diǎn)上,還應(yīng)該設(shè)置一個(gè)ceph-mgr守護(hù)程序。
創(chuàng)建密鑰目錄
所有mgr節(jié)點(diǎn)都要執(zhí)行
sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-`hostname -s`
cd /var/lib/ceph/mgr/ceph-`hostname -s`
創(chuàng)建身份驗(yàn)證密鑰
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`/keyring
啟動(dòng)mgr守護(hù)進(jìn)程
systemctl enable ceph-mgr@`hostname -s` && systemctl start ceph-mgr@`hostname -s`
或者
ceph-mgr -i `hostname`
最后查看ceph運(yùn)行狀態(tài),我只添加了兩個(gè)osd