集群管理-Pacemaker
Pacemaker介绍
Pacemaker 是一个开源的高可用性软件,用于在集群环境中管理和监控服务的可用性。旨在提供一套框架和工具,使用户能够在分布式系统中构建高可用性的服务。
主要用于构建高可用性的集群服务,确保在节点或服务出现故障时能够保持系统的稳定性和可用性。它被广泛应用于企业环境中的关键业务应用和服务,如数据库、Web 服务器、应用服务器等。
主要特点和功能
集群管理: Pacemaker 允许将多个节点组成一个集群,这些节点可以共同工作以提供服务的高可用性。集群中的节点通过网络通信协同工作。
资源管理: Pacemaker 可以管理和监控集群中的各种资源,如 IP 地址、虚拟 IP 地址、文件系统、数据库等。它能够启动、停止和迁移这些资源,以确保它们在整个集群中保持可用状态。
故障检测和自动恢复: Pacemaker 提供了故障检测机制,能够检测节点和资源的故障。一旦发现故障,它可以自动采取措施来恢复服务,例如迁移资源到其他健康的节点。
灵活的资源策略: Pacemaker 允许用户定义资源的启动顺序、亲和性规则和放置约束,以确保服务在特定节点上以期望的方式运行。
强大的插件架构: Pacemaker 的插件架构允许用户集成不同类型的资源代理,以支持各种服务和应用程序。它支持多种资源代理,如 OCF(Open Cluster Framework)资源代理、Systemd 服务资源代理等。
Web 界面和命令行工具: Pacemaker 提供了直观的 Web 界面(Pacemaker GUI)和强大的命令行工具,用于配置、监控和管理集群。
可扩展性和兼容性: Pacemaker 是一个可扩展和高度模块化的系统,可以适应不同规模和类型的集群。它与各种存储系统、网络配置和硬件兼容,并支持多种操作系统。
命令介绍
# 在基于 Red Hat 的系统上
sudo yum install pacemaker corosync pcs
# 在基于 Debian 的系统上
sudo apt-get install pacemaker corosync pcs
## 配置文件:/etc/corosync/corosync.conf
创建集群和节点
# 创建集群
sudo pcs cluster setup --name mycluster node1 node2
# 启动集群
sudo pcs cluster start --all
# 停止集群
sudo pcs cluster stop --all
# 重启集群
sudo pcs cluster restart --all
# 查看集群状态
sudo pcs status
## 添加节点到集群:将新节点 new_node 添加到现有的 Pacemaker 集群。
sudo pcs cluster node add new_node
## 删除节点从集群:从 Pacemaker 集群中删除节点 node_to_remove。
sudo pcs cluster node remove node_to_remove
可管理的资源
- IP 地址资源
允许管理虚拟 IP 地址,确保在故障切换时 IP 地址能够在不同节点之间迁移。
sudo pcs resource create myvip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24
- 文件系统资源 (ocf💓Filesystem)
允许管理文件系统,确保在节点切换时挂载和卸载文件系统。
sudo pcs resource create myfs ocf:heartbeat:Filesystem device="/dev/sdb1" directory="/mnt/data" fstype="ext4"
- 服务资源 (systemd)
允许管理 Systemd 服务,确保在节点切换时启动和停止服务。
sudo pcs resource create myservice systemd:apache2
- 数据库资源 (ocf💓pgsql)
允许管理 PostgreSQL 数据库实例,确保在节点切换时启动和停止数据库服务。
sudo pcs resource create mydb ocf:heartbeat:pgsql \
op monitor interval=30s \
params pgctl="/usr/pgsql-13/bin/pg_ctl" \
params pgdata="/var/lib/pgsql/13/data" \
params pgport="5432" \
params pgdatabase="mydatabase" \
params pgsuperuser="postgres" \
params pgdaemon="postgres"
- 虚拟机资源 (ocf💓VirtualDomain):
允许管理虚拟机,确保在节点切换时启动和停止虚拟机。
sudo pcs resource create myvm ocf:heartbeat:VirtualDomain hypervisor="qemu" \
config="/path/to/vm.xml" \
migration_transport="ssh"
运维命令
# 查看资源配置
sudo pcs resource show
# 删除资源
sudo pcs resource delete myvip
# 删除约束
sudo pcs constraint delete <constraint_id>
# 配置约束:设置资源启动顺序约束
sudo pcs constraint order start myvip then myservice
# 查看约束配置
sudo pcs constraint show
## 设置属性:设置 Pacemaker 属性。在上述示例中,禁用 STONITH(Shoot The Other Node In The Head)。
sudo pcs property set stonith-enabled=false
## 查看属性配置:查看当前配置的 Pacemaker 属性列表。
sudo pcs property show
## 启用/禁用节点:使节点进入或退出 Standby 模式。在 Standby 模式下的节点不参与资源管理。
sudo pcs cluster standby node_to_standby
sudo pcs cluster unstandby node_to_unstandby
## 强制启动资源:强制启动名为 myresource 的资源,即使有其他约束阻止。
sudo pcs resource enable myresource
## 强制停止资源:
sudo pcs resource disable myresource