LVS负载分担(NAT模式)基础搭建
2020-06-01 16:00:59来源:博客园 阅读 ()
LVS负载分担(NAT模式)基础搭建
1、NAT模式拓扑及工作原理
在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系统(如NFS)共享,也 可以通过一个分布式文件系统来提供。
客户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达调度器,调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址 Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。同时,调度器在连接Hash 表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务器。当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口,再把报文发给用户。我们在连接上引入一个状态机,不同的报文会使得连接处于不同的状态,不同的状态有不同的超时值。在TCP 连接中,根据标准的TCP有限状态机进行状态迁移;在UDP中,我们只设置一个UDP状态。不同状态的超时值是可以设置的,在缺省情况下,SYN状态的超 时为1分钟,ESTABLISHED状态的超时为15分钟,FIN状态的超时为1分钟;UDP状态的超时为5分钟。当连接终止或超时,调度器将这个连接从 连接Hash表中删除。
这样,客户所看到的只是在Virtual IP Address上提供的服务,而服务器集群的结构对用户是透明的。对改写后的报文,应用增量调整Checksum的算法调整TCP Checksum的值,避免了扫描整个报文来计算Checksum的开销。
2、调度算法种类
轮叫(Round Robin)
加权轮叫(Weighted Round Robin)
最少链接(Least Connections)
加权最少链接(Weighted Least Connections)
基于局部性的最少链接(Locality-Based Least Connections)
带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
目标地址散列(Destination Hashing )
源地址散列(Source Hashing)
最短期望延迟(Shortest Expected Delay)
无须队列等待(Never Queue)
3、案例实施
实验目的:
所有客户端访问IP地址为202.103.106.5端口为80的流量都被负载均衡地调度的真实服务器 172.16.0.2:80和172.16.0.3:80上
轮叫(Round Robin),轮询算法,第一个给2,第二个给3,第三个给2,第四个给3
本次试验机器:Centos Linux 8.1.1911
1、地址配置(先安装软件)
172.16.0.0/24 所在网卡为仅主机;
202.103.106.0/24 所在网卡为NAT;
调度器需要双网卡。
注意:real server NAT模式下,网关需指向调度器内部地址,也就是图中的172.16.0.1。
2、关闭防火墙及selinux
各虚拟机都执行,真实环境需要真实对待,做实验的话就都关闭。
vim /etc/selinux/config
修改SELINUX=permissive
setenforce 0
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
3、时钟同步
所有real server 同步调度器的时间。
配置参考
Chronyd同步时间(Server/Client)配置
4、软件安装
查看内核模块
modprobe ip_vs
lsmod | grep ip_vs
安装管理工具
yum install ipvsadm
real server 安装httpd服务
real server 1
[root@node1 ~]# echo "this is real server node1" >> /var/www/html/index.html [root@node1 ~]# systemctl start httpd [root@node1 ~]# systemctl enable httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. [root@node1 ~]#
real server 2
[root@node2 ~]# echo "this is real server node2" >> /etc/httpd/index.html [root@node2 ~]# systemctl start httpd [root@node2 ~]# systemctl enable httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. [root@node2 ~]#
4、配置调度器
查看帮助
man ipvsadm
SYNOPSIS ipvsadm -A|E virtual-service [-s scheduler] [-p [timeout]] [-M netmask] [-b sched-flags] ipvsadm -D virtual-service ipvsadm -C ipvsadm -R ipvsadm -S [-n] ipvsadm -a|e virtual-service -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower] ipvsadm -d virtual-service -r server-address ipvsadm -L|l [virtual-service] [options] ipvsadm -Z [virtual-service] ipvsadm --set tcp tcpfin udp ipvsadm --start-daemon state [daemon-options] [--syncid syncid] ipvsadm --stop-daemon state ipvsadm -h
这个在添加和修改时少一个参数 ,老版本有噢。
-t|u|f
-t: TCP协议
-u: UDP协议
添加一个集群服务
ipvsadm -A -t 202.103.106.5:80 -s rr
添加real server
ipvsadm -a -t 202.103.106.5:80 -r 172.16.0.2:80 -m
ipvsadm -a -t 202.103.106.5:80 -r 172.16.0.3:80 -m
查看
[root@filesystem ~]# ipvsadm -l -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 202.103.106.5:80 rr -> 172.16.0.2:80 Masq 1 0 0 -> 172.16.0.3:80 Masq 1 0 0 [root@filesystem ~]#
规则保存
[root@filesystem ~]# ipvsadm-save > /root/ipvsadm.bak [root@filesystem ~]# cat ipvsadm.bak -A -t filesystem.server.com:http -s rr -a -t filesystem.server.com:http -r 172.16.0.2:http -m -w 1 -a -t filesystem.server.com:http -r 172.16.0.3:http -m -w 1 [root@filesystem ~]#
规则导入
[root@filesystem ~]# ipvsadm -C # -C 是清空规则的意思 [root@filesystem ~]# ipvsadm -R < ipvsadm.bak [root@filesystem ~]# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP filesystem:http rr -> 172.16.0.2:http Masq 1 0 0 -> 172.16.0.3:http Masq 1 0 0 [root@filesystem ~]#
5、测试
从图中我们可以看到,访问我们的调度器(也就是对外提供服务的地址,在内部真实服务器上来回切换。实现负载分担)
这样,客户认为是从202.103.106.5:80服务得到正确的响应,而不会知道该请求是服务器172.16.0.2还是服务器172.16.0.3处理的。
读书和健身总有一个在路上
原文链接:https://www.cnblogs.com/Renqy/p/13025624.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:CentOS7修改主机名
- keepalived 实现LVS负载均衡高可用集群(一) 2020-06-04
- 负载均衡服务之HAProxy https配置、四层负载均衡以及访问控 2020-05-03
- 负载均衡服务之HAProxy访问控制ACL 2020-05-02
- 负载均衡服务之HAProxy基础配置(五) 2020-04-29
- 负载均衡服务之HAProxy基础配置(三) 2020-04-26
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash