目录
[一. 环境准备](#一. 环境准备)
[二. 对虚拟服务器操作](#二. 对虚拟服务器操作)
[三. 对真实服务器操作](#三. 对真实服务器操作)
[四. 打开网站验证](#四. 打开网站验证)
LVS/NAT模式
一. 环境准备
统一关闭防火墙和selinux,时间同步,配置好YUM源系统发行版选择会用就可以,这里也是两种一起使用学习。用的不同系统没影响,原理一样,都用centos7也可以。
|-----------|---------------------------------------|-------|-------------|-----------|
| 主机名 | 主机IP | 模拟服务器 | 系统 | 用途 |
| localhost | VIP:10.36.178.156 DIP:192.168.226.137 | 虚拟服务器 | Rocky_linux | 负载均衡机分发IP |
| localhost | 192.168.226.99 | 真实服务器 | Centos7 | 后端服务 |
| localhost | 192.168.226.10 | 真实服务器 | Rocky_linux | 后端服务 |
| localhost | 10.36.178.56 | 客户端 | windows10 | 当成客户访问 |
二. 对虚拟服务器操作
注意:这里是对虚拟服务器,对应好别操作错主机
在设置中添加一块网卡,一个使用桥接模式,一个使用NAT模式,然后打开虚拟机。
查看ip,有两个不同网段IP就成功了。
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:d9:a7:1d brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 10.36.178.156/24 brd 10.36.178.255 scope global dynamic noprefixroute ens33
valid_lft 347sec preferred_lft 347sec
inet6 fe80::27d2:b5dd:fed:2361/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:d9:a7:27 brd ff:ff:ff:ff:ff:ff
altname enp2s5
inet 192.168.226.137/24 brd 192.168.226.255 scope global dynamic noprefixroute ens37
valid_lft 929sec preferred_lft 929sec
inet6 fe80::553c:db7a:2d1b:33c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
下载ipvsadm
bash
yum install -y ipvsadm
添加虚拟服务器和真实服务器,并设置一台权重为3,一台为1,权重设置无分别,然后保存规则
bash
ipvsadm -A -t 10.36.178.156:80 -s wrr
ipvsadm -a -t 10.36.178.156:80 -r 192.168.226.10:80 -m -w 3
ipvsadm -a -t 10.36.178.156:80 -r 192.168.226.99:80 -m -w 1
ipvsadm-save > /etc/sysconfig/ipvsadm
启动服务并设置开机自启
bash
systemctl enable --now ipvsadm
三. 对真实服务器操作
对192.168.226.10和192.168.226.99都操作
下载nginx
bash
yum install -y nginx
修改内容和配置
bash
vim /etc/nginx/nginxconf +27
#这个参数设置为keepalive_timeout 0; 把参数改成0即可
bash
修改默认打开的网站用来识别来自哪个服务器
对192.168.226.10执行
echo "web-server111111" > /usr/share/nginx/html/index.html
对192.168.226.99执行
echo "web-server222222" > /usr/share/nginx/html/index.html
开启服务并设置开机自启
bash
systemctl start nginx
systemctl enable nginx
配置默认路由,这个IP就是虚拟主机中另一个nat模式的IP,这个IP要和真实服务器在同一个网段,这样才可以通信。
bash
ip route add default via 192.168.226.137
开启路由转发
bash
vim /etc/sysctl.conf
#加入如下内容
net.ipv4.ip_forward = 1
确保打开路由转发,加载sysctl.conf配置
bash
sysctl -p
查看路由表,发现下面有刚添加的信息就表示成功了。
bash
[root@localhost ~]# ip r
default via 192.168.226.137 dev ens33
default via 192.168.226.2 dev ens33 proto static metric 100
192.168.226.0/24 dev ens33 proto kernel scope link src 192.168.226.10 metric 100
使用ip r命令查看到如上有一192.168.226.137的信息。
四. 打开网站验证
打开IP应该用虚拟服务器IP ,用10.36.178.156 多次刷新网页访问。使用命令查看信息
bash
#在10.36.178.156的虚拟服务器上执行查看
ipvsadm -L -n --stats
bash
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 10.36.178.156:80 4 77 49 18529 7538
-> 192.168.226.10:80 3 59 37 14582 5367
-> 192.168.226.99:80 1 18 12 3947 2171
因为前面我们添加虚拟服务器是,给虚拟服务器IP执行的是wrr加权轮询,然后给192.168.226.10设置的权重为3,192.168.226.99设置的权重为1,然后都配置了nginx连接的超时时间,因此当多次访问,对这两台真实服务器的流量权重分配会大约在3:1的比例。推荐使用浏览器的无痕模式打开。