云计算运维day8--高可用与负载均衡2
目录一.高可用Pacemaker1.1基本概念1.2集群管理软件PCS1.2.1基本概念1.2.2安装软件并启动服务1.2.3命令格式与参数1.3实现调试机的Pacemaker高可用1.3.1准备工作1.3.2安装软件服务1.3.3配置corosync1.3.4启动集群1.3.5创建集群资源1.3.6节点失效备源1.3.7添加apache 服务资源1.3.8测试1.3.9删除集群资源不用做用来补充1.4实现数据库的高可用1.4.1配置ISCSI输出端1.4.2配置ISCSI客户端1.4.3整合 iscsi 存储和 mariadb 数据库一.高可用Pacemaker1.1基本概念1.作用通过监控集群节点和服务状态实现“故障自动检测与切换”确保业务服务持续运行。它通常与 Corosync负责集群通信与成员管理配合使用组成完整的高可用集群解决方案。2.管理工具2.1Pacemaker开源高可用集群管理工具2.2pcsPacemaker/Corosync集群的命令行管理工具3.组件主要依赖 底层通信 和 上层资源管理 两大模块组件作用Corosync底层通信引擎,负责集群节点间的心跳检测(确认节点是否存活)、集群状态同步,是Pacemaker的“通信基石”。Pacemaker上层资源管理器,基于Corosync提供的节点状态,实现资源(如服务、IP、存储)的调度、故障切换和约束管理。资源(Resource)集群需管理的“业务实体”,如虚拟IP(VIP)、Web服务(Nginx)、数据库(MySQL)等,是高可用保护的核心对象。资源代理RA用于控制资源启停、状态检查的“脚本/程序”(如ocf:heartbeat:IPaddr2 管理VIP),Pacemaker通过RA与资源交互。约束Constraint定义资源调度规则,如“资源必须运行在特定节点”(位置约束)、“多个资源需在同一节点运行”(共置约束)。4.核心工作原理Pacemaker 实现高可用的核心逻辑是“心跳检测 故障切换”1.集群初始化多节点至少 2 个通过 Corosync 建立通信选举出“主节点”负责资源调度和“备节点”。2.资源部署Pacemaker 根据配置将资源如 VIP Nginx部署到主节点备节点处于“待命” 状态。3.心跳检测Corosync 定期在节点间发送“心跳报文”默认每 1 秒主节点需向备节点证明自己“存活”。4.故障检测若备节点长时间如 5 秒未收到主节点心跳判定主节点“故障”触发切换流程。5.自动切换Pacemaker 清理主节点上的资源标记为“失效”并在备节点上启动资源最终备节点升级为新主节点业务恢复访问。5.典型集群架构Pacemaker 支持多种集群拓扑最常用的是“双节点主备架构”主节点运行核心业务资源如 VIP、应用服务对外提供服务。备节点实时监控主节点状态不运行业务资源仅在主节点故障时接管。共享存储可选若业务需数据共享如 MySQL需配合共享存储如 NFS、iSCSI确保主备节点访问同一数据。1.2集群管理软件PCS1.2.1基本概念1.作用用于配置和管理高可用集群资源。它支持创建集群、配置资源、监控状态、处理故障转移等。2.解决问题1.主用调试机故障备用调试机检测不到主用调式机自动生成主机接管工作2.当某台后端服务器故障时调试机不再向故障的服务器发送数据1.2.2安装软件并启动服务yum install -y pacemaker pcs psmisc policycoreutils-python #安装软件 systemctl enable --now pcsd.service #启动服务1.2.3命令格式与参数pcs [选项] 子命令 -[参数]子命令cluster集群管理启动/停止集群node节点管理查看节点状态设置节点属性resource资源管理创建、删除、启动、停止资源constraint约束管理设置启动顺序status状态查看查看集群整体状态property配置管理设置集群属性1.集群管理pcs cluster setup --name mycluster node1 node2 ## 创建集群在两台节点上执行 pcs cluster start --all # 启动集群 pcs cluster stop --all # 停止集群 pcs cluster status # 查看集群状态 pcs cluster verify # 验证集群配置2.节点管理pcs status nodes # 查看所有节点状态 pcs node standby node1 # 使节点离线模拟故障 pcs node unstandby node1 # 使节点重新上线 pcs status # 查看节点的资源分布3.资源管理pcs resource create vip ocf:heartbeat:IPaddr2 ip192.168.7.100 cidr_netmask24 op monitor interval30s # 创建一个资源如虚拟 IP pcs resource create nginx systemd:nginx op monitor interval30s # 创建一个 Nginx 服务资源 pcs resource list # 查看所有资源 pcs resource show # 查看资源状态 pcs resource start vip # 启动资源 pcs resource stop vip #停止资源 pcs resource restart vip #重启资源 pcs resource delete vip # 删除资源 pcs resource move vip node1 # 设置资源在特定节点上优先运行4.约束管理pcs constraint colocation add vip with nginx #设置资源共置vip 和 nginx 必须运行在同一节点 pcs constraint order start vip then start nginx # 设置资源启动顺序先启动 vip再启动 nginx pcs constraint location vip prefers node1200 # 设置资源位置偏好优先在 node1 运行 pcs constraint show # 查看所有约束5.属性管理pcs property set stonith-enabledfalse # 禁用 STONITH测试环境常用 pcs property set resource-stickiness100 # 设置集群默认资源超时时间 pcs property list # 查看所有属性 pcs property show stonith-enabled # 查看特定属性值1.3实现调试机的Pacemaker高可用1.3.1准备工作1.定义两台调试机一个后端服务器一台测试机域名已完成解析server4:调试机IP192.168.7.140server7:调试机IP192.168.7.143server5:后端服务器IP192.168.7.141server6后端服务器IP192.168.7.142VIP192.168.7.1002.同步两台调试机的时间server 4和server7systemctl restart chronyd如果系统中没安装chronyd服务按以下步骤安装yum install -y chrony.x86_64 vim /etc/chrony.conf #编辑配置文件 #添加以下内容 server ntp1 .aliyun.com iburst #设置阿里云时间 systemctl enable --now chronyd #启动并开机自启 date #查看时间用于测试3.关闭keepalived两个服务同时启动会造成curl卡死的情况systemctl stop keepalived1.3.2安装软件服务1.两台调试机上安装pcs等软件和依赖并启用服务server4和server7上yum install -y pacemaker pcs psmisc policycoreutils-python systemctl enable --now pcsd.service2.两台调试机清空防火墙配置并查看防火墙规则server4和server7iptables -C #清空规则 iptables -Ln #查看防火墙配置3.在两台调试机上为你的hacluster用户配置密码server4和server7echo 你的密码 | passwd --stdin hacluster4.两台调试机上启动pscd服务并设置开机自启server4和server7systemctl start pcsd systemctl enable pcsd1.3.3配置corosync1.认证集群点一台调试机上在server4和server7之间建立集群通信信任关系让它们能够互相认证。server4上pcs cluster auth server4 server72.在server4上创建一个名为mycluster的集群并将server4和server7作为集群节点加入。server4:pcs cluster setup --name mycluster server4 server71.3.4启动集群1.在一台调试机上启动并设置开机自启集群server4:pcs cluster start --all #启动集群 pcs cluster enable --all #设置开机自启 pcs status #查看状态2.在一台调试机上主动关闭电源管理避免没有配置电源管理时资源无法启动电源管理强制断电故障节点防止数据损坏。server4:pcs property set stonith-enabledfalse pcs status #查看状态3.校验集群在一台调试机上校验集群server4:crm_verify -L1.3.5创建集群资源1.在一台调试机上用于在Pacemaker上创建一个名为vip集群资源该资源会在集群节点之间浮动确保 VIP 始终可用server4:pcs resource create vip ocf:heartbeat:IPaddr2 ip192.168.7.100 op monitor interval30s2.测试在server4上手动移除VIP192.168.7.100观察VIP是否存在ip a del 192.168.7.100 dev ens32 #手动删除VIP ip a #查看系统IP1.3.6节点失效备源1.在一台调试机上使节点离线观察资源失效后是否转移至另一台调试机上server4:pcs node standby #节点离线 pcs status #查看集群上所用的调试机2.验证成功后恢复server4上的节点server4:pcs node unstandby pcs status1.3.7添加apache服务资源1.确保server4和server7上确保httpd服务运行server4和server7:systemctl status httpd2.在一台调度机上让Pacemaker管理httpd服务每 1 分钟检查一次服务状态。server4上:pcs resource create WebSite systemd:httpd op monitor interval1min3.如果出现vip和WebSite不在同一调试机上则创建资源组强制资源运行在同一节点pcs resource group add webgroup vip WebSite出现以下原因解决将两个服务加入到一个资源组中1.3.8测试1.在windwos端使用VIP访问后端服务器server5server62.临时停止server4的节点观察是否能够访问后端服务器server4pcs node standby1.3.9删除集群资源不用做用来补充pcs resource group remove webgroup #删除资源组 pcs resource delete vip #删除资源 pcs resource delete WebSite #删除资源1.4实现数据库的高可用server5输出端客户端访问的数据库所在服务器server4,server7客户端1.4.1配置ISCSI输出端1.在server5上添加虚拟机磁盘/dev/sdblsblk2.安装软件(targetcli)yum install -y targetcli #安装软件 systemctl enable --now target3.创建ISCSI存储(看day5详解)targetcli1.4.2配置ISCSI客户端1.在两台客户端上安装ISCSI客户端和数据库服务server4,server7yum install -y mariadb-server yum install -y iscsi-initiator-utils.x86_64 systemctl enable --now iscsi2.在两台服务端上配置ISCSI文件server4和server7:vim /etc/iscsi/initiatorname.iscsi #添加你自己配置的认证文件 InitiatorNameiqn.2026-07.com.example:demonky systemctl restart iscsid iscsiadm -m discovery -t st -p 192.168.7.141 #发现服务你的后端服务IP iscsiadm -m node -l #登录服务 lsblk #查看硬盘资源是否加入到server4和server7中3.分区格式化:在一台调试机上进行即可server4:我这里直接格式化了整块硬盘fdisk /dev/sdb可选 #这里可选创建分区或者用整块盘均可注意设备名是你新发现的硬盘 mkxfs.xfs /dev/sbd4.sever4上挂载设备并设置目录所有者和所有组server4:mount /dev/sdb /var/lib/mysql chown mysql.mysql /var/lib/mysql systemctl restart mariadb5.server4上停止数据库服务,卸载server4:systemctl stop mariabd.service unmount /var/lib/mysql6. 在server7上配置ISCSI认证服务重启登录服务vim /etc/iscsi/initiatorname.iscsi #添加你自己配置的认证文件 InitiatorNameiqn.2026-07.com.example:demonky systemctl restart iscsid iscsiadm -m discovery -t st -p 192.168.7.141 #发现服务你的后端服务IP iscsiadm -m node -l #登录服务1.4.3整合iscsi存储和mariadb数据库1.如果之前没删除资源组在这里一删pcs resource group remove webgroup #删除资源组 pcs resource delete vip #删除资源 pcs resource delete WebSite #删除资源2.在server4上创建 iscsudb和mariabd资源并添加到一个资源组中pcs resource create iscsidb ocf:heartbeat: Filesystem device/dev/sdb rectory/var/lib/mysql fstypexfs op monitor interval1min pcs resource create mariadb systemd:mariadb op monitor interval1mi pcs resource group add dbgroup vip iscsidb mariadb3.当vip与mariadb不一致时可以先临时停止一个调试机在恢复即可解决出现下面问题解决办法server4:pcs node standby pcs node unstandby