更新时间:2024-11-29 16:23:30

1、地址修改说明

1.1 ECeph组网说明

ECeph使用3个网段:

  1. 对象存储业务网络网段:用于对象存储业务网络,对接客户端进行数据读写

  2. 对象存储内部网络网段:用于对象存储内部集群通信,监测服务状态,确保数据完整

  3. 管理网络网段:ECeph管理程序工作网络以及管理页面访问网络

上述3个网段,可以由1个IP承担。但推荐使用2个IP,尤其在生产环境中,对存储的性能和可靠性有很大程度的提升,对应的组网方式为:

业务网络+管理网络:对象存储业务网络、管理网络共用2台千兆或万兆交换机,各节点使用2个千兆网口绑定,连接2个堆叠交换机,实现业务网段冗余。

对象存储内部网络:各节点使用2个10G接口绑定,连接2个堆叠交换机,实现内部网段冗余。
eceph对象存储网络.png

因此,每个ECeph节点至少需要2个IP,另外可根据需要配置VIP。VIP配置参考《ECeph对象存储服务独立部署及升级实施指导手册》。

1.2 ECeph IP地址修改说明

存在以下几种IP地址修改情景:

已部署环境(ECeph独立部署) 修改场景 涉及操作
采用推荐组网方案:业务IP与内部IP不同网段 仅修改业务IP 修改ECeph管理程序IP
修改K8S 集群IP
仅修改内部IP 修改ECeph内部IP
修改业务IP及内部IP 综上
未采用推荐的组网方案:业务IP与内部IP相同 修改业务IP,同时新增内部IP 修改ECeph管理程序IP
修改ECeph内部IP
修改K8S集群IP

说明:

ECeph有两个IP网段时,K8S运行在业务IP网段。
K8S运行网段.png

2、修改前的准备工作

说明:

  1. 该文档仅适用于ProtonECeph独立部署场景。与AS融合部署场景不包括在内
  2. 内部地址修改会导致ceph的集群不可用,即业务会中断。请预留停机维护时间。

2.1 信息收集

为已有ECeph集群收集以下信息,并填入下面的表格。

  1. 节点列表信息:hostname及业务IP地址(运行kubectl get nodes -o wide查看)。

  2. 节点的实IP地址(对象存储业务地址,对象存储集群管理节点地址,对象存储内部地址):cat /opt/minotaur/config/minotaur.conf (对应:object_ip,node_ip,internal_ip)。

  3. 业务IP及内部IP地址对应的网卡名

  4. ceph的每个mon节点信息,以及mon名称(例如m0,m1)。

  5. 对应内外部地址的可能的VIP地址:cat /etc/keepalived/keepalived.conf

  6. 确认Ceph集群是在健康状态下执行。ceph -s 状态是HEALTH OK的。

  7. 确保新业务IP、内部IP和VIP未被占用。

  8. 获取如下两个参数:

apiserver 访问地址:proton-cs.lb.aishu.cn:16643,通过 grep server ~/.kube/config 获取

etcd数据目录地址:/var/lib/etcd ,通过 grep data-dir /etc/kubernetes/manifests/etcd.yaml 获取

hostname 角色 业务IP&object_ip &node_ip internal_ip 节点IP对应网卡名 内部IP地址对应的网卡名 mon名称
node-184-88 master 10.2.184.88 10.10.184.88 ens160 ens192 m0
node-184-89 master 10.2.184.89 10.10.184.89 ens160 ens192 m1
node-184-90 master 10.2.184.90 10.10.184.90 ens160 ens192 m2
外部VIP地址 10.2.184.136
内部VIP地址 10.10.184.136
apiserver 访问地址 proton-cs.lb.aishu.cn:16643
etcd数据目录地址 /var/lib/etcd

2.2 规划新IP

确认新的IP无占用,且配置到主机上后,IP之间网络可通。

hostname 角色 新业务IP&node_ip& object ip 新内部internal_ip 节点IP对应网卡名 内部IP地址对应的网卡名 mon名称
node-184-88 master 10.2.184.133 20.20.184.133 ens160 ens192 m0
node-184-89 master 10.2.184.134 20.20.184.134 ens160 ens192 m1
node-184-90 master 10.2.184.135 20.20.184.135 ens160 ens192 m2
外部VIP地址 10.2.184.137
内部VIP地址 20.20.184.137
apiserver 访问地址 proton-cs.lb.aishu.cn:16643
etcd数据目录地址 /var/lib/etcd

说明:内部IP修改是通过新增加内部IP(不修改已有内部IP),并将ECeph内部IP切换到新IP的方式实现。因此需要先在内部地址网络上配置好新的IP地址。

2.3 数据备份

2.3.1 配置文件备份

集群中所有节点/etc/ceph/ceph.conf/opt/minotaur/config/minotaur.conf配置文件都需备份。执行命令如下:

cp /etc/ceph/ceph.conf /etc/ceph/ceph.conf.bak

cp /opt/minotaur/config/minotaur.conf /opt/minotaur/config/minotaur.conf.bak1

配置文件备份.png

2.3.2 ceph-mon备份

不修改内部IP,则这部分不需要操作。

修改内部IP地址需要修改ceph-mon程序的二进制内容。由于ceph-mon的二进制内容包含集群数据,一旦丢失,集群将不可用。修改前需对其进行备份。

集群中所有mon节点的ceph-mon的二进制内容都需备份。执行命令如下:

cp -r /var/lib/ceph/mon/mon{monid} /var/lib/ceph/mon/mon{monid}_bak

ceph-mon二进制内容备份.png

2.4 设置防火墙

每个节点的防火墙根据需要对新的IP地址(节点IP或内部IP或者两者)放行。

firewall-cmd --add-rich-rule="rule family="ipv4" source address=${ip} accept";firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address=${ip} accept"

注意:若有VIP,此处防火墙也需要添加VIP地址,可以使用for循环批量添加。

for i in 10.2.184.133 10.2.184.134 10.2.184.135 10.2.184.137 20.20.184.133 20.20.184.134 20.20.184.135 20.20.184.137;do firewall-cmd --add-rich-rule="rule family="ipv4" source address=$i accept";firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address=$i accept";done

防火墙添加新的IP地址.png

firewall-cmd --list-rich-rules查看添加后的结果

查看添加后的结果.png

3、两个网段部署,修改业务IP

3.1 K8S网段修改

3.1.1 备份etcd

在kubernetes etcd能正常运行时,比如换IP前集群正常工作时,一定要做备份,否则无法恢复

注意:备份只需要在一个master节点执行。若备份失败不要往下执行

第1步 安装etcdctl

如果执行 etcdctl version 能够正常输出,则跳过安装etcdctl,若无法执行etcdctl命令则需要安装etcdctl(每个master节点都需要安装),执行命令(请根据实际环境选择安装x86或arm版本):rpm -ivh proton-cs-etcdctl-3.5.7-1.el7.proton.x86_64.rpm

安装etcdctl.png

第2步 备份kubernetes etcd,执行如下命令:

alias etcdctl="etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key --endpoints=https://127.0.0.1:2379"

etcdctl snapshot save /root/etcd-backup.db

etcd备份.png

3.1.2 停止kubelet和containerd服务

注意:需要在所有节点执行,包括master节点和worker节点

执行命令:systemctl stop kubelet containerd

停止kubelet和containerd服务.png

3.1.3 更换IP地址

注意:该章节需要在所有节点执行,包括master节点和worker节点。由于修改IP,当前SSH连接会断开,为方便排查网络连接问题,需提前准备BMC远程。

第1步 修改节点ip,编辑文件: vi /etc/sysconfig/network-scripts/ifcfg-<网卡名>

第2步 执行:nmcli connection reload && nmcli connection down <网卡名> && nmcli connection up <网卡名>
修改节点IP.png

注意:nmcli 适用于RHEL/CentOS 8及OpenEuler 22以上系统,或使用 systemctl restart network 生效,网卡名请根据实际环境输入。

确认新的IP配置成功,且相互之间能够通信。

第3步 修改/etc/hosts

/etc/hosts中包含业务IP相关配置,改为新的业务IP地址信息。worker节点的IP也要更新。

单节点集群命令示例:

sed -i "s/原master IP/新master IP/g" /etc/hosts

多节点集群命令示例:

sed -i "s/10.2.184.88/10.2.184.133/g; s/10.2.184.89/10.2.184.134/g; s/10.2.184.90/10.2.184.135/g" /etc/hosts

修改hosts.png

3.1.4 替换新IP并生成新证书

注意:在所有master节点执行

第1步 备份kubernetes 配置,执行:cp -Rf /etc/kubernetes /etc/kubernetes.bak

第2步 替换IP地址,执行(ip地址请根据实际环境进行替换):

cd /etc/kubernetes

find . -type f | xargs sed -i "s/原master IP/新master IP/g"

多节点集群命令示例:

find . -type f | xargs sed -i "s/10.2.184.88/10.2.184.133/g; s/10.2.184.89/10.2.184.134/g; s/10.2.184.90/10.2.184.135/g"

第3步 修改完成后可以通过 find . -type f | xargs grep 10.2.184.88(原masterIP) 命令确认是否替换完成。

修改kubernetes配置.png

第4步 替换/root/kubeadm-config.yaml配置文件内容:

rm -rf /root/kubeadm-config.yaml删除配置文件

新增如下配置:vi /root/kubeadm-config.yaml,IP地址根据实际环境进行替换,如果有IPv6地址也需要填进去
新增kubeadm-config.yaml配置文件.png

第5步 重新生成证书,执行:

cd /etc/kubernetes/pki

rm -f /etc/kubernetes/pki/apiserver* etcd/peer.* etcd/server.*

kubeadm init phase certs all --config /root/kubeadm-config.yaml

生成新证书.png

3.1.5 恢复etcd

第1步 复制etcd快照到各个master节点,执行如下命令:

cp /root/etcd-backup.db /tmp/

scp /root/etcd-backup.db 10.2.184.134:/tmp

scp /root/etcd-backup.db 10.2.184.135:/tmp

第2步 恢复etcd

【注意】恢复时不会改变主机名,因此主机名还是复用原来的,下列命令执行时需要在对应master节点上执行,不能错乱。注意下述命令中的主机名、IP及etcd数据目录地址需要填写实际环境信息。

  1. node-184-88 节点执行:
mv /var/lib/etcd /var/lib/etcd.bak

mkdir /var/lib/etcd

etcdctl snapshot restore /tmp/etcd-backup.db  --name node-184-88  --initial-cluster node-184-88=https://10.2.184.133:2380,node-184-89=https://10.2.184.134:2380,node-184-90=https://10.2.184.135:2380 --initial-advertise-peer-urls=https://10.2.184.133:2380 --data-dir=/var/lib/etcd
 
  1. node-184-89 节点执行:
mv /var/lib/etcd /var/lib/etcd.bak

mkdir /var/lib/etcd

etcdctl snapshot restore /tmp/etcd-backup.db  --name node-184-89  --initial-cluster node-184-88=https://10.2.184.133:2380,node-184-89=https://10.2.184.134:2380,node-184-90=https://10.2.184.135:2380 --initial-advertise-peer-urls=https://10.2.184.134:2380 --data-dir=/var/lib/etcd
 
  1. node-184-90 节点执行:
mv /var/lib/etcd /var/lib/etcd.bak

mkdir /var/lib/etcd

etcdctl snapshot restore /tmp/etcd-backup.db  --name node-184-90  --initial-cluster node-184-88=https://10.2.184.133:2380,node-184-89=https://10.2.184.134:2380,node-184-90=https://10.2.184.135:2380 --initial-advertise-peer-urls=https://10.2.184.135:2380 --data-dir=/var/lib/etcd

etcd恢复.png

3.1.6 更新haproxy、kubelet、firewalld对应地址

注意:该章节需要在所有节点上执行,包括master节点和worker节点。下述举例只有3个IP,当有worker节点时,对应的IP也要做更新操作。

第1步 更新haproxy

每个节点上的haproxy.cfg配置都一样,改完一个节点后可直接覆盖其他节点
(1)修改/usr/local/haproxy/haproxy.cfg配置文件

sed -i "s/原master IP/新master IP/g" /usr/local/haproxy/haproxy.cfg

多节点集群命令示例:

sed -i "s/10.2.184.88/10.2.184.133/g; s/10.2.184.89/10.2.184.134/g; s/10.2.184.90/10.2.184.135/g" /usr/local/haproxy/haproxy.cfg

修改完成后使用命令cat /usr/local/haproxy/haproxy.cfg|grep 原master IP, 确认是否替换完成。
(2)更新成功后重启服务:systemctl restart haproxy

更新haproxy.png

第2步 更新kubelet上报心跳节点IP

sed -i "s/10.2.184.88/10.2.184.133/g" /var/lib/kubelet/kubeadm-flags.env

sed -i "s/10.2.184.89/10.2.184.134/g" /var/lib/kubelet/kubeadm-flags.env

sed -i "s/10.2.184.90/10.2.184.135/g" /var/lib/kubelet/kubeadm-flags.env

更新kubelet上报心跳节点IP.png

第3步 更新firewalld,编辑文件:vi /etc/firewalld/ipsets/proton-cs-host.xml,新增下面行,IP需要根据实际的替换(每个节点上的inspects配置都一样,改完一个节点后可直接覆盖其他节点)

<entry>10.2.184.133</entry>
<entry>10.2.184.134</entry>
<entry>10.2.184.135</entry>

更新firewalld.png

3.1.7 删除旧容器、旧路由表,并重启firewalld、kubelet、containerd

注意:该章节需要在所有节点执行,包括master节点和worker节点

第1步 route -n 查看所有路由表

找到Gateway为集群中其他节点业务IP的路由。

查看旧路由.png

第2步 删除旧路由:route del -net 192.169.x.x netmask 255.255.255.192 gw 10.2.184.x (这里10.2.184.x是旧IP)

删除旧路由.png

第3步 删除旧容器:docker container prune

第4步 重启服务:systemctl restart firewalld containerd kubelet

3.1.8 检查容器是否启动

运行kubectl get pods -n kube-system以及kubectl get pods -A查看容器是否启动。

运行kubectl get nodes -o wide -A查看IP是否为新IP。

查看IP是否为新IP.png

如果网络不通,再检查一次路由表,如果未更新,或未出现跨节点的网关路由,需要把calico-node-xxx 的pod delete,重建出来路由表后网络可恢复正常。

如果存在pod为0/1 running状态,查看该pod是否还是使用的旧的IP,重启该pod。

此时proton-eceph-config-manager服务可能起不来,先忽略。

3.1.9 更新proton-cli-config的节点所对应 ip

注意:该章节可在任意一个master节点执行

第1步 获取集群配置:proton-cli get conf > cluster.yaml

第2步 编辑配置,修改 cluster.yaml里面 nodes 所对应的 节点ip 地址以及eceph对应的外部VIP地址(如果配置了外部VIP地址的话)。

更新proton-cli-config的节点所对应ip.png

第3步 执行更新配置:

进入proton安装包的解压目录proton-package目录下,执行以下命令:

proton-cli apply -f cluster.yaml

配置更新.png

3.2 ECeph管理程序网段修改

3.2.1 修改/opt/minotaur/config/minotaur.conf配置文件

ECeph集群中所有节点的/opt/minotaur/config/minotaur.conf文件中的node_ip及object_ip修改为新IP,并重启eceph-config-agent服务。

sed -i "s/10.2.184.88/10.2.184.133/g" /opt/minotaur/config/minotaur.conf

sed -i "s/10.2.184.89/10.2.184.134/g" /opt/minotaur/config/minotaur.conf

sed -i "s/10.2.184.90/10.2.184.135/g" /opt/minotaur/config/minotaur.conf

cat /opt/minotaur/config/minotaur.conf

systemctl restart eceph-config-agent

修改mimotaur.conf.png

3.2.2 修改/etc/ceph/ceph.conf

ECeph集群中所有节点的/etc/ceph/ceph.conf文件中[infomon]模块下的节点IP改为新IP。

sed -i "s/原master IP/新master IP/g" /etc/ceph/ceph.conf

多节点集群命令示例:

sed -i "s/10.2.184.88/10.2.184.133/g; s/10.2.184.89/10.2.184.134/g; s/10.2.184.90/10.2.184.135/g" /etc/ceph/ceph.conf

修改完后使用cat /etc/ceph/ceph.conf |grep 10.2.184.x命令确认是否替换完成。

修改ceph.conf.png

3.2.3 修改数据库

在任意一个master节点执行

进入minotaur数据库,使用如下sql更新node表:

update minotaur.node set manager_ip="{new_ip}" where host="{hostname}";

修改完成后通过select * from minotaur.node; 确认是否替换完成。

更新node表.png

3.2.4 修改eceph-config-manager和eceph-tenant-web服务cm配置

任一master节点修改eceph-config-manager和eceph-tenant-web容器的cm:

kubectl edit cm eceph-dashboard-confmanager-conf

kubectl edit cm eceph-dashboard-teweb-conf

将[rgw]块下的vip修改为对应的新IP。此处可能是VIP,也可能是节点IP(如果没有设置VIP)。

修改管理服务cm.png

修改租户管理服务cm.png

无论是否修改,都重启相关服务的pod。

kubectl get pods | grep -E 'proton-eceph-config-manager|proton-eceph-tenant-web' | awk '{print $1}' | xargs -i kubectl delete pod {}

重启相关服务pod.png

3.2.5 查看ECeph集群管理页面显示

使用新的IP地址登录WEB管理页面,进入【系统管理】-【节点】中查看节点IP和节点状态,此时节点IP应是新的IP且节点应该都在线。

节点信息.png

3.2.6 修改外部VIP(如果配置了的话)

所有节点进行/etc/keepalived/keepalived.conf中eceph_vip部分的节点IP和VIP进行修改。

修改keepalived.conf.png

运行systemctl restart keepalived重启keepalived,然后检查vip配置,注意只有一个节点上运行了ovip标签的vip。

vip配置检查.png

3.2.7 检查SLB-Nginx转发配置

ECeph通过SLB-Nginx对外提供对象存储访问端口:10001和10002。当有两个网段时,建议此处使用节点IP(实际部署时有可能设置为内部IP)。此时需修改为新的节点IP。具体操作如下:

1)进入集群每个节点/usr/local/slb-nginx/conf.d/http/目录下,修改eceph_10001.conf和eceph_10002.conf配置文件,将原先的内部IP地址改成新的节点IP地址。

修改slb-nginx转发配置.png

2)重新加载SLB-Nginx配置,修改了配置的每个节点运行如下命令:

systemctl reload slb-nginx

3)测试对象上传下载,登陆ECeph租户管理页面http://{ip}:8005,使用租户登陆,进入对象管理页面。测试上传下载文件。其中用户名为租户名称,密码为创建租户时设置的密码。

查看租户web登录密码.png

租户管理页面.png

4、两个网段部署,修改内部地址

说明:建议先通读步骤,理解每一步的含义。执行时,需严格按照顺序执行,否则可能造成集群不可用。 有任何疑问请联系爱数工程师。

4.1 新增内部IP

不修改已有内部IP,而是通过新增网卡配置文件来新增IP。

第1步 新增内部IP

(1)进入/etc/sysconfig/network-scripts/目录,复制/etc/sysconfig/network-scripts/ifcfg-XXXX为一个子设备名,并设置新的IP地址。注意配置文件中的NAME及DEVICE需要改为对应的子设备名。每个节点上都要操作。

cp /etc/sysconfig/network-scripts/ifcfg-XXXX /etc/sysconfig/network-scripts/ifcfg-XXXX:0

vi /etc/sysconfig/network-scripts/ifcfg-XXXX:0

(2)修改后重启对应网卡,确认新的IP配置成功,且相互之间能够通信。

CentOS使用ifdown <网卡名> && ifup <网卡名>

OpenEuler使用nmcli connection reload && nmcli connection down <网卡名> && nmcli connection up <网卡名>

新增内部IP.png

第2步 检查/etc/hosts

若其中包含内部IP相关配置,改为新的内部IP地址信息。

4.2 更新proton-cli-config的节点所对应的internal_ip

注意:该章节可在任意一个master节点执行

第1步 获取集群配置:proton-cli get conf > cluster.yaml

第2步 编辑配置,修改 cluster.yaml里面 nodes 所对应的 internal_ip 地址以及eceph对应的内部VIP地址(如果配置了内部VIP地址的话)。

更新proton-cli-config的节点所对应的internal_ip.png

第3步 执行更新配置:

进入proton安装包的解压目录proton-package下,执行以下命令:

proton-cli apply -f cluster.yaml

执行配置更新.png

4.3 ECeph网段修改

4.3.1 Ceph mon配置修改

第1步 查看集群状态

ECeph7.10.0之前的版本在主机运行ceph -s,ECeph 7.10.0及之后版本需要进入eceph-node-agent的容器运行(所有ceph相关的命令都需要在该容器运行),查看输出,确保集群状态是健康的。

kubectl exec -it `kubectl get po -o wide |grep proton-eceph-node-agent |grep \`hostname\` |awk '{print $1}'` bash -- ceph -s

集群状态.png

第2步 导出mon配置

选择任一ceph-mon节点的mon配置,运行如下命令:

ceph mon getmap -o monmap.bin

导出mon配置.png

第3步 查看导出的mon配置

运行如下命令查看当前的mon配置信息:

monmaptool --print monmap.bin

注意:ECeph 7.30.0之前的版本(L版本)只有v1协议,ECeph 7.30.0及之后的版本(P版本)新增了v2协议。

ECeph7.30.0之前的版本打印查看原来的mon配置.png

ECeph 7.30.0版本示例:

ECeph7.30.0及之后的版本查看原来的mon配置.png

第4步 删除已有的mon配置

运行如下命令删除所有的mon信息,多个节点直接在后面加"--rm {monid}"即可。

monmaptool --rm {monid名称:例如m0} monmap.bin

删除原来的mon配置.png

第5步 添加新的mon配置

运行如下命令添加新的mon信息(使用对应新的内部IP),添加多个,可根据版本使用"--add"或者"--addv",可多次使用。

ECeph 7.30.0之前的版本使用"--add {monid} {内部IP}:6789"

monmaptool --add {monid名称:例如m0} {新的IP地址}:6789  monmap.bin

ECeph7.30.0之前的版本添加新的mon配置.png

ECeph 7.30.0及之后的版本使用"--addv {monid} [v2:{内部IP}:3300, v1:{内部IP}:6789}]"

monmaptool --addv {monid名称:例如m0} [v2:{新的IP地址}:3300,v1:{新的IP地址}:6789] monmap.bin

ECeph7.30.0及之后的版本添加新的mon配置.png

第6步 查看新配置

运行如下命令,查看配置是否准确。

monmaptool --print monmap.bin

查看新的mon配置.png

将新的mon配置复制到其他ceph-mon节点下。如果是在容器中操作上述步骤,需要将monmap.bin从容器中复制到主机:

kubectl cp {pod}:{path of monmap.bin} /root/monmap.bin

scp /root/monmap.bin 10.2.184.134:/root

scp /root/monmap.bin 10.2.184.135:/root

复制monmap.png

单节点环境不需要复制monmap到主机上,但要注意后续导入新monmap时要在容器中执行。

第7步 停止ceph集群的服务

集群中每个ceph节点,运行如下命令,停止ceph服务。

systemctl stop ceph.target ceph-radosgw.target

使用命令如下命令检查是否还有ceph进程未结束:

ps aux|grep -E "ceph-mon|ceph-osd|ceph-mgr|radosgw"

如果有未结束的ceph进程,执行kill -9,强制结束。

查看服务进程.png

第8步 修改ceph配置文件

1)修改每个节点/etc/ceph/ceph.conf配置文件,将原来的内部IP改为新的内部IP地址。

sed -i "s/原内部IP/新内部IP/g" /etc/ceph/ceph.conf

多节点集群命令示例:

sed -i "s/10.10.184.88/20.20.184.133/g; s/10.10.184.89/20.20.184.134/g; s/10.10.184.90/20.20.184.135/g" /etc/ceph/ceph.conf

修改完成后使用命令cat /etc/ceph/ceph.conf |grep 原内部 IP, 确认是否替换完成。

修改ceph配置文件.png

2)确认字段修改完全

IP修改主要涉及如下字段:

  • mon.mX的mon addr

  • osd.X的cluster addr和public addr

运行如下命令检查:

cat /etc/ceph/ceph.conf | grep -E 'mon addr |cluster addr |public addr '

确认修改完全.png

第9步 ceph-mon节点导入新的配置

每个ceph-mon节点为所有mon导入新的monmap.bin配置,多个mon需分多次导入,一次只能导入一个mon。

注意:ceph-mon命令在主机上也可以执行,如果monmap.bin已经在各个主机上,可以在主机上运行,如果还在容器里(单节点环境),需要去容器里面执行。

ceph-mon -i {monid名称} --inject-monmap monmap.bin

导入新配置.png

第10步 启动ceph集群的服务

每个节点执行如下命令启动ceph集群的服务。

systemctl start ceph.target ceph-radosgw.target

运行如下命令查看是否启动:

systemctl status ceph.target ceph-radosgw.target

启动ceph集群的服务.png

第11步 检查集群状态

运行ceph -s查看集群状态,3节点集群约需要等待一分钟左右恢复健康。

若ceph -s报错,请检查网络配置是否正确,ceph.conf配置文件,ceph相关服务进程是否启动。

kubectl exec -it `kubectl get po -o wide |grep proton-eceph-node-agent |grep \`hostname\` |awk '{print $1}'` bash -- ceph -s

集群状态.png

4.3.2 修改数据库

进入minotaur数据库,将node表中internal_ip修改为新的内部IP地址,SQL命令如下:

update minotaur.node set internal_ip = "新的IP地址" where host = "对应hostname";

运行如下SQL命令确认已经修改正确:

select * from minotaur.node; 

修改minotaur数据库的内部IP.png

4.3.3 修改minotaur.conf配置文件

1)每个节点修改/opt/minotaur/config/minotaur.conf配置文件,将internal_ip 和 internal_ip_mask修改成新的内部IP地址和子网掩码。

说明:ECeph 7.13.0及之后的版本去除了子网掩码设置。

sed -i "s/原内部IP/新内部IP/g" /opt/minotaur/config/minotaur.conf

sed -i "s/10.10.184.88/20.20.184.133/g" /opt/minotaur/config/minotaur.conf

sed -i "s/10.10.184.89/20.20.184.134/g" /opt/minotaur/config/minotaur.conf

sed -i "s/10.10.184.90/20.20.184.135/g" /opt/minotaur/config/minotaur.conf

cat /opt/minotaur/config/minotaur.conf

修改minotaur.conf配置文件的内部IP.png

2)运行如下命令,重启每个节点的eceph-config-agent服务。

systemctl restart eceph-config-agent

4.3.4 重启容器服务

运行如下命令重启proton-eceph相关容器服务。

kubectl get po -A | grep proton-eceph | awk '{print$2}' |xargs -i kubectl delete po/{}

重启容器服务.png

4.3.5 查看ECeph集群管理页面显示

登录ECeph管理页面http://{ip}:8003,到【系统管理】-【节点】页面中,点击节点名进入详细信息,查看网络中内部IP是否显示正确。

点击节点名.png

查看节点对应内部IP.png

4.3.6 修改VIP(如果配置了的话)

所有节点进行/etc/keepalived/keepalived.conf中eceph-ivip部分的内部IP和VIP进行修改。

修改keepalived内部IP转发.png

运行systemctl restart keepalived重启keepalived,然后检查vip配置,注意只有一个节点上运行了ivip标签的vip。

内部vip配置检查.png

4.3.7 修改SLB-Nginx转发配置

ECeph通过SLB-Nginx对外提供对象存储访问接口:10001和10002。当有两个网段时,建议此处使用的是节点IP(实际部署时有可能设置会内部IP)。此时需修改为新的节点IP,改完1个节点后可直接覆盖其他节点,具体操作如下:

1)进入集群每个节点/usr/local/slb-nginx/conf.d/http/目录下,修改eceph_10001.conf和eceph_10002.conf配置文件,将原先的内部IP地址改成新的节点IP地址。

修改slb-nginx转发.png

2)重新加载SLB-Nginx配置,修改了配置的每个节点运行如下命令:

systemctl reload slb-nginx

3)测试对象上传下载,登陆ECeph租户管理页面http://{ip}:8005,使用租户登陆,进入对象管理页面。测试上传下载文件。其中用户名为租户名称,密码为创建租户时设置的密码。

查看租户web登录密码.png

租户管理页面.png

5、 1个网段部署,修改业务IP

5.1 修改流程

第一步 按照第4章修改内部IP

第二步 按照第3章修改业务IP