【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模式

准备环境

测试:



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

httphttps为例,当我们在RS中同时开放80443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题
当我第一次访问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

测试

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xialliy

你的鼓励是我最大的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值