LVS-NAT实验记录

LVS简介:全称Linux Virtual Server,是一种负载均衡技术。它可以将网络服务的负载分散到多个服务器上,这些服务器构成一个服务器集群,对外表现为一个虚拟服务。本身并不提供服务,只是把特定的请求转发给对应的real server(真正提供服务的主机),从而实现集群环境中的负载均衡。

LVS-NAT工作原理:



①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标IP地址改为了后端服务器的RIP地址并将报文根据算法发送出去。

③.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。

④.然后lvs将此报文的源地址修改为本机并发送给客户端。

一,实验背景


Client:192.168.9.131
LVS-外网:192.168.9.129
VIP:192.168.9.129
LVS-内网:192.168.79.128
WEB1:192.168.79.129
WEB2:192.168.79.130
PS:注意要关闭防火墙和SELinux

二,内网WEB1/2服务器配置网站和路由

2.1,配置web服务
#安装httpd服务
[root@web1 ~]yum  install -y httpd
#启用http
[root@web1 ~]systemctl start httpd
#设置自启
[root@web1 ~]systemctl enable httpd
#设置主页面(以web1为例)
[root@web1 ~]echo  "This is Web1" >/var/www/html/index.html

2.2,配置路由(指向出口-LVS服务器)
#配置静态路由(WEB1/2都要配置
route add -net 192.168.9.0/24 gw 192.168.79.128

三,配置LVS路由功能和负载策略

3.1,启用路由转发
[root@lvs-nat ~]# sysctl net.ipv4.ip_forward     	#查看是否开启路由转发
net.ipv4.ip_forward = 0			     		#“0”代表没有开启
[root@lvs-nat ~]#vim /etc/sysctl.conf     		#开启转发功能
net.ipv4.ip_forward = 1					#添加进去
[root@lvs-nat ~]#sysctl -p  				#使生效

3.2,安装并启用LVS
[root@lvs-nat ~]# yum install -y ipvsadm.x86_64 
[root@lvs-nat ~]# touch /etc/sysconfig/ipvsadm  #没创建会无法启动
[root@lvs-nat ~]# systemctl start ipvsadm.service   #启动LVS

3.3,配置负载均衡
[root@lvs-nat ~]# ipvsadm -A -t 192.168.9.129:80 -s rr     #-A 添加虚拟服务器(LVS的外网ip);-t tcp;-s 调度;rr 轮询
[root@lvs-nat ~]# ipvsadm -a -t 192.168.9.129:80 -r 192.168.79.129:80 -m  #-a 添加真实服务器;-r 真实IP;-m nat模式 
[root@lvs-nat ~]# ipvsadm -a -t 192.168.9.129:80 -r 192.168.79.130:80 -m

查看当前配置的虚拟服务和各个RS的权重

[root@lvs-nat ~]# 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.9.129:80 rr
  -> 192.168.79.129:80            Masq    1      0          6         
  -> 192.168.79.130:80            Masq    1      0          6  

四,测试&验证

4.1,客户端测试
[root@clinet ~]# curl 192.168.9.129
This is Web1
[root@clinet ~]# curl 192.168.9.129
This is Web2
[root@clinet ~]# curl 192.168.9.129
This is Web1
[root@clinet ~]# curl 192.168.9.129
This is Web2

可以看到web服务器根据轮询规则一次换一台接受访问

4.2,查看LVS统计值
[root@lvs-nat ~]# ipvsadm -L -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:59  TIME_WAIT   192.168.9.131:36660 lvs-nat:http       192.168.79.130:http
TCP 01:58  TIME_WAIT   192.168.9.131:36658 lvs-nat:http       192.168.79.129:http
TCP 01:52  TIME_WAIT   192.168.9.131:36648 lvs-nat:http       192.168.79.130:http
TCP 01:55  TIME_WAIT   192.168.9.131:36652 lvs-nat:http       192.168.79.130:http

查看当前ipvs模块中的转发情况信息

[root@lvs-nat ~]# ipvsadm -Ln --stats 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.9.129:80                   26      153      100    10245    11837
  -> 192.168.79.129:80                  13       78       52     5231     6153
  -> 192.168.79.130:80                  13       75       48     5014     5684
接下一篇:LVS-DR实验记录

评论

此博客中的热门博文

ELK日志平台——Elasticsearch 8.x安装部署

Linux终端中文字体显示乱码问题解决方法

部署ELK日志平台集群(Elasticsearch, Logstash, Kibana)实验记录