一、准备及注意事项
- SES 5.X 必须使⽤SLES 12 sp3作为操作系统
- 准备SLES和SES的官⽅ISO镜像,以及对应的更新包,共计4个文件,后续配置软件源时需要使用,且保证所有节点的数据一致。
- 建议在zypper软件源的配置上,尽量使用集群外的机器提供http/ftp/nfs服务,或者把所有文件都复制到每一台节点里,作为本地file服务,而不要使用集群里的服务器来提供http/ftp/nfs,避免和ceph集群环境有冲突。
- mem = TB of raw OSD capacity * 2GB vs 3/5 * OSD count
- WAL-size = 2GB and more, no limitation (optional)
- DB-size = 10GB * TB of raw OSD capacity
- Journal: 6 journals on 1 SSD, 12 journals on 1 NVMe
二、操作系统
2.1 安装操作系统 - 安装指南补充
3.5.1章节
光盘引导启动后,将光标移动到“installation”上,在Boot Options中输入
self_update=0
可以跳过检查系统更新的步骤。
3.6.3章节,建议使⽤如下分区结构
/boot, ext4, 1GB
swap, swap, 16GB
/, ext4, 100GB
/var, ext4, 剩余所有容量
3.9.4 ~ 3.9.5章节
不⽤安装: AppArmor 和 32-bit runtime environment
仅安装以下四项即可:
"Help and Support Documentation"
"Base System"
"Minimal System"
"YaST2 configuration packages"
3.9.6 ~ 3.9.7章节
点击“Firewall will be enabled”旁边的“disable”,可直接禁用操作系统内置的防火
墙
2.2 操作系统初始化设置
修改每台服务器的主机名,示例如下
hostnamectl set-hostname node1.fiberhome.com
配置服务器的网络,如IP、 bond
yast lan
mode=1
primary_reselect=1
MTU=9000
建议先登出再登陆,确保主机名修改成功
2.3 配置zypper软件源
可以从现有集群内copy.
本文档使用本地文件模式,不依赖额外的设备与服务,但是会在每个节点占用约15GB的本地磁盘空间。
rm -rf /etc/zypp/repos.d/*
mkdir -p /repo/sles/
mkdir -p /repo/ses/
mkdir -p /repo/sles_updates/
mkdir -p /repo/ses_updates/
- sles目录用于原版SLES 12 sp3操作系统的文件存放
- ses目录用于原版SES 5.0的文件存放
- sles_updates目录用于存放操作系统的更新包
- ses_updates目录用于存放SES 5.0的更新包(SES5.5没有独立的ISO,这个目录也可以看作是SES 5.5的安装包)
- 然后把ISO和tar包里面的文件全部复制到上述目录
添加软件源
备注:非官方签名的软件包需要将-fg修改为-fG(G为不检查签名)
zypper ar -fg -t yast2 /repo/sles/ sles
zypper ar -fg -t yast2 /repo/ses/ ses
zypper ar -fg -t rpm-md /repo/sles_updates/ sles_updates
zypper ar -fg -t rpm-md /repo/ses_updates/ ses_updates
2.4 SES安装准备工作
修改/etc/hosts文件,新增记录,示例如下
注意:系统会自动添加一条本机的记录,注意不要重复,避免冲突,在集群内添加新的服务器信息,保证每台服务器的如下配置文件一致。
192.168.1.101 admin.fiberhome.com admin
192.168.1.102 node1.fiberhome.com node1
192.168.1.103 node2.fiberhome.com node2
192.168.1.104 node3.fiberhome.com node3
192.168.1.105 node4.fiberhome.com node4
node新节点的NTP服务配置
echo "server 192.168.1.101" >> /etc/ntp.conf
echo "restrict 192.168.1.0 mask 255.255.255.0 notrap nomodify" >> /etc/ntp.conf
systemctl enable ntpd.service
新加节点的系统更新 zypper update
zypper ref
zypper update
reboot
三、SES的扩容与配置
1.node节点
zypper install salt-minion
systemctl enable salt-minion.service
echo "master: admin.fiberhome.com" > /etc/salt/minion.d/master.conf
systemctl start salt-minion
2.如果 Salt Master 的主机名不是 salt ,请编辑 /etc/salt/minion 并添加下面一行:
sed -i 's/#master: salt/master: admin/g' /etc/salt/minion
3.salt验证,仅在admin节点执行
在 Salt Master 上接受所有 Salt 密钥:
salt-key --accept-all
salt-key -L
sleep 5
salt '*' test.ping
4.deepsea安装与配置,仅在admin节点执行
salt '' grains.append deepsea default
sleep 5
salt -C 'G@deepsea:' test.ping
5.开始使用deepsea部署SES集群, stage 0~3
deepsea stage run ceph.stage.0 等同于 salt-run state.orch ceph.stage.0
5.1执行deepsea 0-1
deepsea stage run ceph.stage.0
deepsea stage run ceph.stage.1
5.2此时需配置SES环境
生成配置方案(不同的硬件配置会有不同的配置方案,以达到最优效果)
配置方案以创建集群的方案为准:
示例如下:
salt-run proposal.populate name=fiberhome target='*' ratio=1 db=1-600 journal=1-600 data=3000-8000 db-size=400G journal-size=10G
查看上述命令的具体含义
salt-run proposal.help
5.3继续SES集群部署
deepsea stage run ceph.stage.2
deepsea stage run ceph.stage.3
检查集群状态,部署完成。
四、问题排查:
1.如出现卡在stage.3上某一节点无法创建osd的解决办法:
关闭这一节点 ceph.target服务
systemctl stop ceph.target
擦除磁盘:
脚本根据实际osd盘符具体修改:
for i in {b..z};do sgdisk -Z -o -g /dev/sd$i && dd if=/dev/zero of=/dev/sd$i count=1000000;done
【可选】将磁盘打上gpt标签:
for i in {b..z};do parted -m -a opt /dev/sd$i mklabel gpt;done
重启系统
reboot
开机后停止ceph.target服务
systemctl stop ceph.target
重新运行stage.3
deepsea stage run ceph.stage.3