TStack_独立网络节点硬件更换指南

发布时间 2023-04-25 10:27:51作者: XU-NING

问题背景

由于服务器硬件问题,需要对该独立的网络节点进行关机更换硬件操作,该网络节点上运行着服务 neutron-l3-agent、neutron-openvswitch-agent、neutron-dhcp-agent 和 neutron-metadata-agent,负责部分弹性网卡的路由、虚拟机元数据、和虚拟机网络 dhcp 工作,由于 dhcp 和元数据服务是多点提供服务的,所以仅需要对该节点上的虚拟分布式路由进行主备切换

操作范围

需要更换硬件的独立网络节点

适用版本

TStack-X86-版本通用

影响范围

在对每个虚拟路由主备进行切换时,位于该路由上的弹性网卡的网络会中断 2-3 秒

操作时段

由于每个主路由位于该节点的路由在进行主备切换时,会有 2-3 秒的网络中断,所以建议在业务低峰期或晚上进行操作

操作步骤

1. 查找所有位于该节点的主路由 ID

for i in $(find /var/lib/neutron/ha_confs/ -type d)
do 
  if [ ${i} == '/var/lib/neutron/ha_confs/' ];
    then continue
  fi 
  cat ${i}/state | grep master
    if [ ${?} == 0 ]
      then echo ${i}
    fi
done

# 输出示例,该路由 ID 为 c487f803-82dc-4293-9b21-c8bcc6243901:
master
/var/lib/neutron/ha_confs/c487f803-82dc-4293-9b21-c8bcc6243901

2. 切换所有主路由到其它网络节点

2.1 切换每个路由时,对该路由上的其中一个浮动 IP 进行持续 ping 检测,确认切换之后网络恢复再进行下一个路由的切换

# 查看该路由的弹性 IP 地址
ip netns exec qrouter-[路由 ID] ip addr
# 示例:
ip netns exec qrouter-c487f803-82dc-4293-9b21-c8bcc6243901 ip addr

# 对其其中一个弹性 IP 地址进行持续 ping 检测
# windows 客户端
ping -t [弹性IP]
# linux 客户端
ping [弹性IP]

2.2 找路由 ha 网卡

ip netns exec qrouter-[路由 ID] ip addr \
| grep -v inet | grep ha | awk '{print $2}' | cut -d: -f1
# 示例:
ip netns exec qrouter-c487f803-82dc-4293-9b21-c8bcc6243901 ip addr \
| grep -v inet | grep ha | awk '{print $2}' | cut -d: -f1
# 输出示例:
ha-2f415d56-cb

2.3 切换路由

ip netns exec qrouter-[路由 ID] \
ifconfig [ha 网卡] down
# 示例:
ip netns exec qrouter-qrouter-c487f803-82dc-4293-9b21-c8bcc6243901 \
ifconfig ha-2f415d56-cb down

如果该路由的网络未在 3 秒内恢复,请执行回滚操作
2.4 回滚

ip netns exec qrouter-qrouter-c487f803-82dc-4293-9b21-c8bcc6243901 \
ifconfig ha-2f415d56-cb up

3. 路由切换验证

对所有位于该节点的主路由切换工作完成之后,再次检测该节点主路由,确认切换无遗漏

for i in $(find /var/lib/neutron/ha_confs/ -type d)
do 
  if [ ${i} == '/var/lib/neutron/ha_confs/' ]
    then continue
  fi
  cat ${i}/state | grep master
  if [ ${?} == 0 ]
    then echo ${i} 
  fi
done

4. 关闭网络服务

systemctl stop neutron-l3-agent \
neutron-openvswitch-agent \
neutron-dhcp-agent \
neutron-metadata-agent

5. 关机

init 0

6. 硬件更换

该工作由硬件厂商操作

7. 开机并检查服务

# 在该网络节点检查服务状态是否为 running
systemctl status neutron-l3-agent \
neutron-openvswitch-agent \
neutron-dhcp-agent \
neutron-metadata-agent
# 检查之前手动 down 掉的 ha 网卡是否状态恢复
for ns in $(ip netns list)
do 
  net_if=$(ip netns exec ${ns} ip addr \
  | grep DOWN | awk '{print $2}' | cut -d: -f1)
  if [ "${net_if}" != '' ]
    then echo ${ns} ${net_if}
  fi
done
# 未恢复网卡输出格式如下:
[namespace] [ha 网卡]
# 例如:
qrouter-00973857-4cbd-4eb4-beb4-6aadc7c68f44 ha-313225de-dd
# 如果有未恢复的情况,手动进行 up
ip netns exec [namespace] ifconfig [ha 网卡] up

# 在控制节点检查服务状态是否全为 alive
source keystonerc_admin
neutron agent-list --host [网络节点]
# 示例:
neutron agent-list --host TX-REGION2-MANAGE-04
# 输出示例:
+--------------------------------------+--------------------+----------------------+-------+----------------+---------------------------+
| id                                   | agent_type         | host                 | alive | admin_state_up | binary                    |
+--------------------------------------+--------------------+----------------------+-------+----------------+---------------------------+
| 091cc6ee-7471-4a51-88ee-480e4026285b | Metadata agent     | TX-REGION2-MANAGE-04 | :-)   | True           | neutron-metadata-agent    |
| 0cc4cdda-51d6-4013-b648-af4f301a6c58 | DHCP agent         | TX-REGION2-MANAGE-04 | :-)   | True           | neutron-dhcp-agent        |
| 4455ce85-1333-4130-803e-04fb6d170d41 | Open vSwitch agent | TX-REGION2-MANAGE-04 | :-)   | True           | neutron-openvswitch-agent |
| 7b17322c-27c3-4ff1-bfb7-8feaf0b01609 | L3 agent           | TX-REGION2-MANAGE-04 | :-)   | True           | neutron-l3-agent          |
+--------------------------------------+--------------------+----------------------+-------+----------------+---------------------------+