高并发负载均衡3-LVS的DR搭建

LVS

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,官方站点是:http://www.linuxvirtualserver.org。现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须重新编译内核以支持LVS功能模块,但是从Linux2.4内核心之后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能,高可用的服务器群集,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

LVS体系架构

使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer),中间的服务器群组层,用Server Array表示,最底层的数据共享存储层,用Shared Storage表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

LVS的体系架构如图:

img

https://baike.baidu.com/item/LVS/17738?fr=aladdin

http://www.linuxe.cn/post-181.html

http://www.178linux.com/89580

隐藏的Virtual IP 配置原理

image-20210925124401885

将VIP配置在环回接口lo上

image-20210925124432838

负载均衡调度方法

四种静态调度方法:
rr: 轮叫调度(Round-Robin Scheduling)
wrr:加权轮叫调度(Weighted Round-Robin Scheduling)
dh: 目标地址散列调度(Destination Hashing Scheduling)
sh:源地址散列调度(Source Hashing Scheduling)

动态调度方法:
lc: 最小连接调度(Least-Connection Scheduling)
wlc: 加权最小连接调度(Weighted Least-Connection Scheduling)
sed: 最短期望延迟
nq: never queue
LBLC: 基于局部性的最少链接(Locality-Based Least Connections Scheduling)
DH:
LBLCR:带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)

LVS在Linux中自带的ipvs内核模块

#ipvs内核模块
yum install ipvsadm -y

#管理集群服务
添加:-A -t|u|f service-address [-s scheduler]
-t: TCP协议的集群 
-u: UDP协议的集群
service-address:   IP:PORT
-f: FWM: 防火墙标记 
service-address: Mark Number

修改:-E
删除:-D -t|u|f service-address

ipvsadm -A -t 192.168.9.100:80 -s rr
#管理集群服务中的RS
添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
 -t|u|f service-address:事先定义好的某集群服务
 -r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;

[-g|i|m]: LVS类型

 -g: DR
 -i: TUN
 -m: NAT

[-w weight]: 定义服务器权重

修改:-e
删除:-d -t|u|f service-address -r server-address
\# ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 –g
\# ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -g
查看
 -L|l
 -n: 数字格式显示主机地址和端口
 --stats:统计数据
 --rate: 速率
 --timeout: 显示tcp、tcpfin和udp的会话超时时长
 -:c 显示当前的ipvs连接状况
删除所有集群服务
 -C:清空ipvs规则
保存规则
 -S 
\# ipvsadm -S > /path/to/somefile
载入此前的规则:
 -R
\# ipvsadm -R < /path/form/somefile 

本机VMware LVS网络部署

image-20210925155527385

操作步骤

#配置虚拟网络
[root@node11 ~]# ifconfig ens33:2 192.168.10.100/24
#修改arp协议配置
#修改ens33接口
[root@node12 ens33]# cat arp_ignore 
0
[root@node12 ens33]# echo 1 >arp_ignore 
[root@node12 ens33]# cat arp_ignore 
1
[root@node12 ens33]# echo 2 >arp_announce 
[root@node12 ens33]# cat arp_announce 
2
[root@node12 ens33]# pwd
/proc/sys/net/ipv4/conf/ens33
# 修改all接口
[root@node12 all]# echo 1 >arp_ignore
[root@node12 all]# echo 2 >arp_announce
[root@node12 all]# cat arp_announce 
2
#配置vip
[root@node12 all]# ifconfig lo:2 192.168.10.100 netmask 255.255.255.255

#node13修改 配置
[root@node13 ~]# echo 1  >  /proc/sys/net/ipv4/conf/ens33/arp_ignore 
[root@node13 ~]# echo 1  >  /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@node13 ~]# echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce 
[root@node13 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node13 ~]# ifconfig lo:2 192.168.10.100 netmask 255.255.255.255

#RS中的服务 部署httpd  创建index.html
# node12-node13执行
[root@node12 all]# yum install httpd -y
[root@node12 all]# service httpd start
Redirecting to /bin/systemctl start httpd.service
[root@node12 all]# echo 'from node12'  >  /var/www/html/index.html
[root@node12 all]# cat  /var/www/html/index.html
from node12

#LVS服务配置 
#node11
[root@node11 ~]# yum install ipvsadm
[root@node11 ~]# ipvsadm -A  -t  192.168.10.100:80  -s rr
[root@node11 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.72 -g -w 1
[root@node11 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.73 -g -w 1
[root@node11 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.100:80 rr
  -> 192.168.10.72:80             Route   1      0          0         
  -> 192.168.10.73:80             Route   1      0          0  
# 验证
#浏览器访问  192.168.10.100   看到负载  
	node11:
		netstat -natp   结论看不到socket连接
	node12~node13:
		netstat -natp   结论看到很多的socket连接
	node11:
		ipvsadm -lnc    查看偷窥记录本
		TCP 00:57  FIN_WAIT    192.168.150.1:51587 192.168.150.100:80 192.168.150.12:80
		FIN_WAIT: 连接过,偷窥了所有的包
		SYN_RECV: 基本上lvs都记录了,证明lvs没事,一定是后边网络层出问题
[root@node11 ~]# ipvsadm -lnc 
IPVS connection entries
pro expire state       source             virtual            destination
TCP 00:44  FIN_WAIT    192.168.10.1:10689 192.168.10.100:80  192.168.10.73:80
TCP 00:55  FIN_WAIT    192.168.10.1:10691 192.168.10.100:80  192.168.10.72:80
TCP 00:55  FIN_WAIT    192.168.10.1:10692 192.168.10.100:80  192.168.10.73:80
TCP 00:44  FIN_WAIT    192.168.10.1:10688 192.168.10.100:80  192.168.10.72:80
		
posted @ 2021-09-26 22:39  gary2048  阅读(53)  评论(0编辑  收藏  举报