【LVS】nat模式+dr模式+防火墙标签解决轮询错误

++集群:++同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据 和代码都是一样的

++分布式:++ 一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数
来提升效率。
对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器
完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决
定由给哪一台去完成响应,并且台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,
都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败 。

一.LVS--负载调度器

  • VS: Virtual Server ,负责调度
  • RS:RealServer,负责真正提供服务

lvs概念
VS : Virtual Server
RS : Real Server
CIP : Client IP
VIP: Virtual serve IP VS 外网的 IP
DIP: Director IP VS 内网的 IP
RIP: Real server IP
访问流程:CIP <--> VIP == DIP <--> RIP
lvs****集群的类型
lvs-nat :
修改请求报文的目标 IP, 多目标 IP 的 DNAT
lvs-dr : 操纵封装新的 MAC 地址
lvs-tun :
在原请求 IP 报文之外新加一个 IP 首部
lvs-fullnat : 修改请求报文的源和目标 IP


案例:NAT模式

图形:

四台服务器都是采用的rhel9

webserver1//rs1

仅主机模式

准备环境:

安装软件编写html


webserver2//rs2

仅主机模式

准备环境:

安装软件编写html


lvs配置

2块网卡:/nat/仅主机

准备环境:

内核路由功能配置

#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#sysctl -p   #生效
net.ipv4.ip_forward=1

下载软件

后端调用主机

测试rs:

在lvs虚拟机上ping并且访问他的内容


客户机:172.25.254.200

总的测试:



案例:DR模式

图形:

lvs webserver1 webserver2处于同一个vlan里面都是仅主机模式

client route 处于同一个vlan里面都是nat模式

解决 vip 响应问题
DR 模型中各主机上均需要配置 VIP ,解决地址冲突的方式有三种:
(1) 在前端网关做静态绑定
(2) 在各 RS 使用 arptables
(3) 在各 RS 修改内核参数,来限制 arp 响应和通告的级别
限制响应级别 :arp_ignore
0: 默认值,表示可使用本地任意接口上配置的任意地址进行响应
1: 仅在请求的目标 IP 配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别 :arp_announce
0: 默认值,把本机所有接口的所有信息向每个接口的网络进行通告
1: 尽量避免将接口信息向非直接连接网络进行通告
2: 必须避免将接口信息向非本网络进行通告

rs主机1

仅主机模式

准备环境:

安装软件编写html

静态绑定:

检查:

添加vip


rs主机2

仅主机模式

准备环境:

安装软件编写html

静态绑定:

检查:

添加vip


路由器route

2块网卡:/nat/仅主机

准备环境

内核路由功能配置

#vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#sysctl -p   #生效
net.ipv4.ip_forward=1

lvs配置

仅主机模式

准备环境

添加vip

在lvs虚拟机上ping并且访问他的内容

后端调动rs1和rs2


客户端

nat模式

准备环境

测试:



案例:防火墙标签解决轮询错误

以http和https为例,当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题
当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上

在RS1和RS2中安装mod_ssl并重启apache
]# yum install mod_ssl -y
]# systemctl restart httpd
在lvs中设置调度,因为我们要调度80和443两个端口所以我们需要设定两组策略
]# ipvsadm -C
[root@lvs ~]# ipvsadm -A -t 192.168.0.100:80 -s rr
[root@lvs ~]# ipvsadm -A -t 192.168.0.100:443 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.102:80 -g
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.101:80 -g
[root@lvs ~]# 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.0.100:80 rr
-> 192.168.0.101:80 Route 1 0 0
-> 192.168.0.102:80 Route 1 0 0
TCP 192.168.0.100:443 rr
-> 192.168.0.101:443 Route 1 0 0
-> 192.168.0.102:443 Route 1 0 0
测试问题
[root@node10 ~]# curl http://192.168.0.100;curl -k https://192.168.0.100
RS1 server - 192.168.0.101
RS1 server - 192.168.0.101
当访问vip时两次调度都到了

为了解决此问题:
以下实验将会实现以下功能
环境准备(以上即可)
RS1和RS2

  • 安装mod_ssl模块让rs支持https

重启httpd

查看端口

在lvs进行多端口标记

多端口自动识别

在客户端client

测试

相关推荐
我叫啥都行几秒前
计算机基础知识复习9.7
运维·服务器·网络·笔记·后端
XF鸭13 分钟前
TCP 和 UDP 协议的区别?
linux
qq 1778036221 小时前
智能新时代,游戏盾守护顺畅体验
运维·服务器·网络·游戏·云计算·ddos·ip
Flying_Fish_roe2 小时前
linux-安全管理-防火墙与网络安全
linux·数据库·oracle
不见长安见晨雾2 小时前
Linux:vim编辑技巧
linux·编辑器·vim
神秘的土鸡2 小时前
Linux中使用Docker容器构建Tomcat容器完整教程
linux·运维·服务器·docker·容器·tomcat
shuxianshrng2 小时前
大气网格化精细化监管监测系统
大数据·服务器·windows·经验分享
friklogff3 小时前
【C#生态园】构建你的C#操作系统:框架选择与实践
服务器·开发语言·c#
TravisBytes3 小时前
linux 系统是如何收发数据包
linux·运维·服务器
平头哥在等你4 小时前
《计算机网络名词解释》
服务器·网络·计算机网络