我会先写工作原理然后再写配置步骤,配置步骤不懂的可以再返回来看一下工作原理
LVS(Linux Virtual Server)是一种基于Linux操作系统的负载均衡解决方案。它通过将请求分发到多个后端服务器上,实现高可用性和可扩展性。LVS常用于网站、数据库等需要高并发访问的场景。
IPVS(IP Virtual Server): LVS的核心组件,负责实现负载均衡功能。
调度器(Director): LVS中的负载均衡器,接收来自客户端的请求,并根据调度算法将请求转发到真实服务器。
真实服务器(Real Server): 实际处理客户端请求的服务器。
虚拟IP(VIP): 提供给客户端访问的IP地址,实际由调度器管理。
简介: 根据请求的源地址计算哈希值,并将其分配到对应的服务器。
工作原理: 类似于将邮件按发件人地址分发到不同的邮局。
适用场景: 适用于固定的源地址请求分配。
节点 | IP |
---|---|
LVS | 192.168.200.170(public) 192.168.100.164(internal) |
Nginx01 | 192.168.100.163 |
Nginx02 | 192.168.100.162 |
通过这个规划表大家就可以看出来,提供服务的Nginx是在一个内网里面,客户端不可能访问到的,接下来看需求
192.168.200.0/24
,另一个是连接内部真实服务器的IP段192.168.100.0/24
,现在要求配置LVS,使得客户端访问192.168.200.170:80,然后LVS会根据轮询策略来将请求转发到对应的Nginx服务器上[root@oe01 ~]# yum install ipvsadm -y
[root@oe01 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
安装就只需要安装这个包就可以了,不需要启动任何服务
# 所有节点执行这些命令
[root@oe01 ~]# systemctl disable --now firewalld
[root@oe01 ~]# setenforce 0
# 1. 添加虚拟服务
[root@oe01 ~]# ipvsadm -A -t 192.168.200.170:80 -s rr
# 2. 添加真实服务器
[root@oe01 ~]# ipvsadm -a -t 192.168.200.170:80 -r 192.168.100.163:80 -m
[root@oe01 ~]# ipvsadm -a -t 192.168.200.170:80 -r 192.168.100.162:80 -m
# 查看
[root@oe01 ~]# 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.200.170:80 rr
-> 192.168.100.162:80 Masq 1 0 0
-> 192.168.100.163:80 Masq 1 0 0
这样LVS就配置好了,我们来解释一下参数
到这里,我们LVS上的操作就做完了,然后我们需要到Nginx上配置
我们将2个nginx的index.html文件改为hello,nginx01
和hello nginx02
# 第一台nginx
[root@oe02 ~]# echo "hello nginx01" > /usr/share/nginx/html/index.html
# 第二台nginx
[root@oe03 ~]# echo "hello nginx02" > /usr/share/nginx/html/index.html
这样我们的Nginx就配置好了,但是你现在使用客户端去访问192.168.200.170
这个地址的话是出不来的,我们还需要给nginx配置网关,网关指向LVS的192.168.100.164
这个地址
[root@oe02 ~]# ip route add default via 192.168.100.100 dev ens33
[root@oe03 ~]# ip route add default via 192.168.100.100 dev ens33
这样我们的配置也完成了,我们来使用客户端访问一下
C:\Users\86156>curl 192.168.200.170
hello nginx01
C:\Users\86156>curl 192.168.200.170
hello nginx02
C:\Users\86156>curl 192.168.200.170
hello nginx01
C:\Users\86156>curl 192.168.200.170
hello nginx02
看这个命令提示符就可以看出来,我们访问已经被轮询到不同的节点上了,我们可以在LVS节点上看见连接
[root@oe01 ~]# ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 01:04 TIME_WAIT 192.168.200.1:56457 192.168.200.170:80 192.168.100.162:80
TCP 01:04 TIME_WAIT 192.168.200.1:56455 192.168.200.170:80 192.168.100.163:80
TCP 01:02 TIME_WAIT 192.168.200.1:56453 192.168.200.170:80 192.168.100.162:80
TCP 01:05 TIME_WAIT 192.168.200.1:56458 192.168.200.170:80 192.168.100.163:80
到这里NAT模式就配置结束了