高可用和负载均衡架构(LVS DR模式,keepalived高可用,LVS NAT模式,Pacemaker高可用)

高可用和负载均衡架构(LVS DR模式,keepalived高可用,LVS NAT模式,Pacemaker高可用) 目录修改静态网卡配置防火墙关闭和禁止开机自启LVS负载架构LVS DR模式VS调度器配置在vs(server1)安装ipvsadm创建虚拟IPVIP添加虚拟服务向虚拟服务添加真实服务器RSRS真实服务器配置(用server2举例server3同理)在server2安装apache服务rs也需要添加viparptables测试keepalived高可用master配置server1backup配置server4测试LVS NAT模式server1配置双网卡开启路由机制加载 nat 模块加载 lvs规则RS真实服务器配置测试Pacemaker高可用主机配置免密配置ntp时间同步安装集群软件启动pcsd服务两台机器分别设置 hacluster 相同密码确认两台服务器 pcsd 服务正常运行配置corosync重新执行集群认证server1 执行启动集群校验集群创建集群资源节点失效备援修改静态网卡配置vim /etc/sysconfig/network-scripts/ifcfg-eth0参数修改BOOTPROTOstatic或者nonedhcp为动态获取改为静态IPADDR192.168.239.xxxNETMASK255.255.255.0 /NETMASK24GATEWAY192.168.239.2 #默认网关DNS1192.168.239.2 #首选DNS服务器重载网卡ifdown eth0ifup eth0nmcli 命令行直接修改网络nmcli connection modify不需要手动改配置文件改完直接up即可磁盘文件会自动同步写入防火墙关闭和禁止开机自启用firewalld防火墙举例systemctl status firewall #查看状态systemctl stop firewalld #关闭防火墙systemctl disable firewalld #禁止开机自启具体可以看我的博客下面是链接iptables和firewalld防火墙简介和操作LVS负载架构LVSLinux Virtual Server内核四层负载均衡基于IPVS工作在传输层TCP/UDP核心四种模式NAT、DR、TUN、FULLNAT术语约定 VS调度器DirectorRS后端真实服务器Real ServerVIP虚拟 IP对外访问地址RIP真实服务器内网 IPDIP调度器后端内网 IP准备四台主机一台VS两台RS,一台测试主机名IPVIP角色server1192.168.239.132192.168.239.100调度器VSserver2192.168.239.133192.168.239.100真实服务器RSserver3192.168.239.134192.168.239.100真实服务器RSserver4192.168.239.135测试机四台主机间进行域名解析vim /etc/hostsLVS DR模式VS调度器配置ipvsadm 是 Linux 下用于管理 IPVSIP Virtual ServerIP 虚拟服务器 的命令行工具主要用于构建 LVSLinux Virtual Server负载均衡集群。它允许管理员配置和管理虚拟服务、真实服务器后端节点以及负载均衡策略。在vs(server1)安装ipvsadm[rootserver1 ~]# yum install -y ipvsadm创建虚拟IPVIP选用连接不了的IP地址作为VIP这里使用使用192.168.239.100可以选用其他IP但需要ping一下是否成功若失败则该IP可作为VIP添加vip[rootserver1 ~]# ip addr add 192.168.239.100/24 dev eth0此时VIP添加成功用server4 ping 192.168.239.100(VIP)发现可以成功添加虚拟服务参数解释-A添加虚拟服务-t指定 TCP 协议的虚拟服务格式VIP:端口其他协议-uUDP、-f防火墙标记用于复合协议-s指定负载均衡调度算法常用算法rr轮询Round Robinwrr加权轮询Weighted RRlc最少连接Least Connectionswlc加权最少连接Weighted LCsh源地址哈希Source Hash会话保持dh目标地址哈希Destination Hash[rootserver1 ~]# ipvsadm -A -t 192.168.239.100:80 -s rr虚拟服务添加成功向虚拟服务添加真实服务器RS参数解释-a添加真实服务器-t指定关联的虚拟服务需与添加虚拟服务时的 -t 一致-r指定真实服务器地址格式RIP:端口转发模式必选其一-gDR 模式Direct Routing直接路由性能最优-mNAT 模式Network Address Translation网络地址转换-iTUN 模式IP TunnelingIP 隧道跨网段场景-w指定权重值越大分配的请求越多仅用于加权算法[rootserver1 ~]# ipvsadm -a -t 192.168.239.100:80 -r 192.168.239.133:80 -g[rootserver1 ~]# ipvsadm -a -t 192.168.239.100:80 -r 192.168.239.134:80 -g保存和恢复配置# 保存当前配置到文件默认路径/etc/sysconfig/ipvsadmipvsadm-save /etc/sysconfig/ipvsadm# 从文件恢复配置ipvsadm-restore /etc/sysconfig/ipvsadm系统重启后配置会丢失需保存并设置开机自动恢复通常通过 systemctl enable ipvsadm 实现RS真实服务器配置(用server2举例server3同理)在server2安装apache服务yum install -y httpd[rootserver2 ~]# echo server2 /var/www/html/index.html设置开机自启systemctl enable --now httpdrs也需要添加vip[rootserver2 ~]# ip a a 192.168.239.100/24 dev eth0arptablesarptables是 Linux 用户空间工具用于操作ARP 报文过滤规则工作在二层 ARP 协议以太网 ARP内核模块arptables_filter作用管控ARP 请求 / 应答报文实现ARP 防火墙、防 ARP 欺骗、静态 ARP 绑定、屏蔽非法 ARP 广播。安装arptables[rootserver2 ~]# yum install arptables查看规则# 查看所有链的规详细信息arptables -L -n添加规则[rootserver2 ~]# arptables -A INPUT -d 192.168.239.100 -j DROP-A INPUT向INPUT链添加一条规则-d192.168.239.100匹配目的IP为192.168.239.100的arp包-j DROP对匹配的报文执行丢弃操作[rootserver2 ~]# arptables -A OUTPUT -s 192.168.239.100 -j mangle --mangle-ip-s 192.168.239.133AOUTPUT向 OUTPUT 链本机发出的 ARP 报文添加一条规则。-s 192.168.36.100匹配源 IP 为 192.168.239.100 的 ARP 报文即本机以该 IP 发送的 ARP 包。-j mangle对匹配的报文执行 “修改” 操作--mangle-ip-s 192.168.239.133试图将 ARP 报文中的源 IP 地址修改为 192.168.239.133。保存和恢复规则[rootserver2 ~]# arptables-save /etc/sysconfig/arptables[rootserver2~]# systemctl enable arptables测试curl 192.168.239.100 或者 for i in {1..10}; do curl 192.168.239.100; donekeepalived高可用LVS VIP192.168.239.100LVS 主节点server1MASTERLVS 备节点新增一台调度器BACKUP示例 IP 假设192.168.239.135RealServerserver2192.168.239.133server3192.168.239.134Keepalived 主配置文件默认路径为 /etc/keepalived/keepalived.conf主、备节点配置差异主要在 state角色和 priority优先级数值越高越优先成为主节点。master配置server1server1清除资源[rootserver1 ~]# ip a d 192.168.239.100/24 dev eth0[rootserver1 ~]# ipvsadm -C安装高可用软件[rootserver1 ~]# yum install -y keepalivedvim /etc/keepalived/keepalived.confsystemctl enable --now keepalived设置开机重启并立即重启查看资源是否就绪测试keepalived对后端RS的健康检测[rootserver2 ~]# systemctl stop httpd故障的RS会自动从调度列表中被摘除192.168.239.133被摘除再次启动服务[rootserver2 ~]# systemctl start httpdbackup配置server4server4安装高可用软件[rootserver4 ~]# yum install -y keepalived从server1拷贝配置文件此时在server1操作[rootserver1 ~]# scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/配置server4文件server1 和 server4 是主备调度器不能两台都是 MASTERserver4需要改为state BACKUP同时检查priority优先级这里改为50保证主节点优先级100数字更大重启并设置开机自启[rootserver4 ~]# systemctl enable --now keepalived测试停止server1上服务[rootserver1 ~]# systemctl stopkeepalived.service查看资源是否自动迁移到server4测试成功LVS NAT模式NATNetwork Address Translation网络地址转换核心调度器修改数据包 IP 地址实现转发。客户端请求 → 目标 IPVIP调度器虚拟 IPLVS 调度器接收报文修改目标 IP 为后端 RS 真实 IP转发给 RealServerRealServer 收到请求回包必须经过调度器RS 网关指向调度器内网 IP调度器收到 RS 响应修改源 IP 为 VIP返回给客户端调度器Director双网卡eth0(对内内网)192.168.239.132 DIPeth1(对外外网)192.168.10.132 VIP公网虚拟IP默认网关写在 eth1 配置文件 GATEWAY192.168.10.100RealServer网关192.168.239.132调度器内网IPNAT强制要求RS1192.168.239.133RS2192.168.36.134server1配置双网卡调度器是双网卡eth0内网192.168.239.132 ❌配置文件里不要写 GATEWAYeth1外网192.168.10.132 ✅唯一默认网关写在 eth1 配置文件内绝对禁止 eth0、eth1 同时配置 GATEWAY避免生成两条默认路由引发路由紊乱。开启路由机制vim/etc/sysctl.confnet.ipv4.ip_forward 1执行命令生效sysctl ­--p加载 nat 模块modprobe iptable_nat注如果不加载此模块也可以在第一次访问时成功但是会在再次访问时出现延迟过长或访问超时现象加载 lvs规则ipvsadm -C ipvsadm -A -t 192.168.10.132:80 -s rripvsadm -a -t 192.168.10.132:80 -r 192.168.239.133:80 -mipvsadm -a -t 192.168.10.132:80 -r 192.168.239.134:80 -mRS真实服务器配置RS真实服务器配置在 LVS NAT 模式下真实服务器RS的网关必须指向调度器的内网 IPDIP。这是 NAT 模式的核心要求。因为客户端请求经过调度器的 NAT 转换后源 IP 会变成调度器的内网 IP。RS 处理完请求后响应报文必须返回给调度器由调度器将源 IP 改回 VIP然后再返回给客户端。配置步骤1. 修改网卡配置文件在两台 RS 服务器server2: 192.168.239.133 和 server3: 192.168.239.134上编辑网卡配置文件确保网关指向调度器的内网 IP192.168.239.132。重启网络服务修改配置后重启网络服务使更改生效systemctl restart network service network restart验证网关配置使用ip route或route -n命令检查默认路由是否指向调度器。# View the routing table ip route show # or route -n The expected output should contain a line similar to: default via 192.168.239.132 dev eth0配置完成后需要进行连通性测试从 RS 上 ping 调度器的内网 IP192.168.239.132确保网络连通。从客户端访问 VIP192.168.10.132:80观察请求是否被正确转发到 RS。在调度器上检查连接状态使用ipvsadm -ln查看连接分发情况。测试访问地址 curl 192.168.10.132观测现象多次刷新页面轮流出现 RS1 / RS2 页面rr 轮询生效Pacemaker高可用Pacemaker 是 Linux 环境下主流的 开源高可用集群管理工具核心作用是通过监控集群节点和服务状态实现 “故障自动检测与切换”确保业务服务持续运行即服务不中断。它通常与 Corosync负责集群通信与成员管理配合使用组成完整的高可用集群解决方案。主机配置免密下面是免密如何设置SSH服务SSH免密访问scp和rsync命令远程文件同步systemd-journald服务查找日志systemd-journald 日志持久化-CSDN博客配置ntp时间同步配置时间同步使用阿里云时间修改 Chrony 时间同步服务使用阿里云时间服务器vim /etc/chrony.conf注释原有默认服务器添加阿里云时间源server ntp1.aliyun.com iburshtimedatectl 命令的作用查看系统当前时间、时区确认 NTP service: active表示时间同步服务已启用安装集群软件[rootserver1 ~]# yum install -y pacemaker pcs psmisc policycoreutils-python[rootserver4 ~]# yum install -y pacemaker pcs psmisc policycoreutils-python启动pcsd服务[rootserver1 ~]#systemctl enable --now pcsd.service[rootserver4 ~]#systemctl enable --now pcsd.service[rootserver1 ~]#echoredhat| passwd --stdin hacluster[rootserver4 ~]#echoredhat| passwd --stdin hacluster两台机器分别设置 hacluster 相同密码echo redhat | passwd --stdin hacluster确认两台服务器 pcsd 服务正常运行两边都执行systemctl restart pcsd systemctl status pcsd状态必须显示active (running)配置corosync重新执行集群认证server1 执行pcs cluster auth server1 server4输入用户名hacluster密码redhatserver1: Authorized server4: Authorized[rootserver1 ~]# pcs cluster setup --name mycluster server1 server4启动集群[rootserver1 ~]# pcs cluster start --all[rootserver1 ~]# pcs cluster enable --all校验集群[rootserver1 ~]# crm_verify -L -V[rootserver1 ~]# pcs property set stonith-enabledfalse[rootserver1 ~]# pcs status创建集群资源[rootserver1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip192.168.239.100 op monitor interval30s手动移除server1上的vip后集群会自动检测并修复[rootserver1 ~]# ip a d 192.168.239.100/24 dev eth0节点失效备援[rootserver1 ~]# pcs node standbyserver1失效后资源自动迁移至server4恢复server1[rootserver1 ~]# pcs node unstandby