LVS负载均衡群集——NAT地址转换模式实战(可跟做!)
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,负载均衡群集(Load Balance Cluster)以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能LB的负载分配依赖于主节点的分流算法群集
千家信息网最后更新 2025年01月22日LVS负载均衡群集——NAT地址转换模式实战(可跟做!)
负载均衡群集(Load Balance Cluster)
以提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能LB的负载分配依赖于主节点的分流算法
群集的负载调度技术有三种工作模式
- 地址转换(本文只介绍NAT模式)
- IP隧道
- 直接路由
NAT模式
地址转换 (Network AddressTranslation)
- 简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
- 服务器节点使用私有IP地址,与负载调度器位于同一一个物理网络,安全性要优于其他两种方式
负载均衡群集架构
负载均衡的结构
- 第一层,负载调度器(Load Balancer或Director)
- 第二层,服务器池(Server Pool)
- 第三层,共享存储(Share Storage)
LVS的负载调度算法
轮询(Round Robin)
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器)均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
加权轮询(Weighted Round Robin)
- 根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重
- 保证处理能力强的服务器承担更多的访问流量
最少连接(Least Connections)
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
加权最少连接(Weighted Least Connections)
- 在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重
- 权重较高的节点将承担更大比例的活动连接负载
实验操作
实验环境
调度服务器(centos7): 外(ens36):12.0.0.1 内(ens33):192.168.200.1web服务器1(centos7):192.168.200.110web服务器2(centos7):192.168.200.120存储服务器(centos7):192.168.200.130client客户端(win10):12.0.0.12
1、验证存储服务器是否安装相关服务
[root@localhost ~]# rpm -q nfs-utilsnfs-utils-1.3.0-0.48.el7.x86_64 #已安装[root@localhost ~]# rpm -q rpcbindrpcbind-0.2.0-42.el7.x86_64 #已安装[root@localhost ~]#
2、分别验证两台web服务器是否安装httpd服务,若没有,则安装
第一台:[root@localhost ~]# rpm -q httpd未安装软件包 httpd [root@localhost ~]# yum install httpd -y.................//省略安装过程[root@localhost ~]#第二台:[root@localhost ~]# rpm -q httpd未安装软件包 httpd [root@localhost ~]# yum install httpd -y.................//省略安装过程[root@localhost ~]#
3、验证调度服务器是否有管理工具,若没有,则安装
[root@localhost ~]# rpm -q ipvsadm未安装软件包 ipvsadm [root@localhost ~]# yum install ipvsadm -y.................//省略安装过程[root@localhost ~]#
一、配置调度服务器
1、将配置服务器的网络模式改为仅主机
2、配置存储服务器,固定IP地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static #dhcp改为staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=09073596-a7cf-404c-a098-28c3ff58c44bDEVICE=ens33ONBOOT=yesIPADDR=192.168.200.130 #IP地址NETMASK=255.255.255.0 #子网掩码GATEWAY=192.168.200.1 #网关[root@localhost ~]# systemctl restart network #重启网络服务[root@localhost ~]# ifconfig #查看网卡信息,ip设置成功ens33: flags=4163 mtu 1500 inet 192.168.200.130 netmask 255.255.255.0 broadcast 192.168.200.255 inet6 fe80::5134:22f5:842b:5201 prefixlen 64 scopeid 0x20 ether 00:0c:29:0d:f1:75 txqueuelen 1000 (Ethernet) RX packets 818 bytes 69866 (68.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 319 bytes 44103 (43.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3、关闭防火墙,开启存储共享服务
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙[root@localhost ~]# setenforce 0 #关闭增强性安全功能[root@localhost ~]# [root@localhost ~]# systemctl start nfs.service #开启nfs服务[root@localhost ~]# systemctl start rpcbind #开启rpcbind服务[root@localhost ~]#
4、修改配置文件/etc/exports
[root@localhost ~]# vim /etc/exports/usr/share *(ro,sync) #共享目录给所有用户,权限制度/opt/abc/ 192.168.200.0/24(rw,sync) #共享目录到固定网段用户,权限读写/opt/xyz/ 192.168.200.0/24(rw,sync) #共享目录到固定网段用户,权限读写
5、创建共享目录,并授予权限
[root@localhost ~]# cd /opt/[root@localhost opt]# lsrh[root@localhost opt]# mkdir abc xyz #创建目录[root@localhost opt]# ll总用量 0drwxr-xr-x. 2 root root 6 11月 26 17:33 abcdrwxr-xr-x. 2 root root 6 3月 26 2015 rhdrwxr-xr-x. 2 root root 6 11月 26 17:33 xyz[root@localhost opt]# chmod 777 abc xyz #授权[root@localhost opt]# ll总用量 0drwxrwxrwx. 2 root root 6 11月 26 17:33 abcdrwxr-xr-x. 2 root root 6 3月 26 2015 rhdrwxrwxrwx. 2 root root 6 11月 26 17:33 xyz[root@localhost opt]#
6、重新加载配置
[root@localhost opt]# exportfs -rvexporting 192.168.200.0/24:/opt/xyzexporting 192.168.200.0/24:/opt/abcexporting *:/usr/share[root@localhost opt]#
二、web服务器1的配置
1、修改web服务器1的网络模式为仅主机
2、配置固定IP地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static #dhcp改为staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=3ceed540-b04c-48d6-a4f7-79951f09ea1dDEVICE=ens33ONBOOT=yesIPADDR=192.168.200.110 #IP地址NETMASK=255.255.255.0 #子网掩码GATEWAY=192.168.200.1 #网关[root@localhost ~]# systemctl restart network #重启网络服务[root@localhost ~]# ifconfig #查看网卡信息,ip设置成功ens33: flags=4163 mtu 1500 inet 192.168.200.110 netmask 255.255.255.0 broadcast 192.168.200.255 inet6 fe80::3e1d:31ba:f66a:6f80 prefixlen 64 scopeid 0x20 ether 00:0c:29:27:1c:3f txqueuelen 1000 (Ethernet) RX packets 12581 bytes 15759224 (15.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6118 bytes 501343 (489.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3、关闭防火墙,并开启http服务
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙[root@localhost ~]# setenforce 0 #关闭增强性安全功能 [root@localhost ~]# systemctl start httpd.service #开启http服务[root@localhost ~]# netstat -ntap | grep 80 #查看端口tcp6 0 0 :::80 :::* LISTEN 50076/httpd [root@localhost ~]#
4、查看NFS服务共享信息
[root@localhost ~]# showmount -e 192.168.200.130Export list for 192.168.200.130:/usr/share */opt/xyz 192.168.200.0/24/opt/abc 192.168.200.0/24[root@localhost ~]#
5、挂载NFS的共享目录,并查看是否挂载成功
[root@localhost ~]# mount.nfs 192.168.200.130:/opt/abc /var/www/html/ #挂载[root@localhost ~]# df -h #查看挂载信息文件系统 容量 已用 可用 已用% 挂载点/dev/sda2 20G 3.4G 17G 17% /devtmpfs 898M 0 898M 0% /devtmpfs 912M 0 912M 0% /dev/shmtmpfs 912M 18M 895M 2% /runtmpfs 912M 0 912M 0% /sys/fs/cgroup/dev/sda5 10G 37M 10G 1% /home/dev/sda1 6.0G 174M 5.9G 3% /boottmpfs 183M 4.0K 183M 1% /run/user/42tmpfs 183M 40K 183M 1% /run/user/0192.168.200.130:/opt/abc 20G 3.3G 17G 17% /var/www/html #挂载成功[root@localhost ~]#
6、在挂载目录创建首页文件,并在存储服务器,查看是否创建文件成功
web服务器1:[root@localhost ~]# echo "this is abc web" > /var/www/html/index.html #创建首页文件[root@localhost ~]# 存储服务器:[root@localhost opt]# cd abc/[root@localhost abc]# lsindex.html #创建成功[root@localhost abc]#
三、web服务器2的配置
1、修改web服务器2的网络模式为仅主机
2、配置固定IP地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static #将dhcp改为staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=8ecd53ce-afdb-46f8-b7ff-b2f428a3bc8fDEVICE=ens33ONBOOT=yesIPADDR=192.168.200.120 #IP地址NETMASK=255.255.255.0 #子网掩码GATEWAY=192.168.200.1 #网关[root@localhost ~]# systemctl restart network #重启网络服务[root@localhost ~]# ifconfig #查看网卡信息,ip设置成功ens33: flags=4163 mtu 1500 inet 192.168.200.120 netmask 255.255.255.0 broadcast 192.168.200.255 inet6 fe80::c776:9d00:618:88f2 prefixlen 64 scopeid 0x20 ether 00:0c:29:eb:34:07 txqueuelen 1000 (Ethernet) RX packets 13713 bytes 15997026 (15.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5590 bytes 452930 (442.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3、关闭防火墙,并开启http服务
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙[root@localhost ~]# setenforce 0 #关闭增强性安全功能 [root@localhost ~]# systemctl start httpd.service #开启http服务[root@localhost ~]# netstat -ntap | grep 80 #查看端口tcp6 0 0 :::80 :::* LISTEN 50572/httpd [root@localhost ~]#
4、查看NFS服务共享信息
[root@localhost ~]# showmount -e 192.168.200.130Export list for 192.168.200.130:/usr/share */opt/xyz 192.168.200.0/24/opt/abc 192.168.200.0/24[root@localhost ~]#
5、挂载NFS的共享目录,并查看是否挂载成功
[root@localhost ~]# mount.nfs 192.168.200.130:/opt/xyz /var/www/html/ #挂载[root@localhost ~]# df -h #查看挂载信息文件系统 容量 已用 可用 已用% 挂载点/dev/sda2 20G 3.4G 17G 17% /devtmpfs 898M 0 898M 0% /devtmpfs 912M 0 912M 0% /dev/shmtmpfs 912M 18M 895M 2% /runtmpfs 912M 0 912M 0% /sys/fs/cgroup/dev/sda5 10G 37M 10G 1% /home/dev/sda1 6.0G 174M 5.9G 3% /boottmpfs 183M 4.0K 183M 1% /run/user/42tmpfs 183M 40K 183M 1% /run/user/0192.168.200.130:/opt/xyz 20G 3.3G 17G 17% /var/www/html #挂载成功[root@localhost ~]#
6、在挂载目录创建首页文件,并在存储服务器,查看是否创建文件成功
web服务器2:[root@localhost ~]# echo "this is xyz web" > /var/www/html/index.html #创建首页文件[root@localhost ~]# 存储服务器:[root@localhost abc]# cd ../xyz/[root@localhost xyz]# lsindex.html #创建成功[root@localhost xyz]#
四、调度服务器的配置
1、给调度服务器添加一块网卡,把两个网卡的网络模式都改为仅主机
2、修改ens33网卡配置文件,设置固定IP
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static #将dhcp改为staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=c96bc909-188e-ec64-3a96-6a90982b08adDEVICE=ens33ONBOOT=yesIPADDR=192.168.200.1 #IP地址NETMASK=255.255.255.0 #子网掩码
3、修改ens36网卡配置文件,设置固定IP
[root@localhost ~]# cd /etc/sysconfig/network-scripts/[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36 #复制一份ens33的配置文件作为ens36配置文件[root@localhost network-scripts]# vim ifcfg-ens36TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static #将dhcp改为staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens36 #ens33改为ens36,并删除UUIDDEVICE=ens36 #ens33改为ens36ONBOOT=yesIPADDR=12.0.0.1 #IP地址NETMASK=255.255.255.0 #子网掩码
4、重启网络服务,检查IP配置是否成功
[root@localhost network-scripts]# systemctl restart network #重启网络服务[root@localhost network-scripts]# ifconfig #查看网卡信息ens33: flags=4163 mtu 1500 inet 192.168.200.1 netmask 255.255.255.0 broadcast 192.168.200.255 inet6 fe80::28ad:c7f1:25e8:8708 prefixlen 64 scopeid 0x20 ether 00:0c:29:95:9b:1b txqueuelen 1000 (Ethernet) RX packets 11757 bytes 12899133 (12.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4731 bytes 325771 (318.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens36: flags=4163 mtu 1500 inet 12.0.0.1 netmask 255.255.255.0 broadcast 12.0.0.255 inet6 fe80::10ce:358b:94ed:c4e9 prefixlen 64 scopeid 0x20 ether 00:0c:29:95:9b:25 txqueuelen 1000 (Ethernet) RX packets 130 bytes 10117 (9.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 178 bytes 30232 (29.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
5、修改配置文件/etc/sysctl.conf
[root@localhost ~]# vim /etc/sysctl.conf net.ipv4.ip_forward=1 #开启路由功能[root@localhost ~]# sysctl -p #重新加载/etc/sysctl.conf中配置net.ipv4.ip_forward = 1[root@localhost ~]#
6、配置NAT转换
[root@localhost ~]# iptables -t nat -F #清除nat缓存[root@localhost ~]# iptables -F #清除规则[root@localhost ~]# iptables -t nat -A POSTROUTING -o ens36 -s 192.168.200.0/24 -j SNAT --to-source 12.0.0.1#配置NAT转换[root@localhost ~]#
7、开启ipvsadm服务
[root@localhost ~]# modprobe ip_vs #启动模块[root@localhost ~]# cat /proc/net/ip_vs #查看服务信息IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn[root@localhost ~]# ipvsadm --save > /etc/sysconfig/ipvsadm #保存服务配置[root@localhost ~]# systemctl start ipvsadm.service #开启服务[root@localhost ~]#
8、添加ipvsadm服务脚本,并执行
[root@localhost ~]# cd /opt/ #切换目录[root@localhost opt]# vim nat.sh #编辑脚本#!/bin/bashipvsadm -C #清除内核虚拟服务器表中的所有记录ipvsadm -A -t 12.0.0.1:80 -s rr #增加一台新的虚拟服务器ipvsadm -a -t 12.0.0.1:80 -r 192.168.200.110:80 -m #在虚拟服务器中增加一台新的真实服务器。ipvsadm -a -t 12.0.0.1:80 -r 192.168.200.120:80 -m #在虚拟服务器中增加一台新的真实服务器。ipvsadm #开启服务[root@localhost opt]# source nat.sh #执行脚本IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP localhost.localdomain:http rr -> 192.168.200.110:http Masq 1 0 0 -> 192.168.200.120:http Masq 1 0 0 [root@localhost opt]# ipvsadm相关可选项含义:-A:在内核的虚拟服务器列表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。虚拟服务器地址由三元组唯一定义:IP地址,端口号和协议。虚拟服务器也可以由防火墙标记定义。-C:清除内核虚拟服务器表中的所有记录。-a:在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器。-t:说明虚拟服务器提供的是tcp 的服务。-s:将TCP连接和UDP数据报分配给真实服务器的算法。-m:使用伪装(网络访问转换或NAT)。rr:轮询,调度器通过"轮询"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。wrr:加权轮询,调度器通过"加权轮询"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。lc:最少连接,当有新的作业到达时,调度器选择一个当前作业量较少的真实服务器,并把新到达的作业分配给它。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。wlc:加权最小连接,将更多的作业分配给作业较少且相对于权重较高(Ci / Wi)的服务器。这是默认值。
五、测试负载均衡群集NAT模式
1、修改win10主机网络模式为仅主机
2、修改win10主机IP地址
3、关闭win10主机防火墙
4、用win10主机访问IP地址:12.0.0.1
5、再次刷新浏览器,由于采用轮询算法,页面转到另一个主页
服务
服务器
配置
调度
地址
文件
网络
成功
模式
目录
主机
信息
防火墙
存储
防火
网卡
节点
分配
系统
加一
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
凯佳盛特网络安全
服务器bios 远程管理
软件开发考研可以考哪些专业
网关管理服务器
网络安全存储产品
数据库线性结构
河北联智创意网络技术项目
软件开发男人很忙
数据库处理与应用ppt
视频聊天软件开发哪家产品好
服务器哪个版本最好
远程公司服务器怕开端口不安全
app服务器要求
滨州进销存库存软件开发公司
巴彦淖尔精益管理软件开发
企业服务器故障怎么解决
周易八卦数据库大全
万仁国网络安全专家
奥比岛服务器
流动人口数据库
无锡软件开发培训哪家好
iis7服务器管理ftp
腾讯云服务器登陆地址
媒体服务器怎么装系统
河北领端互联网络科技
年终述职报告 互软件开发
网络安全市场需求分析
用impdp还原数据库步骤
数据库技术及应用电子书
我的世界服务器默认组