故障转移群集管理器的群集和服务用命令操作记录

近日在做灾备切换项目时,客户的系统中有微软的“故障转移群集管理器”软件,这是我头一次接触这种冷门软件,客户方面的运维人员都是手工管理这个软件中的服务,而我们的灾备自动化切换需要通过命令方式来对群集、服务做启停、改ip地址。
查阅网上文档,得知需要用cluster命令来实现,可参考一位博友的文档
cluster命令用法总结
https://blog.csdn.net/jaminwm/article/details/8008895/

这是一张故障转移群集管理器的截图,展示了群集、群集中的服务和应用程序、节点、网络。
群集名称是my12cluster,群集的IP地址需要通过命令方式进行修改,后面介绍修改的命令。
故障转移群集管理器的群集和服务用命令操作记录
文章图片

这是服务和应用程序my12AG的基本信息截图,服务的IP地址要通过命令进行修改,后面介绍修改的命令。
故障转移群集管理器的群集和服务用命令操作记录
文章图片

几经周折和反复试验,终于找到了对故障转移群集管理器中的服务做启停、改ip地址的命令方法,这里来记录下。
1. 停止群集和服务
使用命令cluster resource ResourceName/off

C:\Windows\System32\cluster resource "群集 IP 地址" /off C:\Windows\System32\cluster resource "群集名称" /off C:\Windows\System32\cluster resource "my12AG" /off C:\Windows\System32\cluster resource "my12AG_10.0.128.185" /off C:\Windows\System32\cluster resource "my12AG_my12sql-db" /off

启动的结果输出:
正在将资源“群集 IP 地址”脱机...
资源组节点状态
-------------------- -------------------- --------------- ------
群集 IP 地址群集组my12sql-db02脱机

正在将资源“群集名称”脱机...
资源组节点状态
-------------------- -------------------- --------------- ------
群集名称群集组my12sql-db02脱机

正在将资源“my12AG”脱机...
资源组节点状态
-------------------- -------------------- --------------- ------
my12AGmy12AGmy12sql-db02脱机

正在将资源“my12AG_my12sql-db”脱机...
资源组节点状态
-------------------- -------------------- --------------- ------
my12AG_my12sql-dbmy12AGmy12sql-db02脱机

正在将资源“my12AG_10.0.128.185”脱机...
资源组节点状态
-------------------- -------------------- --------------- ------
my12AG_10.0.128.185my12AGmy12sql-db02脱机

2. 修改群集和服务的IP地址
使用命令cluster resource ResourceName/priv address=IPAddress subnetmask=AddressMask
C:\Windows\System32\cluster resource "群集 IP 地址" /priv address=10.7.128.184 subnetmask=255.255.255.0 C:\Windows\System32\cluster resource "my12AG_10.0.128.185" /priv address=10.7.128.185 subnetmask=255.255.255.0


3. 启动群集和服务
使用命令cluster resource ResourceName/on
C:\Windows\System32\cluster resource "群集 IP 地址" /on C:\Windows\System32\cluster resource "群集名称" /on C:\Windows\System32\cluster resource "my12AG" /on C:\Windows\System32\cluster resource "my12AG_my12sql-db" /on C:\Windows\System32\cluster resource "my12AG_10.0.128.185" /on

启动的结果输出:
正在将资源“群集 IP 地址”联机...
【故障转移群集管理器的群集和服务用命令操作记录】资源组节点状态
-------------------- -------------------- --------------- ------
群集 IP 地址群集组my12sql-db02联机

正在将资源“群集名称”联机...
资源组节点状态
-------------------- -------------------- --------------- ------
群集名称群集组my12sql-db02联机
正在将资源“my12AG”联机...
资源组节点状态
-------------------- -------------------- --------------- ------
my12AGmy12AGmy12sql-db02联机
正在将资源“my12AG_my12sql-db”联机...
资源组节点状态
-------------------- -------------------- --------------- ------
my12AG_my12sql-dbmy12AGmy12sql-db02联机
正在将资源“my12AG_10.0.128.185”联机...
资源组节点状态
-------------------- -------------------- --------------- ------
my12AG_10.0.128.185my12AGmy12sql-db02联机

4. 检查群集和服务是否是脱机状态
通过一个批处理,将服务的状态中有“脱机”关键字的信息写入一个文本,然后判断文件文件中字符串行数是否是5,表示所有服务都是脱机状态。
如果要检查是否是联机状态,把find关键字换成“联机”。
@echo offC:\Windows\System32\cluster resource "群集 IP 地址" /status < nul | find "脱机" >> cluster_off_check.txt C:\Windows\System32\cluster resource "群集名称" /status < nul | find "脱机" >> cluster_off_check.txt C:\Windows\System32\cluster resource "my12AG" /status < nul | find "脱机" >> cluster_off_check.txt C:\Windows\System32\cluster resource "my12AG_10.0.128.185" /status < nul | find "脱机" >> cluster_off_check.txt C:\Windows\System32\cluster resource "my12AG_my12sql-db" /status < nul | find "脱机" >> cluster_off_check.txtfor /f "delims=" %%b in (cluster_off_check.txt) do (echo %%b)SETLOCAL ENABLEDELAYEDEXPANSION SET lines=0 FOR /F "tokens=* delims=" %%i IN (cluster_off_check.txt) DO (SET /A lines = !lines! + 1) echo offline cluster resource count: %lines%rem 5个服务是否都是脱机状态 if %lines% EQU 5 (echo OK, 群集服务和应用都已脱机) else (echo ERROR, 有群集服务和应用联机,请检查)del cluster_off_check.txt

启动的结果输出:
群集 IP 地址群集组my12sql-db02联机
群集名称群集组my12sql-db02联机
my12AGmy12AGmy12sql-db02联机
my12AG_10.0.128.185my12AGmy12sql-db02联机
my12AG_my12sql-dbmy12AGmy12sql-db02联机
running cluster resource count: 5
OK, 群集服务和应用都已联机

    推荐阅读