在openEuler操作系统上使用root用户搭建两节点Ceph集群,部署块存储,供学习研究使用。
主机名 | IP | 磁盘 | 角色 |
---|---|---|---|
ceph-100 | 192.168.100.100 | /dev/sda, /dev/sdb, /dev/sdc | ceph-deploy,monitor,mgr,osd |
ceph-101 | 192.168.100.101 | /dev/sda, /dev/sdb, /dev/sdc | monitor,mgr,osd |
[root@ceph-100 ~]# cat /etc/os-release
NAME="openEuler"
VERSION="20.03 (LTS-SP1)"
ID="openEuler"
VERSION_ID="20.03"
PRETTY_NAME="openEuler 20.03 (LTS-SP2)"
ANSI_COLOR="0;31"
[root@ceph-100 ~]# ceph -v
ceph version 12.2.8 (ae699615bac534ea496ee965ac6192cb7e0e07c0) luminous (stable)
[root@ceph-100~]# ceph-deploy --version
2.0.1
经过验证,推荐使用清华源来获取特定版本的ISO镜像。本示例将按照前述章节2.1下载Euler 20.3 SP1镜像.
# 下载常规镜像,供KVM安装部署虚拟机ceph-100, ceph-101
[root@node1 ~] wget https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-20.03-LTS-SP1/ISO/aarch64/openEuler-20.03-LTS-SP1-aarch64-dvd.iso
# 下载同样版本的全量镜像,供执行Ceph本地安装部署 -- 因euler源较少、下载缓慢且不稳定故强烈推荐本地安装
[root@node1 ~] wget https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-20.03-LTS-SP1/ISO/aarch64/openEuler-20.03-LTS-SP1-everything-aarch64-dvd.iso
准备两个虚拟机(具体步骤请参考其他博客),虚拟机需要拥有三个磁盘(建议均大于50GB)。本文示例在物理服务器node1上利用KVM创建虚拟机ceph-100和ceph-101,其配置相同,细节信息参考ceph-100:
[root@node1 ~]# virsh dominfo ceph_100
Id: 28
Name: ceph_219
UUID: 0ad711e1-5d28-4599-8ec8-3409a568b456
OS Type: hvm
State: running
CPU(s): 4
CPU time: 67697.8s
Max memory: 8,388,608 KiB
Used memory: 8,388,608 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
[root@node1 ~]# virsh domblklist ceph_100
Target Source
-------------------------------------------------------------------
sda /data4/wurz/ceph_100/ceph_100.qcow2
sdb /data4/wurz/ceph_100/ceph_100_01.qcow2
sdc /data4/wurz/ceph_100/ceph_100_02.qcow2
sdd -
参照章节2.1对两个虚拟机ceph-100, ceph-101配置永久主机名。
[root@ceph-100~]# hostnamectl --static set-hostname ceph-100
[root@ceph-101~]# hostnamectl --static set-hostname ceph-101
[root@ceph-101~]# cat /etc/hosts
192.168.100.100 ceph-100
192.168.100.101 ceph-101
[root@ceph-101~]# cat /etc/hosts
192.168.100.100 ceph-100
192.168.100.101 ceph-101
在虚拟机ceph-100, ceph-101执行如下指令,关闭防火墙。
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
在管理节点ceph-100上执行如下指令生成密钥,并拷贝至ceph-101。
# 针对该交互指令一直使用默认配置即可
[root@ceph-100~]# ssh-keygen -t rsa
# 从管理节点ceph-100复制密钥到其他节点,可能需要输入密码(虚拟机root用户密码)
[root@ceph-100~]# ssh-copy-id ceph@ceph-100
[root@ceph-100~]# ssh-copy-id ceph@ceph-101
因Ceph集群会自动校验存储节点间的时间,为了避免因时间差异而导致告警,此处需要针对每个节点配置NTP服务。
每个节点均需配置。
# 安装NTP服务
yum -y install ntp ntpdate
# 备份旧配置
cd /etc && mv ntp.conf ntp.conf.bk
以管理节点ceph-100作为NTP的服务端,进行如下配置
[root@ceph-100~]# cat /etc/ntp.conf
restrict 127.0.0.1
restrict ::1
restrict 192.168.100.0 mask 255.255.255.0
server 127.127.1.0
fudge 127.127.1.0 stratum 8
备注:restrict 192.168.100.0 为ceph-100的网段, mask 255.255.255.0为ceph-100的掩码。
NTP客户端的配置文件/etc/ntp.conf中需要增加NTP服务端的IP信息。
[root@ceph-101~]# cat /etc/ntp.conf
server 192.168.100.100
每个节点均需启动NTP服务。
systemctl start ntpd
systemctl enable ntpd
systemctl status ntpd
在管理节点ceph-100之外的所有节点上执行如下指令:
# 强制当前节点同步NTP服务端ceph-100的时间
ntpdate ceph-100
# 当前节点写入硬件时钟,避免重启失效
hwclock -w
# 设置定时任务,每隔10分钟与NTP服务端ceph-100同步时间
yum install -y crontabs
chkconfig crond on
systemctl start crond
crontab -e
# crontab新增如下内容
*/10 * * * * /usr/sbin/ntpdate 192.168.3.166
Euler系统epel源配置相对繁杂,请务必确保正确配置,否则会导致yum无法下载依赖问题。需要注意的是,经过实践证明,即便该epel源配置正确,下载资源时候依然会受到资源存在性以及稳定性的限制而导致失败。此时可以考虑从前文提到的全量镜像(-everything-.iso)使用yum install执行部分软件的安装。
请参考下述流程在每个节点进行配置。
# 创建全量镜像挂载点 -- 此时需要注意系统盘容量,全量进项大小一般接近20GB,这也是文档开始要求每个磁盘均不小于50GB的原因之一
mkdir -p /iso
mount /root/openEuler-***-everything-aarch64-dvd.iso /iso
vi /etc/yum.repos.d/openEuler.repo
# 增加下述两部分内容
[Base]
name=Base
baseurl=file:///iso
enabled=1
gpgcheck=0
priority=1
[arch_fedora_online]
name=arch_fedora
baseurl=https://mirrors.huaweicloud.com/fedora/releases/34/Everything/aarch64/os/
enabled=1
gpgcheck=0
priority=2
# 设置立即生效,但是重启会失效
setenforce permissive
# 设置永久生效
vi /etc/selinux/config
# 修改SELINUX=permissive
[root@ceph-219 ~]# 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
所有节点均需修改。因openEuler系统安全性很高,需要修改umask为0022才能正常部署Ceph。
vi /etc/bashrc
将最后一行修改/新增为“umask 0022”。
# 刷新配置生效
source /etc/bashrc
# 验证是否生效
umask
# 输出 0022则表明已生效
所有节点均需配置。
vi /etc/yum.repos.d/ceph.repo
# 增加如下内容
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-nautilus/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
# 更新yum源
yum clean all && yum makecache
务必确保该步骤成功,一旦失败则需要先解决该问题。
所有节点均需安装。
dnf -y install librados2-14.2.10 ceph-14.2.10
pip install prettytable
经过实践证明Ceph 14.2.10极有可能失败,将会提供本地安装Ceph 12.2.8版本,请看下述信息:
仅管理节点ceph-100需要安装,后续服务部署依赖此软件。
[root@ceph-100~]# pip install ceph-deploy
# 备注:该步骤可能因网络问题而失败,一旦失败请尝试其他办法
# 修改配置,增加 'openeuler': fedora, 使得ceph-deploy适配openEuler系统
[root@ceph-100~]# vi /lib/python2.7/site-packages/ceph_deploy/hosts/__init__.py
ceph -v
ceph version 12.2.8 (ae699615bac534ea496ee965ac6192cb7e0e07c0) luminous (stable)
仅需在管理节点ceph-100执行。
# 创建集群
[root@ceph-100~]# cd /etc/ceph
[root@ceph-100 ceph]# ceph-deploy new ceph-100 ceph-101
# 修改ceph.conf配置
[root@ceph-100 ceph]# cat /etc/ceph/ceph.conf
[global]
fsid = 7dea53e4-4760-4207-925c-e895720d667a
mon_initial_members = ceph-100, ceph-101
mon_host = 192.168.122.100,192.168.122.101
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public_network = 192.168.100.0/24
cluster_network = 192.168.100.0/24
[mon]
mon_allow_pool_delete = true
# 初始化MON服务
[root@ceph-100 ceph]# ceph-deploy mon create-initial
# 将“ceph.client.admin.keyring”拷贝到各个节点上
[root@ceph-100 ceph]# ceph-deploy --overwrite-conf admin ceph-100 ceph-101
# 校验是否配置成功
[root@ceph-100 ceph]# ceph -s
cluster:
id: 7dea53e4-4760-4207-925c-e895720d667a
health: HEALTH_OK
services:
mon: 2 daemons, quorum ceph1,ceph2 (age 1h)
仅需在管理节点ceph-100执行。
ceph-deploy mgr create ceph1 ceph2 ceph3
# 验证是否部署成功
ceph -s
cluster:
id: 7dea53e4-4760-4207-925c-e895720d667a
health: HEALTH_OK
services:
mon: 2 daemons, quorum ceph-100,ceph-101 (age 1h)
mgr: ceph-100(active, since 1d), standbys: ceph-101
仅需在管理节点ceph-100执行。