配置部署环境
安装部署前需进行环境配置,主要包括配置下载源、关闭防火墙、配置主机名、配置NTP(Network Time Protocol)、配置免密登录和关闭SELinux等操作。
配置下载源
- 在所有服务端节点确认openEuler源。
- 确认“openEuler.repo”文件和openEuler源对应。
vi /etc/yum.repos.d/openEuler.repo
- openEuler 20.03源如下所示。
1 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
[OS] name=OS baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/$basearch/ enabled=1 gpgcheck=0 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/$basearch/RPM-GPG-KEY-openEuler [everything] name=everything baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/$basearch/ enabled=1 gpgcheck=0 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/$basearch/RPM-GPG-KEY-openEuler [EPOL] name=EPOL baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/EPOL/$basearch/ enabled=1 gpgcheck=0 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/$basearch/RPM-GPG-KEY-openEuler [debuginfo] name=debuginfo baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/debuginfo/$basearch/ enabled=1 gpgcheck=0 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/debuginfo/$basearch/RPM-GPG-KEY-openEuler [source] name=source baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/source/ enabled=1 gpgcheck=0 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/source/RPM-GPG-KEY-openEuler [update] name=update baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/update/$basearch/ enabled=1 gpgcheck=0 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/$basearch/RPM-GPG-KEY-openEuler
- openEuler 22.03源如下所示。
1 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
[OS] name=OS baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/OS/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/OS/$basearch/RPM-GPG-KEY-openEuler [everything] name=everything baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/everything/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/everything/$basearch/RPM-GPG-KEY-openEuler [EPOL] name=EPOL baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/EPOL/main/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/OS/$basearch/RPM-GPG-KEY-openEuler [debuginfo] name=debuginfo baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/debuginfo/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/debuginfo/$basearch/RPM-GPG-KEY-openEuler [source] name=source baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/source/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/source/RPM-GPG-KEY-openEuler [update] name=update baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/update/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/OS/$basearch/RPM-GPG-KEY-openEuler [update-source] name=update-source baseurl=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/update/source/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS-SP1/source/RPM-GPG-KEY-openEuler
- openEuler 20.03源如下所示。
- 确认无误后输入:q!并按“Enter”键退出文件。
- 确认“openEuler.repo”文件和openEuler源对应。
- 在所有节点将编译Ceph安装包编译出的使能KSAL后的Ceph RPM包配置为本地源。
- 创建并进入“ceph-ksal”路径。
mkdir -p /home/ceph-ksal cd /home/ceph-ksal
- 将编译Ceph安装包编译出RPM包放置在“ceph-ksal”路径下并解压。
cp /home/rpmbuild/RPMS/ceph-ksal-rpm.tar.gz /home/ceph-ksal tar -zxvf ceph-ksal-rpm.tar.gz
- 创建本地源。
createrepo .
- 打开“local.repo”文件。
vi /etc/yum.repos.d/local.repo
- 按“i”进入编辑模式,在文件末尾添加如下内容。
[ceph-spdk] name=ceph-ksal baseurl=file:///home/ceph-ksal enabled=1 gpgcheck=0 priority=1
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 创建并进入“ceph-ksal”路径。
- 在所有节点将pip源配置为华为镜像源,提高下载速度。
- 新建“.pip”路径并在路径下创建“pip.conf”文件。
1 2
mkdir -p ~/.pip vi ~/.pip/pip.conf
- 按“i”进入编辑模式,添加如下内容。
1 2 3 4
[global] timeout = 120 index-url = https://repo.huaweicloud.com/repository/pypi/simple trusted-host = repo.huaweicloud.com
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 新建“.pip”路径并在路径下创建“pip.conf”文件。
关闭防火墙
Linux系统默认开启的防火墙安全机制会阻止各组件之间的正常连接,导致无法正常部署Ceph集群。这是Linux OS本身的行为,鲲鹏BoostKit分布式存储KSAL并不对此提供的详细解决方案。如果客户想在自己的系统中开启防火墙,则需要自行寻找解决方法。
针对此限制,本文提供了快速关闭防火墙的方法。鲲鹏BoostKit分布式存储KSAL特性中,
关闭防火墙可能会导致安全问题,如果客户最终的解决方案本身就没有规划启用防火墙,则建议通过端到端的整体方案来弥补防火墙禁用带来的风险,且需自行承担安全风险。如果客户有开启防火墙的需求,则建议对防火墙进行细粒度的规则配置,根据实际使用情况,开放对应的端口、协议,并保证整个系统的安全。
1 2 3 |
systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld.service |
配置主机名
配置永久静态主机名,建议将服务端节点配置为ceph1~ceph3,客户端节点配置为client1~client3。
- 配置节点名称。
- 在所有节点修改域名解析文件。
- 打开文件。
1
vi /etc/hosts
- 按“i”键进入编辑模式,在文件中加入以下内容。
1 2 3 4 5 6
192.168.3.166 ceph1 192.168.3.167 ceph2 192.168.3.168 ceph3 192.168.3.160 client1 192.168.3.161 client2 192.168.3.162 client3
- IP地址为集群规划中所规划的IP地址,仅为示例,请根据实际情况进行修改。可通过ip a命令查询实际IP地址。
- 本文规划集群为三台服务端节点和三台客户端节点,请根据实际节点数量对文件内容进行调整。
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 打开文件。
配置NTP
Ceph中会自动校验集群节点之间的时间,若不同节点之间时差较大,会产生告警,因此需要在各节点间配置时钟同步。
- 在所有节点安装NTP服务。
yum -y install ntp ntpdate
- 在所有节点备份旧配置。
1
cd /etc && mv ntp.conf ntp.conf.bak
- 将ceph1配置为NTP服务端节点。
- 在ceph1新建NTP配置文件。
1
vi /etc/ntp.conf
- 按“i”键进入编辑模式,新增如下内容。
1 2 3 4 5
restrict 127.0.0.1 restrict ::1 restrict 192.168.3.0 mask 255.255.255.0 server 127.127.1.0 fudge 127.127.1.0 stratum 8
以上文件中,“restrict 192.168.3.0 mask 255.255.255.0”是ceph1所在的Public网段IP地址与掩码。
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 在ceph1新建NTP配置文件。
- 将除ceph1以外的其他所有节点配置为NTP客户端节点。
- 在除ceph1以外的其他所有节点新建NTP文件。
1
vi /etc/ntp.conf
- 按“i”键进入编辑模式,新增如下内容。此处输入的IP地址为ceph1的IP地址。
1
server 192.168.3.166
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 在除ceph1以外的其他所有节点新建NTP文件。
- 启动NTP服务。
- 在ceph1节点启动NTP服务,并检查状态。
1 2 3
systemctl start ntpd.service systemctl enable ntpd.service systemctl status ntpd.service
回显如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
[root@ceph1 ~]# systemctl start ntpd.service [root@ceph1 ~]# systemctl enable ntpd.service [root@ceph1 ~]# systemctl status ntpd.service ● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2023-09-01 10:14:56 CST; 8s ago Main PID: 129667 (ntpd) Tasks: 2 Memory: 3.5M CGroup: /system.slice/ntpd.service └─129667 /usr/sbin/ntpd -u ntp:ntp -g Sep 01 10:14:56 ceph1 ntpd[129667]: Listen normally on 4 bond2 192.168.2.128:123 Sep 01 10:14:56 ceph1 ntpd[129667]: Listen normally on 5 bond1 192.168.1.128:123 Sep 01 10:14:56 ceph1 ntpd[129667]: Listen normally on 6 lo [::1]:123 Sep 01 10:14:56 ceph1 ntpd[129667]: Listen normally on 7 enp125s0f0 [fe80::5d5a:faa4:75a4:4afa%2]:123 Sep 01 10:14:56 ceph1 ntpd[129667]: Listen normally on 8 bond2 [fe80::a975:9916:4607:a50b%12]:123 Sep 01 10:14:56 ceph1 ntpd[129667]: Listen normally on 9 bond1 [fe80::147b:9453:cfc0:d19f%13]:123 Sep 01 10:14:56 ceph1 ntpd[129667]: Listening on routing socket on fd #26 for interface updates Sep 01 10:14:56 ceph1 ntpd[129667]: kernel reports TIME_ERROR: 0x2041: Clock Unsynchronized Sep 01 10:14:56 ceph1 ntpd[129667]: kernel reports TIME_ERROR: 0x2041: Clock Unsynchronized Sep 01 10:14:56 ceph1 systemd[1]: Started Network Time Service.
- NTP服务启动后等待5分钟,在除ceph1的所有节点强制同步NTP服务端(ceph1)时间。
1
ntpdate ceph1
- 在除ceph1的所有节点写入硬件时钟,避免重启后失效。
1
hwclock -w
- 在除ceph1的所有节点安装并启动crontab工具。
1 2 3 4
yum install -y crontabs systemctl enable crond.service systemctl start crond.service crontab -e
- 按“i”键进入编辑模式,添加以下内容,每隔10分钟自动与ceph1同步时间。
1
*/10 * * * * /usr/sbin/ntpdate 192.168.3.166
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 在ceph1节点启动NTP服务,并检查状态。
配置免密登录
- 在ceph1节点生成公钥。
ssh-keygen -t rsa
按“Enter”键使用默认配置。
- 在ceph1节点将公钥发放至集群其他节点。
for i in {1..3};do ssh-copy-id ceph$i;done for i in {1..3};do ssh-copy-id client$i;done
根据提示确认操作并输入节点root密码。
关闭SELinux
Linux系统默认开启的SELinux安全机制会阻止各组件之间的正常连接,导致无法正常部署Ceph集群。这是Linux OS本身的行为,鲲鹏BoostKit分布式存储使能套件并不对此提供的详细解决方案。如果客户想在自己的系统中使用SELinux,则需要自行寻找解决方法。
针对此限制,我们提供了快速禁用SELinux的方法。鲲鹏BoostKit分布式存储使能套件中,提供的SELinux配置方法仅供参考,需客户自行评估并承担相应风险。
禁用SELinux可能会导致安全问题,如果客户最终的解决方案本身就没有规划启用SELinux,则建议通过端到端的整体方案来弥补SELinux关闭带来的风险,且需自行承担安全风险。如果客户有SELinux的需求,则建议根据实际的SELinux问题进行细粒度的规则配置,并保证整个系统的安全。
在所有节点关闭SELinux。
- 方式一:临时关闭,重启服务器后失效。
setenforce permissive
- 方式二:永久关闭,下一次重启服务器自动生效。
- 打开config文件。
1
vi /etc/selinux/config
- 按“i”键进入编辑模式,修改SELINUX=permissive。
1 2 3 4 5 6 7 8 9 10 11 12 13
[root@ceph1 ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of these three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 打开config文件。