LVS负载均衡集群+LVS-DR部署

LVS负载均衡集群+LVS-DR部署

LVS负载均衡集群

1. LVS组成
  1. 负载调度器(Load Balancer):负责接收客户端请求并决定将请求分发给哪个后端服务器处理。调度器可以根据不同的算法,如轮询、加权轮询、最少连接数等,进行请求分发,以实现负载均衡。
  2. 转发器(Forwarder):负责将客户端请求转发给后端服务器进行处理。转发器可以通过网络地址转换(NAT)或直接路由(DR)两种方式来转发请求。
  3. 后端服务器(Real Server):实际处理客户端请求的服务器。后端服务器可以是一台或多台物理服务器,也可以是一组虚拟机。调度器将客户端请求转发到后端服务器上,后端服务器处理请求并返回响应给客户端。
2. LVS集群类型中的术语
LVS (Linux Virtual Server)Linux虚拟服务器
VS(Virtual Server)lvs服务器
RS(Real Server)后端真实的工作服务器
CIP(Client IP)客户端的IP地址
VIP(Virtual serve IP)VS外网的IP,向外部直接面向用户请求,作为用户请求的目标的IP地址
DIP(Director IP)VS内网的IP,用于和内部主机通讯的IP地址
RIP(Real server IP)后端服务器的IP地址

IPVS(IP Virtual Server) 一种用于构建高性能、高可用的集群服务的技术是Linux内核的一部分,通过在内核中实现负载均衡、虚拟服务器和会话保持等功能,为应用程序提供了可靠、可扩展的服务

特点:

一个ipvs主机可以同时定义多个cluster service

定义时指明lvs-type(lvs的模式)以及lvs scheduler(调度器)

一个cluster service上至少应该有2个real server

3. ipvsadm 工具

用户空间的命令行工具,负责为IPVS内核框架编写规则,定义谁是集群服务,谁是后端真实的服务器(Real Server),用于管理集群服务

ipvsadm 工具选项说明:

选项说明
-A添加虚拟服务器
-D删除整个虚拟服务器
-s指定负载调度算法(轮询: rr、加权轮询: wrr、最少连接: lc、[默认]加权最少连接: wlc)
-a添加真实服务器(节点服务器)
-d删除某一个节点
-t指定VIP地址及TCP端口
-r指定RIP地址及TCP端口
-m表示使用NAT群集模式
-g表示使用DR模式
-i表示使用TUN模式
-w设置权重(权重为0时表示暂停节点)
-p 60表示保持长连接60秒
-l列表查看 LVS虚拟服务器(默认为查看所有)
-n以数字形式显示地址、端口等信息,常与"-l“选项组合使用。ipvsadm -ln
4. 三种负载调度工作模式
1. NAT模式

地址转换
● Network Address Translation,简称NAT模式
● 负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口,极高负载的场景中,负载调度器可能会成为系统性能瓶颈
● 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式(RIP,DIP必须同一IP网络)

用户->LVS(负载均衡调度器)->真实服务器->LVS(负载均衡调度器)->用户

在这里插入图片描述

2. TUN模式

IP隧道
● IP Tunnel,简称TUN模式
● 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器(RIP,DIP,VIP必须是公网地址)
● 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

● 用户->LVS(负载均衡调度器)->真实服务器->用户

在这里插入图片描述

3. DR模式

直接路由
● Direct Routing,简称DR模式
● 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
(RS跟Director必须在同一物理网络中,中间不能有路由器相隔)

● 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

● VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。

● 用户->LVS(负载均衡调度器)->真实服务器->用户(LVS和负载均衡在同一内网)

在这里插入图片描述

LVS-DR部署

1.环境说明
客户端DR 服务器RS1 服务器RS2 服务器
CIP192.168.1.138
DIP192.168.226.134
RIP192.168.226.128192.168.226.138
VIP192.168.226.150192.168.226.150192.168.226.150
服务httpdhttpd
系统版本Win10RedHat8RedHat8RedHat8

在这里插入图片描述

2.安装ipvsadm net-tools
DR,RS1,RS2 都执行下操作
// 关闭防火墙
systemctl disable --now firewalld
// 关闭selinux
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
//安装ipvsadm net-tools
yum -y install net-tools ipvsadm
3.配置DR
3.1配置DIP

编辑物理网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens160

注释:DHCP的方式下发ip地址,DIP不配置

3.2配置VIP

语法:ifconfig ens160:0 vip/32 broadcast vip up

[root@DR ~]# ifconfig ens160:0 192.168.226.150/32 broadcast 192.168.226.150 up
[root@DR ~]# ifconfig 
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.226.134  netmask 255.255.255.0  broadcast 192.168.226.255
        inet6 fe80::2bdf:4c8c:f068:c411  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:79:b1:fd  txqueuelen 1000  (Ethernet)
        RX packets 1003  bytes 125434 (122.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1112  bytes 126054 (123.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens160:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  #添加的VIP
        inet 192.168.226.150  netmask 0.0.0.0  broadcast 192.168.226.150
        ether 00:0c:29:79:b1:fd  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 18683  bytes 1475384 (1.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18683  bytes 1475384 (1.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
4.配置两台RS
4.1配置RIP

编辑物理网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens160

注释:DHCP的方式下发ip地址,RIP不配置

4.2配置VIP

修改网卡内核参数 两台RS都配置

编辑/etc/sysctl.conf文件,添加如下内容:

//添加如下两行内容
vim /etc/sysctl.conf
........
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
//重新读配置
sysctl -p

配置vip 两台RS都配置

语法:ifconfig lo:0 vip/32 broadcast vip up

ifconfig lo:0 192.168.226.150/32 broadcast 192.168.226.150 up

[root@RS1/2 ~]# ifconfig 
.......
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.226.150  netmask 0.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
.......

注:此处必须先修改网卡内核参数然后再配置vip,因为如果先配vip,vip配好后就会立马通告给别人,而修改内核参数就是为了不通告

5.配置路由信息

net-tools工具箱,在DR和所有RS上进行配置

语法:route add -host vip dev interface:0

在DR上配置:
[root@DR ~]# route add -host 192.168.226.160 dev ens160:0
[root@DR ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.226.2   0.0.0.0         UG    100    0        0 ens160
192.168.226.0   0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.226.160 0.0.0.0         255.255.255.255 UH    0      0        0 ens160

在RS1上配置:
[root@RS1 ~]# route add -host 192.168.226.160 dev lo:0
[root@RS1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.226.2   0.0.0.0         UG    100    0        0 ens160
192.168.226.0   0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.226.160 0.0.0.0         255.255.255.255 UH    0      0        0 lo

在RS2上配置:
[root@RS2 ~]# route add -host 192.168.226.160 dev lo:0
[root@RS2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.226.2   0.0.0.0         UG    100    0        0 ens160
192.168.226.0   0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.226.160 0.0.0.0         255.255.255.255 UH    0      0        0 lo
6.ipvsadm配置DR

在DR上添加并保存规则

语法: ipvsadm -A -t vip:port -s wrr

ipvsadm -a -t vip:port -r rip:port -g

[root@DR ~]# ipvsadm -A -t 192.168.226.150:80 -s wrr
[root@DR ~]# ipvsadm -a -t 192.168.226.150:80 -r 192.168.226.128:80 -g
[root@DR ~]# ipvsadm -a -t 192.168.226.150:80 -r 192.168.226.138:80 -g
[root@DR ~]# 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.226.150:80 wrr
  -> 192.168.226.128:80           Route   1      0          0         
  -> 192.168.226.138:80           Route   1      0          0         
7.测试
#Win10 cmd.exe
Microsoft Windows [版本 10.0.19045.3448]
(c) Microsoft Corporation。保留所有权利。

C:\Users\24734>curl http://192.168.226.150
RS2

C:\Users\24734>curl http://192.168.226.150
RS1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值