lvs+keepalived
-
lvs
- 集群分类
-
- 高性能计算集群HPC
- 通过以集群开发的并行应用程序,解决复杂的科学问题
-
- 负载均衡(LB)集群
- 客户端负载在计算机集群中尽可能平均分摊
-
- 高可用(HA)集群
- 避免单点故障,当一个系统发生故障时,可以快速迁移
-
- lvs集群组成
- 前段:负载均衡层
- 由一台或多台负载调度器构成
- 中间:服务器群组层
- 由一组实际运行应用服务的服务器组成
- 低端:数据共享存储层
- 提供共享存储空间的存储区域
- 前段:负载均衡层
- 专业术语
- Director Server:调度服务器
- 将负载分发到Real Server的服务器
- Real Server:真是服务器
- 真正提供应用服务的服务器
- VIP:虚拟IP地址
- 公布给用户访问的虚拟IP地址
- RIP:真实IP地址
- 集群节点上使用的IP地址
- DIP:调度器连接节点服务器的IP地址
- Director Server:调度服务器
- LVS工作模式
- NAT模式
- TUN模式
- DR模式
- 负载均衡调度算法
- LVS目前实现了10种调度算法
- 常用调度算法有4中
- 轮询(round robin)
- 加权轮询(Weight round robin)
- 最少连接(Least Connections)
- 加权最少连接(Weighted least connections)
- LVS目前实现了10种调度算法
- 步骤
-
- 使用命令增删改查LVS集群规则
- 创建LVS虚拟集群服务器(算法为加权轮询:wrr)
- [root@localhost ~]# yum -y install ipvsadm
- [root@localhost ~]# ipvsadm -A -t 10.211.55.21:80 -s wrr
- -A 创建集群 -t使用tcp协议 10.211.55.21:80对外提供的ip地址端口-s调度算法
- [root@localhost ~]# ipvsadm -Ln
- 查询创建好的集群-L查询集群,n以数字的形式显示
- 为集群加若干real server
- [root@localhost ~]# ipvsadm -a -t 10.211.55.21:80 -r 192.168.2.100 -w 1
- -a添加real server -t to -r real server -w 权重,默认是DR模式
- [root@localhost ~]# ipvsadm -a -t 10.211.55.21:80 -r 192.168.2.200 -w 1
- [root@localhost ~]# ipvsadm -a -t 10.211.55.21:80 -r 192.168.2.201 -m
- -m nat模式
[root@localhost ~]# ipvsadm -a -t 10.211.55.21:80 -r 192.168.2.202 -i
-i 隧道模式
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.211.55.21:80 wrr
-> 192.168.2.100:80 Route 1 0 0
-> 192.168.2.200:80 Route 1 0 0
-> 192.168.2.201:80 Masq 1 0 0
-> 192.168.2.202:80 Tunnel 1 0 0 - [root@localhost ~]# ipvsadm -E -t 10.211.55.21:80 -s lc
- -E 更改集群
- [root@localhost ~]# ipvsadm -e -t 10.211.55.21:80 -r 192.168.2.100:80 -m -w 3
- -e 更改real server
- [root@localhost ~]# ipvsadm -d -t 10.211.55.21:80 -r 192.168.2.100:80
- -d删除real server
- [root@localhost ~]# ipvsadm -D -t 10.211.55.21:80
- -D删除集群
-
部署LVS-NAT模式调度器
- 确认调度器的路由转发功能
- root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
- [root@proxy ~]# echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf
- 修改配置文件,设置永久规则
- 创建集群
- [root@proxy ~]# ipvsadm -A -t 10.211.55.21:80 -s wrr
- 添加真是服务器
- [root@proxy ~]# ipvsadm -a -t 10.211.55.21:80 -r 192.168.2.100 -w 1 -m
[root@proxy ~]# ipvsadm -a -t 10.211.55.21:80 -r 192.168.2.200 -w 1 -m - 查看规则列表,并保存规则
- [root@proxy ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
- 重新加载规则
- [root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@lvs ~]# ipvsadm -R < /etc/sysconfig/ipvsadm
[root@lvs ~]# ipvsadmi -Ln
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.37.129.9:80 rr
-> 10.211.55.35:80 Masq 1 0 0
-> 10.211.55.36:80 Masq 1 0 0 - 开机加载ipvsadm规则
- [root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@lvs ~]# systemctl start ipvsadm
[root@lvs ~]# systemctl enable ipvsadm
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.37.129.9:80 rr
-> 10.211.55.35:80 Masq 1 0 0
-> 10.211.55.36:80 Masq 1 0 0 -
部署DR模式
- 网络配置好各个服务器
- 在rs后端服务器上禁止免费arp
- [root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
- [root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
- [root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce - 持久化保存,可以写到/etc/sysctl.conf中
- net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2 - [root@web1 ~]# sysctl -p
- [root@web1 ~]# ifconfig lo:1 10.211.55.100/32
- 环回地址配置vip
- 使规则生效,并同样配置web2
- lvs配置
- [root@lvs ~]# ifconfig lo:1 10.211.55.100/32
- 配置集群
- [root@lvs ~]# ipvsadm -A -t 10.211.55.100:80 -s wrr
- [root@lvs ~]# ipvsadm -a -t 10.211.55.100:80 -r 10.211.55.35 -g
[root@lvs ~]# ipvsadm -a -t 10.211.55.100:80 -r 10.211.55.36 -g