LVS 负载均衡

发布于:2024-08-09 ⋅ 阅读:(75) ⋅ 点赞:(0)

目录

LVS 体系结构

LVS 相关概念术语

 lvs 集群常见类型

实验一: 

LVS NAT模式

LVS NAT特性

实验二: 

LVS DR模式

 LVS DR特性


LVS是Linux virtual server的缩写,是一个高性能的、开源的负载均衡器,它运行于Linux操作系统之上,用于将网络请求分发给后端服务器集群中的服务器。

LVS简单工作原理为用户请求LVS VIP,LVS根据转发方式和算法,将请求转发给后端服务器,后端服务器接收到请求,返回给用户。

LVS 体系结构

LVS架构主要由三个部分组成:

1)负载均衡层:位于整个集群系统的最前端,由一台或多台负载调度器(Director Server)组成,LVS模块就安装在调度器上。

2)服务器群组层:由一组实际运行的应用服务器(Real Server)组成,可以是web服务器、mail服务器、DNS服务器、FTP服务器等。

3)数据共享存储层:为所有Real Server提供共享存储空间和内容一致性的存储区域,一般通过NFS网络文件系统或集群文件系统实现。

LVS 相关概念术语

  1. VS: Virtual Server。负责调度。
  2. RS:Real Server。后端真实的工作服务器,负责真正提供服务。
  3. DS(Director Server):指的是前端负载均衡器节点,调度服务器,将负载分发到Real Server的服务器上。
  4. VIP:Virtual IP。虚拟 IP,向外部直接面向用户请求,作为用户请求的目标的IP地址。[ VS外网的IP ]
  5. DIP:Director IP Address。Director连接到Real Server的IP地址。主要用于和内部主机通讯。[ VS内网的IP ]
  6. RIP:Real IP Address。真实IP地址,(后端服务器)集群节点上使用的IP地址。
  7. CIP:Client IP。客户端的IP地址。

访问流程:CIP VIP == DIP RIP  

 lvs 集群常见类型

按转发方式划分:

LVS-NAT(网络地址转换):LVS将请求报文中的目标地址和目标端口修改为选定到的真实服务器的IP和端口,从而实现报文的转发。

LVS-DR(直接路由):也称为Direct Routing,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。

LVS-TUN(隧道):不修改请求报文的IP首部,而在源IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标Real Server,Real Server直接响应给客户端(源IP是VIP,目标IP是CIP)。

LVS-FULLNAT:通过同时修改请求报文的源IP地址和目标IP地址进行转发。


实验一: 

LVS NAT模式

NAT 模式双向流量都经过 LVS。 

LVS NAT特性
  • VIP和RIP不需要在同一个网段内;
  • NAT的包的进出都需要经过LVS,所以LVS可能会成为一个系统的瓶颈问题。

-----------------------------------------------------------

lvs:设置两个网卡:eth0  172.25.254.100/24  NAT    eth1  192.168.0.100/24  仅主机

webserver1: eth0  192.168.0.10/24   仅主机模式

webserver2 :eth0  192.168.0.20/24   仅主机模式

lvs:调度器

systemctl disable --now firewalld.service

vim /etc/sysctl.conf     ##配置内核参数:net.ipv4.ip_forward = 1  启用IP转发
sysctl -p   ##应用更改

yum install httpd -y

yum install ipvsadm -y   ##安装工具包

:ipvsadm 是一个用于管理 Linux 虚拟服务器(IPVS)的工具,它允许系统管理员设置和管理负载均衡器。

ipvsadm -A -t 172.25.254.100:80 -s rr   ##添加虚拟服务

ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m   ##添加后端服务器

ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m

ipvsadm -Ln   ##列出 Linux 虚拟服务器(IPVS)表中当前配置

systemctl restart httpd

webserver1: #webserver2类似

systemctl disable --now firewalld

yum install httpd -y

echo webserver1-192.168.0.10 >/var/www/html/index.html  

systemctl restart httpd 

 在lvs上测试:

curl 192.168.0.10

curl 192.168.0.20

实验二: 

LVS DR模式

DR 模式 LVS 逻辑比较简单,数据包通过直接路由方式转发给后端服务器,而且响应数据包是由 RS 服务器直接发送给客户端,不经过 LVS。

 LVS DR特性
  • 前端路由将目标地址为VIP报文统统发给Director Server;
  • RS跟Director Server必须有一个网卡在同一个物理网络中;
  • 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server;
  • 所有的real server机器上都有VIP地址。

-----------------------------------------------------------

router:路由器

NAT模式:172.25.254.100/24       仅主机模式:192.168.0100/24

systemctl disable --now firewalld.service

vim /etc/NetworkManager/system-connections/eth0.connection

vim /etc/NetworkManager/system-connections/eth1.connection

nmcli connection reload

nmcli connection up eth0

nmcli connection up eth1

vim /etc/sysctl.conf

sysctl -p

webserver1:web服务器1 

仅主机:ip:192.168.0.10;gateway:192.168.0.100

systemctl disable --now firewalld.service

vim /etc/NetworkManager/system-connections/eth0.connection

nmcli connection reload

nmcli connection up eth0

route -n

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

【arp_ignore 和 arp_announce 是与ARP(地址解析协议)相关的内核参数】

ip addr a 192.168.0.200/32 dev lo

nmcli connection reload

webserver1 和 webserver2 解决响应问题:

webserver2:web服务器2

仅主机:ip:192.168.0.20;gateway:192.168.0.100

systemctl disable --now firewalld.service

vim /etc/NetworkManager/system-connections/eth0.connection

nmcli connection reload

nmcli connection up eth0

route -n

##解决响应问题

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

ip addr a 192.168.0.200/32 dev lo   ##将IP地址添加到回环接口

nmcli connection reload

lvs:调度器

仅主机:ip:192.168.0.50/24;lo:192.168.0.200/32

systemctl disable --now firewalld.service

vim /etc/sysconfig/network-scripts/ifcfg-eth1  #lvs环境我用的RedHat7版本

nmcli connection reload

nmcli connection up eth1

ip addr a 192.168.0.200/32 dev lo

nmcli connection reload

ipvsadm -A -t 192.168.0.200:80 -s wrr

ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2

ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1

systemctl restart httpd

 client:测试主机

NAT:ip:172.25.254.200/24;gateway:172.25.254.100

systemctl disable --now firewalld.service

测试效果如下: 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到