LVS负载均衡集群企业级应用实战-LVS/NAT模式(三)

目录

LVS/NAT模式

[一. 环境准备](#一. 环境准备)

[二. 对虚拟服务器操作](#二. 对虚拟服务器操作)

[三. 对真实服务器操作](#三. 对真实服务器操作)

[四. 打开网站验证](#四. 打开网站验证)


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的比例。推荐使用浏览器的无痕模式打开。

相关推荐
枫叶丹44 小时前
【在Linux世界中追寻伟大的One Piece】进程信号
linux·运维·服务器
灯火不休ᝰ5 小时前
[win7] win7系统的下载及在虚拟机中详细安装过程(附有下载文件)
linux·运维·服务器
数云界7 小时前
如何在 DAX 中计算多个周期的移动平均线
java·服务器·前端
叫我龙翔10 小时前
【Linux】进程间关系与守护进程
linux·运维·服务器·计算机网络
S hh10 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习
萧鼎11 小时前
Python调试技巧:高效定位与修复问题
服务器·开发语言·python
GodK77711 小时前
IP 数据包分包组包
服务器·网络·tcp/ip
梁诚斌12 小时前
VSOMEIP代码阅读整理(1) - 网卡状态监听
运维·服务器·网络
深情废杨杨12 小时前
服务器几核几G几M是什么意思?如何选择?
运维·服务器
康熙38bdc12 小时前
Linux 进程优先级
linux·运维·服务器