更新时间:2020-09-10 13:36
本文主要介绍在专有云企业版V3.6及以上版本中,单机房计划停机的操作方法。
专有云V3,所有
说明:适用于专有云企业版V3.6及以上版本。
在专有云企业版V3.6及以上版本中,在进行整机房计划停机操作时,请参考本方案进行停机操作。
说明:修改concurrence_allow_size字段的取值并提交后,会触发tianji服务的Rolling。
保存pangu的状态到各个集群AG。
all_pangu_check.tar.gz
文件上传到OPS1服务器的新建目录下,例如/root/pangu_check
目录。tar zxvf all_pangu_check.tar.gz
./pangu_status.sh save
说明:请忽略以下报错。project:dfs cluster:PanguDcmCluster-A-20191204-1d3c get AG fail 'PanguTools#'
curl "127.0.0.1:7070/api/v3/column/m.ip?m.sr.id=tianji.ConfigStore%23&m.sr.isPrimary=true"
curl "http://[$ConfigStore_IP]:8082/clusters/TianjiMetaStore"
说明:[$IP]为上一步获取的主机IP地址。系统显示类似如下。
50c255cddd742042df8508165b4026485d4a2fea
curl "127.0.0.1:7070/api/v3/column/m.ip?m.sr.id=tianji.APIServer%23" 2>/dev/null | grep m.ip | awk -F"\"" '{print $4}' > tianji_api_servers
curl "127.0.0.1:7070/api/v3/column/m.ip?m.sr.id=tianji.TerminalServicePortal%23" 2>/dev/null | grep m.ip | awk -F"\"" '{print $4}' > tianji_terminal_servers
docker ps|grep OpsOob|awk '{print $1}'
docker cp tianji_api_servers [$OOB_ID]:/
docker cp tianji_terminal_servers [$OOB_ID]:/
docker exec -it [$OOB_ID] bash
cat tianji_api_servers | xargs -i -P1 ssh {} tjc stop tianji.APIServer#
curl "http://[$ConfigStore_IP]:8082/clusters/TianjiMetaStore/versions/[$Head_Version]/conf" -X POST -d '{"Name":"user","Email":"user","Message":"disable auth","Updates":{"authmode.conf":"{\"AuthMode\":\"false\"}"}}'
说明:[$Head_Version]为步骤2获取的Head版本。
cat tianji_api_servers | xargs -i -P1 ssh {} tjc start tianji.APIServer#
cat tianji_terminal_servers | xargs -i -P1 ssh {} killall terminal_service_portal
/cloud/tool/tianji/tianji_clt authmode --get --config /cloud/data/bootstrap_controller/BootstrapController#/bootstrap_controller/tianji_dest.conf
执行以下命令,获取全部物理服务器的SN,并以文件形式保存到当前目录下。
curl 'localhost:7070/api/v3/column/m.sn' 2>/dev/null | grep sn | grep -v vm | awk '{print $2}' | sed 's/[",]//g' > snlist
docker ps | grep oob
执行以下命令,将oob容器内的“SN-带外IP”映射文件拷贝到当前目录。
docker cp [$OOB_ID]:/tmp/sn_ip_map .
cat snlist | xargs -n 1 -I {} grep {} sn_ip_map | awk '{print $1}' | sed 's/[:"]//g' > oobsnlist cat snlist oobsnlist | sort | uniq -u
说明:
执行结果如果存在数据,则包含未获取带外IP的物理服务器SN。如果结果为空,则表明全部物理服务器都已获取带外IP。
未获取带外IP的物理服务器需要修复,使其正常获取带外IP。如果无法修复,则开机时需要手工开机。
执行以下命令,获取全部物理服务器的带外IP,并以文件形式保存到当前目录下。
cat snlist | xargs -n 1 -I {} grep {} sn_ip_map | awk '{print $2}' | sed 's/[",]//g' > oobiplist
for currentMachine in $(cat oobiplist | xargs); do echo "Checking ${currentMachine} ..."; ipmitool -I lanplus -H ${currentMachine} -U [$Use] -P [$Password] power status; done
说明:
[$Use]为带外服务器登录用户名。
[$Password]为带外服务器登录用户密码。
说明:请务必确保Proxy和Keyserver先于LVS、SlbControlMaster执行下线操作。
list admin keyserver系统显示类似如下。
config vms weight user_id keyserver lb_id [$LB_Global_ID] vm_list {"address":"[$Keyserver_IP]","weight":0}
说明:
[$LB_Global_ID]和[$Keyserver_IP]为上一步获取的值。
[$Keyserver_IP]位置需要填入Keyserver节点的物理IP,即Flag字段取值为“1”的输出结果行,类似如下。
执行以下命令,获取Proxy的IP。
list admin proxy
系统显示类似如下。
config admin maintain_agent address [$Proxy_MGT_IP] enable 0 force 1
说明:[$Proxy_MGT_IP]为上一步获取的值。系统显示类似如下。
list admin lb_node系统显示类似如下。
/usr/bin/curl -s -X PUT "http://[$SlbControlMaster_IP]:8088/admin/agents/maintain;enable=0;force=1;address=[$LB_Global_IP]"
说明:
[$LB_Global_IP]为上一步获取的值。
[$SlbControlMaster_IP]可在天基控制台的SLB集群配置页面查询,具体查询步骤如下。
登录天基控制台,选择运维>集群运维,在Project框中搜索slb,单击SLB集群右侧的集群配置。
- 在服务配置页面,搜索slb-controler,可查看到对应的IP地址。
参考步骤4,按照顺序关闭以下集群,如果关闭失败,请联系阿里技术支持。
SLB、Vnet和qitian(如果存在)
minirds-mt
说明:如果发现minirds-mt集群处于pending状态(V3.6及之后的版本),需要将以下压缩包解压后,将脚本文件上传到OPS1服务器,然后执行sr_approver.py脚本,或者通过天基控制台手工审批。
sr_approver.tar
curl 'localhost:7070/api/v3/column/m.sn?m.project=tianji' 2>/dev/null | grep m.sn | grep -v vm | grep -v "$(hostname | xargs -n 1 -I {} curl 'localhost:7070/api/v3/column/m.sn?m.id={}' 2>/dev/null | grep m.sn)" | awk '{print $2}' | sed 's/[",]//g' | xargs -n 1 -I {} grep {} sn_ip_map | awk '{print $2}' | sed 's/[",]//g' > tianji_oobiplist
curl 'localhost:7070/api/v3/column/m.id?m.project=tianji' 2>/dev/null|grep id|awk '{print $2}'| grep –v vm|sed 's/[",]//g'|grep -v `hostname` > hostnamelist
说明:此处将文件名命名为“hostnamelist”,用户可自定义。
执行以下命令,查询cloneweb容器ID。
docker ps|grep cloneweb
docker cp hostnamelist [$Clone_Web_ID]:/
说明:[$Clone_Web_ID]为上一步获取的主机名。
docker exec -it [$Clone_Web_ID] bash
cat /hostnamelist |xargs -n 1 -P 100 -I {} ssh {} poweroff &
cat /hostnamelist |xargs -n 1 -P 100 ping -w 1 -c 1 |grep -B 1 "1 received"|grep statistics|awk {'print $2'}
检查环境和故障维修,请保存现场变更记录。
手工启动OPS1服务器,确认oob容器启动正常。
docker cp [$OOB_ID]:/tmp/sn_ip_map .
cat snlist | xargs -n 1 -I {} grep {} sn_ip_map | awk '{print $1}' | sed 's/[:"]//g' > oobsnlist
cat snlist oobsnlist | sort | uniq -u
说明:
- 执行结果将包含未获取带外IP的物理服务器SN。如果结果为空,则表明全部物理服务器都已获取带外IP。
未获取带外IP的物理服务器需要修复,使其正常获取带外IP。如果无法修复,则开机时需要手工开机。
cat snlist | xargs -n 1 -I {} grep {} sn_ip_map | awk '{print $2}' | sed 's/[",]//g' > oobiplist
for currentMachine in $(cat oobiplist | xargs); do echo "Checking ${currentMachine} ..."; ipmitool -I lanplus -H ${currentMachine} -U [$Use] -P [$Password] power status; done
说明:对于非天基集群的服务器,如果电源状态查询失败,需要修复这些服务器的带外功能。如果无法修复,则开机时需要手动开机,且需要执行以下命令,手动消除机器的“power_on_doing”状态。curl localhost:7070/api/v5/SetMachineAction?hostname=[$Hostname] -d '{"action_name":"power_on", "action_status":"done"}'
for currentMachine in $(cat tianji_oobiplist | xargs); do echo "Starting ${currentMachine} ..."; ipmitool -I lanplus -H ${currentMachine} -U [$Use] -P [$Password] power on; done
登录天基控制台,选择报表>全部报表,在模糊查询中搜索开关机,可查询到集群开关机监控报表,单击集群开关机监控报表。
在集群开关机监控报表页面,选择操作菜单>批量开机。
在关机确认页面,选择相应的产品,单击确认。按照以下顺序开机,需要等前一批到达终态后开启下一批产品。
说明:
请务必在LVS、SlbControlMaster#准备就绪后,再对Proxy和Keyserver执行上电后的恢复操作。
请务必确保Proxy和Keyserver均到达终态后,再将业务迁移到相应的服务器上。
/usr/bin/curl -s -X PUT "http://[$SlbControlMaster_IP]:8088/admin/agents/maintain;enable=1;force=1;address=[$LB_Global_IP]"
/etc/init.d/slb-control-proxy restart
/home/slb/release/[$Version]/proxy/scripts/start_process.py /home/slb/release/[$Version]/proxy/srv/pillar/node.sls
说明:[$Version]字段可通过执行以下命令获取。rpm -qa | grep slb-proxy
系统显示类似如下。slb-proxy-17.04.3-1728761.alios7.x86_64
/home/slb/release/[$Version]/proxy/scripts/enable_node.py /home/slb/release/[$Version]/proxy/srv/pillar/node.sls
sudo iptables -L如果有iptables规则,则通过执行以下命令进行清除。
sudo iptables -F
post check
没有异常。
sudo tailf /home/admin/logs/proxy_monitor.log系统显示类似如下。
/etc/init.d/slb-cert-central-agent restart
/home/slb/release/[$Version]/keyserver/scripts/start_process.py /home/slb/release/[$Version]/keyserver/srv/pillar/node.sls
说明:[$Version]字段可通过命令执行以下命令获取。rpm -qa | grep slb-keyserver
系统显示类似如下。slb-proxy-17.04.11-1725841.alios7.x86_64
/home/slb/release/[$Version]/keyserver/scripts/enable_node.py /home/slb/release/[$Version]/keyserver/srv/pillar/node.sls
sudo iptables -L如果有iptables规则,则通过执行以下命令,进行清除。
sudo iptables -F
sudo tailf /home/admin/logs/keyserver_monitor.log系统显示类似如下。
登录OPS1机器,执行以下命令,即可打开认证。
/cloud/tool/tianji/tianji_clt authmode --enable --config /cloud/data/bootstrap_controller/BootstrapController#/bootstrap_controller/tianji_dest.conf
登录OPS1机器,执行以下命令,即可确认权限认证是否打开。返回如果为false,表示关闭认证;为true,表示打开认证。
/cloud/tool/tianji/tianji_clt authmode --get --config /cloud/data/bootstrap_controller/BootstrapController#/bootstrap_controller/tianji_dest.conf
all_pangu_check.tar.gz
文件的解压目录,例如/root/pangu_check
目录,通过root用户执行以下命令,用于检查各个集群pangu状态。如果输出有”FAIL“字样,则检测失败,请联系阿里云技术支持处理。
./pangu_status.sh check
暂无回滚方法。
在SLB节点cli命令行,执行以下命令,对输出结果中的flag字段进行简单说明。
list admin keyserver
系统显示类似如下。
说明:
- flag=3:表示Keyserver所在的4层监听对应VIP的443端口,上图中监听IP为10.X.X.255,监听端口为443。
- flag=2:表示Keyserver所在的4层监听对应的VIP的6666端口,上图中监听IP为10.X.X.255,监听端口为6666。 flag=2和flag=3使用的监听IP是相同的,只是端口不同。
- flag=1:表示具体的Keyserver主机,上图中有两台Keyserver主机,分别是10.X.X.8和10.X.X.10。
在文档使用中是否遇到以下问题
更多建议
匿名提交