High-availability Clustering高可用之三 -- 管理Fencing
什么是Fencing?
Red Hat High Availability Add-on使用fencing来确保集群中的数据完整性。fencing通常通过关闭节点的电源来完成,因为死节点显然无法执行任何操作。在其他情况下,一组操作将用于切断节点与网络(阻止新工作到达)或存储(阻止节点写入共享存储)的连接。fencing是群集中服务和资源恢复的必要步骤。Red Hat HighAvailability附加模块将不会为无响应节点启动资源和服务恢复,直到该节点被fencing。
不使用Fencing操作集群
没有fencing,共享存储资源上的数据完整性就无法得到保证。在由节点A、B和C组成的三节点群集中,没有配置fencing设备。节点A有一个从共享存储装载的ext4文件系统,并且正在运行一个web服务器,为来自该文件系统的页面提供服务。如果节点A在网络上停止响应,将触发以下事件链:
-
节点B执行文件系统快速检查后,从共享存储挂载文件系统。
-
节点B启动web服务。
-
节点A再次醒来,并继续向同样挂载在节点B上的ext4文件系统进行写入。
-
随后文件系统崩溃。
使用Fencing操作集群
为了阻止节点A访问文件系统,从而导致文件系统损坏,在节点B接管资源后,必须确保节点A在另一个节点尝试挂载文件系统之前不再访问该文件系统。这个过程叫做fencing。
配置了fencing后,事件链会略有不同:
-
节点B和节点C将节点A从存储中删除。
-
节点B执行文件系统快速检查后,从共享存储挂载文件系统。
-
节点B启动web服务。
-
节点A再次唤醒并尝试写入挂载的文件系统。此操作失败,因为节点A无法再访问共享存储资源。
Fencing机制简介
有两种主要的fencing方法:power fencing,也被称为Shoot The Other Node In The Head (STONITH),和fabricfencing。这两种fence方法都需要一个fencing设备,例如电源开关或虚拟fencing守护进程和fencing代理软件来实现集群和fencing设备之间的通信。当需要fencing特定节点时,fencing代理要互相通信。
Power fencing
power fencing需要切断服务器的电源。这种fencing方法被称为“STONITH”,简称为“枪毙另一个节点的头部”,
有两种不同的power fencing装置:
•外部fencing硬件,切断电源,如网络控制的电源排。
•内部fencing硬件,如ILO、DRAG, IPMl或虚拟机fencing,用于poweroff节点的硬件。
power fencing可以配置为关闭目标机器并保持其关闭,或关闭它然后再打开。重新启动计算机的附加好处是,如果启用了集群服务,那么计算机应该干净地重新启动并重新加入集群。
下图展示了在一台服务器中使用一个网络控制的电源控制器和两个电源进行功率fencing的示例。
Fabric fencing
Fabric fencing (SCSI fencing)需要在存储层断开计算机与存储的连接。这可以通过关闭光纤交换机上的端口或使用SCSI保留来实现。如果只使用fabric fencing而没有结合power fencing对机器进行防护,则管理员有责任确保机器再次加入集群。这通常通过重新启动故障节点或对故障节点进行电源循环来完成。
下图显示了使用多路径光纤通道存储的fabric fencing示例。
设置Fencing设备
fence设备配置简介
fencing是每个可操作集群的必要条件。为集群设置fencing时的第一步是设置执行实际fencing的硬件或软件设备。
Red Hat Enterprise Linux High Availability附加模块提供了多种fencing代理,可用于不同的fence设备,pcs stonith list提供了所有已安装fencing代理的列表:
[root@node65 ~]# pcs stonith list
根据使用的fencing设备和fencing agent的不同,需要不同的参数。这些参数由fencing agent传递给fencing设备。只有通过上述参数设置,集群节点的fencing代理才能与fence设备通信成功。系统中为每一个已发货的fencing代理提供了一个手册页;手册页介绍了可以传递给fencing设备的参数。一个特定的fencing代理可能的和必需的参数列表也可以通过执行命令pcs stonith describe 找到。
[root@node65 ~]# pcs stonith describe fence_rhevm
相关文章
- 如何有效地将短期和长期待办事项联合起来管理?
- 《C#高级编程》学习笔记----c#内存管理--栈VS堆
- iOS之多控制器管理--项目中的常见文件
- 为何在新线程中使用注解获取不到Spring管理的Bean
- Windows内存管理的方式
- Cocos2d-x与ios内存管理分析(在游戏中减少内存压力)
- 读书笔记--SQL必知必会20--管理事务处理
- dubbo-admin管理平台搭建
- Linux 文件权限管理命令chmod、chown
- golang go mod包管理:安装第三方包的三种方式(go get/go mod download/go mod vendor)
- Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
- atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结
- 【Linux 内核 内存管理】物理分配页 ⑤ ( get_page_from_freelist 快速路径调用函数源码分析 | 遍历备用区域列表 | 启用 cpuset 检查判定 | 判定脏页数量 )
- 【云原生 | 09】Docker之多容器管理
- 101.第十九章 MySQL数据库 -- MySQL的日志管理(十一)
- 97.第十九章 MySQL数据库 -- MySQL视图、函数、触发器及用户权限管理(七)
- 83.第十七章 企业级容器技术docker -- Docker Compose、Docker 仓库管理(十一)
- 51.第十一章 进程和计划任务 -- 进程管理和性能相关工具、任务计划(三)
- 45.第十章 网络协议和管理配置 -- TCP/IP 协议栈(六)
- y25.第二章 Docker从入门到精通 -- docker镜像制作和管理(七)
- L55.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- mkswap和swapon
- L54.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- umount和df
- L41.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- userdel和groupadd
- OA办公软件开发如此神奇!为企业节省100万管理成本
- 情绪管理--不要总做“好脾气”的人。
- 转:著名的100个管理定律点评6 -- 决策(下)
- 【ELK】Centos7 安装 ELK 7.6.2 和 UI 管理界面以及测试例子
- 【仓库管理】搭建 Maven 私服之一--Nexus仓库(Repository)管理软件
- GIT学习----第五节:管理修改
- 软考高项之进度管理——攻坚记忆