WSFC 维护模式操作粒度控制

之前曾经在WSFC日常管理操作篇和大家介绍过WSFC的维护模式,简单来说,从WSFC 2012开始,通过维护模式可以帮我们完成暂停节点,自动排水,自动回复的半自动化维护

回顾一下WSFC的维护模式运作流程,此处以WSFC 2012开始为例,在WSFC 2012之前,群集的维护模式仅能暂停节点,但无法自动移动负载

1.手动放置节点为暂停模式

2.节点根据群集角色优先级,参考放置策略,依次排水处理群集负载至合适节点

3.负载都排水到该去的节点后,节点宣告为暂停,不接受任何负载的迁移

4.维护完成后参考放置策略故障回复负载至合适节点

知识补遗

  1. 如果在排水过程中,单台虚拟机无法执行移动,不会影响整体排水的进度,其它虚拟机和负载会继续正常执行排水,当排水结束后,报告排水失败状态
  2. 一旦节点被置为暂停模式,重启之后也依然会是暂停状态,除非管理员手动解除暂停
  3. 如果排水过程很长,或勿操作了节点,支持取消排水操作,取消排水后,已排水出去的负载,可以通过暂停模式故障回复至原节点

我们今天主要关注的是维护模式下的优先级粒度控制,自WSFC 2012开始,维护模式开始和放置策略深度整合,包括优先级,首选所有者,默认所有者,可能所有者,反相关性等,不论是暂停排水或是故障回复,都会参考上述放置策略进行完整的评估,进而选择合适的节点。

其中比较有趣的一点是维护模式和优先级的整合

默认情况下,WSFC 2012开始优先级设置在以下场景生效

1.群集节点关机开机时,优先联机上线高优先级应用

2.节点置为维护模式时,优先迁移处理高优先级应用

3.节点故障转移时,优先转移高优先级应用

这是大多数人都知道的,但事实上在WSFC 2012开始优先级和维护模式还有个有意思的整合,事实上优先级的设置竟然可以决定维护模式时候虚拟机的排水操作

自WSFC 2012开始,虚拟机资源类型开始多了一个MoveTypeThreshold属性,通过该全局群集属性,即可以决定排水时虚拟机的排水操作,默认群集全局策略,是针对于高优先级虚拟机 和 中优先级虚拟机 执行实时迁移,针对低优先级虚拟机执行快速迁移,这样做的目的是为了确保更高优先级的虚拟机首先获得迁移,正常提供服务,而不会因为低优先级虚拟机影响进度

WSFC 2012中MoveTypeThreshold默认值为2000,即意味着,当发生维护排水时,大于等于2000优先级的虚拟机执行实时迁移操作,高优先级为3000,中优先级为2000,低优先级为1000,因此默认高优先级和中优先级在维护模式可以获得实时迁移

#查看全局策略

Get-ClusterResourceType “Virtual Machine” | Get-ClusterParameter MoveTypeThreshold | fl *

默认情况下,如果我们不对优先级做任何设置,所有虚拟机的优先级都为中,即意味着不区分所有虚拟机优先级,这就可能当维护时候,可能优先迁移处理了不重要的角色,如果希望区分出群集负载优先级,建议针对重要的负载设置优先级为高,中,不重要的设置为低,有序排列群集负载,这样当发生维护或故障转移时,高优先级的资源首选会被处理上线提供服务,当我们设置了优先级后,维护模式操作控制则有意义

如果是虚拟化群集的话,上面托管了很多虚拟机,一些是重要的,一些是不重要的,我们就可以控制那些虚拟机在维护模式下获得实时迁移,那些虚拟机获得快速迁移,实时迁移能够保证迁移时不中断提供服务,完整内存页和增量内存页都会被传递,快速迁移只是把虚拟机保存,然后发送到另外节点再开启,相对来说,如果实时在用的虚拟机,快速迁移更改,因为不需要等待所有增量内存页同步完成,实时迁移虽然可以保证最高可用时间,但是一旦虚拟机实时再用,迁移过程有时会很慢。

我们通过这样的粒度控制,可以让低优先级虚拟机通过,快速迁移快速的完成维护排水,更多网络带宽留给实时迁移虚拟机使用,避免资源争抢。

#修改全局策略

Get-ClusterResourceType “Virtual Machine” | Set-ClusterParameter MoveTypeThreshold 1000

群集全局的维护排水操作支持以下四种配置策略

如设置为1000,则除设置为不自动启动虚拟机外,所有低中高优先级都将获得实时迁移

如设置为2000,则高和中优先级虚拟机获得实时迁移,低优先级虚拟机获得快速迁移

如设置为3000,则高优先级虚拟机获得实时迁移,中和高优先级获得快速迁移

如设置为3001,则维护模式下所有虚拟机都将执行快速迁移

以上我们介绍的群集维护模式操作策略是针对于全局的设置,即群集内所有虚拟机默认都需遵守此策略

我们也可以针对某个虚拟机单独设置排水操作策略,WSFC 2012开始,所有群集虚拟机多出一个DefaultMoveType属性

DefaultMoveType参数值及其行为:

-1(4294967295) 使用全局设置(MoveTypeThreshold)
0 关闭虚拟机
1 保存虚拟机(快速迁移)
2 关闭虚拟机
3 关闭虚拟机(强制)
4 实时迁移虚拟机

#获取虚拟机默认DefaultMoveType值

Get-ClusterResource "虚拟机 HQ-SPDB” | Get-ClusterParameter | ft Name,Value

可以看到,默认虚拟机设置为4294967295,即遵守群集维护模式操作全局策略,由群集根据全局策略自主分配虚拟机维护模式操作

我们也可以打破这层继承关系,针对某个虚拟机单独设置粒度的排水操作,设置完成不需重启节点,下次维护即生效

Get-ClusterResource "虚拟机 HQ-SPDB” | Set-ClusterParameter DefaultMoveType 4

原文地址:http://blog.51cto.com/wzde2012/2066235

时间: 2024-11-13 19:49:43

WSFC 维护模式操作粒度控制的相关文章

批量启用SCOM代理的维护模式

一.单台设置维护模式 $MachineName = "a.b.local" #获取所有SCOM组件的类的实力 Get-SCOMClass -Name "*Windows*" | Get-SCOMClassInstance #获取名称为$MachineName的SCOM组件类的实例 $Instance = Get-SCOMClassInstance -Name $MachineName #设置维护时间持续10分钟 $Time = ((Get-Date).AddMinu

ESXi 6.5 进入维护模式死机在68%的进度的bug

今天操作ESXi 主机的时候遇见了一个bug.因为需要安装一个插件,豆子选择主机进入维护模式,以便重启,结果这个操作卡住了68%的进度上 看了看当前的版本号如下,这个是去年年底发行的版本了,经过研究,这个版本存在bug,需要升级到6.5U2以上才能解决这个问题. 对于已经卡住的主机,临时的解决方案是重启管理网络的agent.ssh登入主机,执行下列操作 几秒钟之后会中断连接 半分钟之后会恢复连接,之后一起恢复正常.可以重新进入维护模式. 如果记不清命令,也可以通过iLO或者iDrac之类的接口访

ansible+jenkins实现zabbix维护模式添加

##主要过程## 1. zabbix 维护模式通过ansible的 zabbix_maintenance 模块来实现 2. jenkins 调用ansible执行playbook ##最终效果##用户可多选应用组,设置维护时长,最终确认操作. ##具体实现##1.一些安全选项,和丢弃策略: 2.设置参数Influence,用来提供多选项,最终用户可选择业务范围,此处插件名称是:Extended Choice Parameter 3.设置文本参数Periods,用来提供时长,文本参数的用意在于让用

通过CLI命令使ESXi主机进入、退出维护模式

1.进入维护模式: 方法一:# vim-cmd /hostsvc/maintenance_mode_enter 方法二:# esxcli system maintenanceMode set --enable yes 方法三:# vimsh -n -e /hostsvc/maintenance_mode_enter 2.退出维护模式:方法一:# vim-cmd /hostsvc/maintenance_mode_exit 方法二:# esxcli system maintenanceMode s

CI 2.2.0可以使用AR模式操作Oracle 10g数据库

一.控制器 <?php if (!defined('BASEPATH'))    exit('No direct script access allowed'); class Topics extends CI_Controller{ function __construct()    {        parent::__construct();        $this->load->helper('url');        $this->load->helper('f

zabbix api 设置维护模式

通过zabbix提供的api进行维护模式的设置 #!/usr/bin/env python # -*-coding:utf-8-*- import urllib import urllib2 import json import sys import platform import time def auth(uid, username, password, api_url): """ zabbix认证 :param uid: :param username: :param

ORACLE有关表分区的一些维护性操作

有关表分区的一些维护性操作: 一.添加分区 以下代码给SALES表添加了一个P3分区 ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01′,'YYYY-MM-DD')); 注意:以上添加的分区界限应该高于最后一个分区界限. 以下代码给SALES表的P3分区添加了一个P3SUB1子分区 ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1

[Symfony 4.3] 创建一个站点维护模式

透过Symfony框架来创建一个站点维护模式很简单.只需在用户请求的时候检查站点是否处在维护模式中.当维护模式启动时,所有的请求都会被重新定向致某个页面去. 可以在EventListener的 onKernelRequest做到这一点: 1 <?php 2 3 namespace App\EventListener; 4 5 6 class MaintenanceListener 7 { 10 public function onKernelRequest(RequestEvent $event

PostgreSQL 模式操作

一个PostgreSQL数据库集群包含一个或多个已命名数据库.用户和用户组在整个集群范围内是共享的,但是其它数据并不共享.任何与服务器连接的客户都只能访问那个在连接请求里声明的数据库. 注意: 集群中的用户并不一定要有访问集群内所有数据库的权限.共享用户名的意思是不能有重名用户.假定同一个集群里有两个数据库和一个joe用户,系统可以配置成只允许joe 访问其中的一个数据库. 一个数据库包含一个或多个已命名的模式,模式又包含表.模式还可以包含其它对象,包括数据类型.函数.操作符等.同一个对象名可以