|NO.Z.00011|——————————|^^ 构建 ^^|——|HAC构建.V2|——|5台server|
一、Keepalived原理
### --- Keepalived原理
### --- 案例环境专为LVS和HA设计的一款健康检查工具
~~~ LVS是一款著名的负载均衡调度器。LVS在它的功能中专门加了一个Keepalived模块,
~~~ 现在企业主要使用LVS+keepalived实现高可用和负载均衡。
~~~ 支持故障自动切换(Failover)
~~~ 支持节点健康状态检查(Health Checking)
~~~ 官方网站:http://www.keepalived.org/
### --- keepalived的热备方式
~~~ VRRP(Virtual Router Redundancy Protocol,
~~~ 虚拟路由冗余协议:网路中非常重要的协议)
~~~ 一主+多备,公用一个IP地址,但优先级不同
### --- 对于路由器实现最简洁的方案是VRRP方式。
~~~ 把这些路由器放在同一个组里,只有在同一个组里才会竞争IP的使用权。
~~~ 漂移地址:在同一个组里漂移地址会来回移动。
~~~ 若是主宕机其它三台会选举一个主出来,主来承担漂移地址的使用权;
~~~ 这个方案保证整个网络不会中断
~~~ keeplived底层就是通过VRRP这个底层技术去实现高可用。

二、LVS-DR+keepalived

### --- LVS-DR+keepalived
~~~ LVS-DR:是企业首选的一种LVS工作方式。
~~~ LVS-DR+keeplived实现我们的负载高可用方案。
~~~ 10.10.10.240——>客户端
~~~ 10.10.10.11:LVS-M | 10.10.10.13:RS1 10.10.10.14:RS2 第一步构建
~~~ 10.10.10.13:LVS-S——>备份节点/LVS从节点 第二步构建
一、系统规划:
### --- 系统规划:
~~~ Windows:10.10.10.240:client
~~~ 10.10.10.11:LVS-M:LVS主节点
~~~ 10.10.10.12:LVS-S:LVS从节点
~~~ 10.10.10.13:RS1:主服务器1
### --- 10.10.10.14:RS2:主服务器2
### --- 说明:
~~~ LVS本身是没有对后端主机存活状态的检测功能,之前我们使用脚本LVS健康检查脚本实现
~~~ LVS+keeplived:keeplived是支持后端主机存活状态的检测功能的。
~~~ 且它融合了LVS的模块,所以它可以自动的添加三组节点。
二、实验构建:LVS-DR模式构建
### --- 实验环境准备
### --- 关闭所有节点的网卡守护进程
[root@server11 ~]# service NetworkManager stop && chkconfig NetworkManager off
1、10.10.10.11:构建LVS-DR模式的负载均衡集群
### --- LVS-DR模式构建
### --- 10.10.10.11:构建LVS-DR模式的负载均衡集群
### --- 添加网卡,作为VIP去使用
[root@server11 ~]# cd /etc/sysconfig/network-scripts/
[root@server11 network-scripts]# cp -a ifcfg-eth0 ifcfg-eth0:0
[root@server11 network-scripts]# vim !$
DEVICE=eth0:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.100
NETMASK=255.255.255.0
### --- 启动ifcfg-eth0:0网卡
[root@server11 network-scripts]# ifup ifcfg-eth0:0
Determining if ip address 10.10.10.100 is already in use for device eth0...
[root@server11 network-scripts]# ifconfig
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:FA:34:71
inet addr:10.10.10.100 Bcast:10.10.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
### --- 安装ipvsadm
[root@server11 ~]# yum install -y ipvsadm
### --- 安装网卡的广播功能,防止IP冲突
[root@server11 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
[root@server11 ~]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
### --- 添加集群
[root@server11 ~]# ipvsadm -A -t 10.10.10.100:80 -s rr
[root@server11 ~]# ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.13:80 -g
[root@server11 ~]# ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.14:80 -g
[root@server11 ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
### --- 查看集群
[root@server11 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.100:80 rr
-> 10.10.10.13:80 Route 1 0 0
-> 10.10.10.14:80 Route 1 0 0
2、10.10.10.13:RS1,添加真实服务器RS1
### --- 10.10.10.13:RS1,添加真实服务器RS1
### --- 开启Apache服务
[root@server13 ~]# service httpd start
[root@server13 ~]# chkconfig httpd on
[root@server13 ~]# echo "this is server 1" >> /var/www/html/index.html
[root@server13 ~]# curl localhost
this is server 1
### --- 开启lo:0网卡并关闭ARP的通信行为
[root@server13 ~]# cd /etc/sysconfig/network-scripts/
[root@server13 network-scripts]# cp -a ifcfg-lo ifcfg-lo:0
[root@server13 network-scripts]# vim !$
DEVICE=lo:0
IPADDR=10.10.10.100
NETMASK=255.255.255.255
NETWORK=127.0.0.0
[root@server13 ~]# ifup lo:0
### --- 设置路由规则
[root@server13 ~]#
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@server13 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
### --- 添加一条路由记录
[root@server13 ~]# route add -host 10.10.10.100 dev lo:0
### --- 查看路由记录
[root@server13 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.10.100 0.0.0.0 255.255.255.255 UH 0 0 0 lo //10.10.10.100交给lo:0网卡
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
### --- 把路由规则写入开机自启里
[root@server13 ~]# echo "route add -host 10.10.10.100 dev lo:0" >> /etc/rc.local
3、10.10.10.14:RS2,添加真实服务器RS12
### --- 10.10.10.14:RS2,添加真实服务器RS12
### --- 开启Apache服务
[root@server14 ~]# service httpd start
[root@server14 ~]# chkconfig httpd on
[root@server14 ~]# echo "this is server 2" >> /var/www/html/index.html
[root@server14 ~]# curl localhost
this is server 2
### --- 开启lo:0网卡并关闭ARP的通信行为
[root@server14 ~]# cd /etc/sysconfig/network-scripts/
[root@server14 network-scripts]# cp -a ifcfg-lo ifcfg-lo:0
[root@server14 network-scripts]# vim !$
DEVICE=lo:0
IPADDR=10.10.10.100
NETMASK=255.255.255.255
NETWORK=127.0.0.0
[root@server14 ~]# ifup lo:0
### --- 设置路由规则
[root@server14 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@server14 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
### --- 添加一条路由记录
[root@server14 ~]# route add -host 10.10.10.100 dev lo:0
### --- 查看路由记录
[root@server14 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.10.100 0.0.0.0 255.255.255.255 UH 0 0 0 lo // 10.10.10.100交给lo:0网卡
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
### --- 把路由规则写入开机自启里
[root@server14 ~]# echo "route add -host 10.10.10.100 dev lo:0" >> /etc/rc.local
三、验证:通过IE浏览器http://10.10.10.100/


四、通过ipvsadm命令行的方式验证
### --- 通过ipvsadm命令行的方式验证
[root@server11 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 10.10.10.100:80 28 140 0 19750 0
-> 10.10.10.13:80 14 70 0 9845 0
-> 10.10.10.14:80 14 70 0 9905 0
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv001-lbchac
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通