#作者:张桐瑞

集群 Cluster

一、集群类型

负载均衡集群Load BalanceLB
高可用集群High AvalibilityHA
高性能计算集群High Performace ComputeHPC

1、负载均衡集群

作用: 提高业务的并发能力
在这里插入图片描述

2、高可用集群

作用: 解决单点故障、提高可用性
可用性:
运行时间/(运行时间+故障修复时间)

在这里插入图片描述

3、高性能计算集群

作用: 提高数据的处理能力
在这里插入图片描述

二、LVS ------ Linux Virtual Service

lvs被集成在linux内核,速度快
ipvsadm管理工具

1、调度算法 scheduler

  1. rr round robin 轮询

  2. wrr 基于权重的轮询 weight

    会话保持方案:
    a. 会话共享存储
    b. 换调度算法

  3. lc least connection 最少连接

  4. wlc 基于权重的最少连接 默认

  5. sh source hash 源hash
    根据客户端IP计算hash值,相同hash值的请求转发到同一个后端服务器
    一定程度可以解决会话保持问题

  6. dh destination hash 目的地址hash
    根据目的IP地址计算hash值,后续所有请求定位同一个目的IP上
    适用于后端是缓存服务器,提升缓存命中率

2、LVS工作模式

NAT模式
在这里插入图片描述
DR模式
在这里插入图片描述
TUN模式

3、NAT模式核心要素

请求、响应都要经过调度器转发
DIP、VIP要分属不同的网络
调度器开启路由转发功能
所有real server网关要指向DIP

# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

4、NAT模式的工作原理

在这里插入图片描述
在这里插入图片描述
案例:基于NAT模式配置web集群
在这里插入图片描述

  1. 所有服务器关闭防火墙、SELinux、时间同步

  2. 在调度器上事先安装ipvsadm、所有real server事先安装httpd用于测试

# yum install -y ipvsadm
# yum install -y httpd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 在调度器上分别配置VIP、DIP
[root@lvs ~]# ip addr show
2: ens33:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:8f:c3:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.146.100/24 brd 192.168.146.255 scope global noprefixroute ens33
3: ens37:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:8f:c3:72 brd ff:ff:ff:ff:ff:ff
inet 192.168.177.254/24 brd 192.168.177.255 scope global noprefixroute ens37

在这里插入图片描述

  1. 所有real server配置地址、网关指向DIP
[root@web01 ~]# ifconfig ens33
ens33: flags=4163  mtu 1500
inet 192.168.177.10  netmask 255.255.255.0  broadcast 192.168.177.255
inet6 fe80::20c:29ff:fe14:788e  prefixlen 64  scopeid 0x20
ether 00:0c:29:14:78:8e  txqueuelen 1000  (Ethernet)
RX packets 9863  bytes 13214062 (12.6 MiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 3421  bytes 213516 (208.5 KiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@web01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.177.254 0.0.0.0         UG    100    0        0 ens33
192.168.177.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
  1. 调度器开启路由转发
[root@lvs ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1
  1. 创建虚拟服务
[root@lvs ~]# ipvsadm -A -t 192.168.146.100:80 -s rr
[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.146.100:80 rr

-A:添加一条新的虚拟服务器记录
-t:说明虚拟服务器提供的是TCP服务
-s:使用的调度算法
-m:指定LVS的工作模式为NAT模式
-g:指定LVS的工作模式为直接路由模式
-D:删除内核虚拟服务器表中的一条虚拟服务器记录
-d:删除一条虚拟服务器记录中的某条真实服务器记录
-a:在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录
-n:输出IP地址和端口的数字形式
-r:真实的服务器
-R:恢复虚拟服务器规则
-S:保存虚拟服务器规则

  1. 添加real server
[root@lvs ~]# ipvsadm -a -t 192.168.146.100:80 -r 192.168.177.10:80 -m   //-m nat模式
[root@lvs ~]# ipvsadm -a -t 192.168.146.100:80 -r 192.168.177.20:80 -m
  1. 查看负载均衡表
[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.146.100:80 rr
-> 192.168.177.10:80            Masq    1      0          0
-> 192.168.177.20:80            Masq    1      0          0
  1. 测试访问
    http://192.168.146.100/
[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.146.100:80 rr
-> 192.168.177.10:80            Masq    1      0          3
-> 192.168.177.20:80            Masq    1      0          3
[root@lvs ~]# ipvsadm -L -n -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:14  TIME_WAIT   192.168.146.1:55276 192.168.146.100:80 192.168.177.20:80
TCP 00:30  TIME_WAIT   192.168.146.1:56266 192.168.146.100:80 192.168.177.20:80
TCP 00:55  TIME_WAIT   192.168.146.1:60898 192.168.146.100:80 192.168.177.10:80
TCP 01:01  TIME_WAIT   192.168.146.1:65024 192.168.146.100:80 192.168.177.10:80
TCP 01:52  TIME_WAIT   192.168.146.1:51311 192.168.146.100:80 192.168.177.20:80
  1. 保存、恢复规则
# ipvsadm -S > /opt/web_rule
# ipvsadm -R < /opt/web_rule

三、DR模式 ---- Direct Route 直接路由模式

1、核心要素

请求经过调度器、响应由real server发送
real server的网关要指向真实网关,确保网络通畅
VIP、DIP要属于同一网络
在所有real server配置VIP
arp_ignore=1
只让主机回复关于物理网卡的ARP响应
arp_announce=2
让主机以适当的地址发送响应
real server的操作只能是类linux系统

案例:基于DR模式配置web集群
在这里插入图片描述
1、所有real server配置VIP(掩码必须32位 lo虚拟网卡)

[root@lvs ~]# ip addr add dev lo 192.168.140.100/32
[root@lvs ~]# ip addr show lo
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.140.100/32 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever

2、所有real server修改arp内核参数

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@localhost ~]# sysctl -p

3、所有real server安装配置httpd

5、在调度器上配置VIP

[root@lvs ~]# ip addr add dev lo 192.168.140.100/32
[root@lvs ~]# ip addr show lo
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 192.168.140.100/32 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever

6、创建虚拟服务

[root@lvs ~]# yum install -y ipvsadm.x86_64
[root@lvs ~]# ipvsadm -A -t 192.168.140.100:80 -s rr   //调度算法rr
[root@lvs ~]# ipvsadm -a -t 192.168.140.100:80 -r 192.168.140.11:80 -g   //-g  DR模式
[root@lvs ~]# ipvsadm -a -t 192.168.140.100:80 -r 192.168.140.12:80 -g
[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.140.100:80 rr
-> 192.168.140.11:80            Route   1      0          0
-> 192.168.140.12:80            Route   1      0          0

7、测试访问

[root@redis_server ~]# curl 192.168.140.100
 web01
[root@redis_server ~]# curl 192.168.140.100
 web02
[root@redis_server ~]# curl 192.168.140.100
 web01
[root@redis_server ~]# curl 192.168.140.100
 web02

四、持久性连接

作用:
在指定的时间范围内, 同一个客户端的请求会被转发到同一个real server
会话持久

[root@lvs ~]# ipvsadm -E -t 192.168.140.100:80 -s rr -p 300
[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.140.100:80 rr persistent 300
-> 192.168.140.11:80            Route   1      0          0
-> 192.168.140.12:80            Route   1      0          0
posted on 2025-09-21 16:32  ycfenxi  阅读(3)  评论(0)    收藏  举报