集群/群集(多台服务器做同一件事)
何为集群:一组协同工作的服务器,各有分工,对外表现为一个整体
集群是指将多个计算机或服务器通过网络连接在一起,形成一个共享的计算资源池。集群中的每个计算机或服务器都可以独立运行任务,同时也可以通过共享存储或者分布式文件系统进行数据交互和共享。通过集群,可以实现高可用性、高性能和高扩展性,提高计算资源的利用率和系统的可靠性。集群通常用于大规模数据处理、高性能计算、分布式存储等领域。
pv:点击量(一般统计pv量,点击的资源消耗才能测试一台服务器能够承受多少)
种类:
负载均衡集群(常用):简称LBC(load balancer cluster):分担服务总体压力
实现方式:
lvs 4层负载 《可用于大公司》
haproxy 4/7层负载
nginx 7层负载 《普通公司》
SLB 云资源负载,可同时实现高可用,需购买
F5 硬件负载设备,需购买
基本工作原理如下:
-
客户端发送请求到负载均衡器。
-
负载均衡器接收请求并根据特定的负载均衡算法选择一个服务器。
-
负载均衡器将请求转发到所选的服务器。
-
服务器处理请求并将响应返回给负载均衡器。
-
负载均衡器将响应转发给客户端。
高可用集群(常用):简称HAC(high available cluster):尽可能保障服务状态可用性
高可用集群(High Availability Cluster)是一种通过冗余和自动故障恢复机制来提高系统的可用性的集群系统。它由多个节点组成,每个节点都运行着相同的应用程序和服务,并通过网络连接进行通信和数据同步。
在高可用集群中,当一个节点发生故障或不可用时,其他节点会接管其任务和服务,确保系统的持续运行。这种自动故障转移的机制可以大大减少系统的停机时间,提高系统的可用性和可靠性。
高可用集群通常采用心跳检测和监控机制来检测节点的状态,当节点发生故障或不可用时,集群管理软件会触发故障转移操作,将任务和服务迁移到其他正常的节点上。常见的高可用集群软件包括Pacemaker、Keepalived、Corosync等。
高可用集群广泛应用于关键业务系统、数据库、Web服务器、应用服务器等需要高可用性和可靠性的场景。它可以提供连续的服务,减少系统停机时间,保证业务的正常运行。
高性能集群(国家级保密机构):简称HPC(high-performance cluster):提供单台服务器提供不了的计算能力(侧重于,计算时分担到多个服务器,提高运算效率,缩短运算时间)
用来:预测地震、天气预报、安全加密算法研究
lvs:Linux Virtual Server
介绍:
LVS(Linux Virtual Server)是一个开源的高性能、可扩展的负载均衡软件,它可以将网络流量分发到多个服务器上,以提高系统的可靠性和性能。LVS-NAT(Network Address Translation)是LVS的一种负载均衡方式,它通过修改数据包的源和目的IP地址来实现负载均衡。
LVS的特点如下:
- 高性能:LVS利用Linux内核的IP转发功能,可以实现高性能的数据包转发。它采用了快速的数据包修改和转发技术,可以在很短的时间内将数据包转发到后端的真实服务器上。
- 可扩展性:LVS支持水平扩展,可以通过添加更多的真实服务器来增加系统的处理能力。它可以根据服务器的负载情况动态地调整流量的分发策略,以实现负载均衡。
- 高可靠性:LVS可以通过健康检查来监控后端的真实服务器,当某个服务器发生故障时,它可以自动将流量转发到其他正常的服务器上,以保证系统的可靠性和可用性。
- 灵活性:LVS支持多种负载均衡算法,如轮询、加权轮询、最少连接等。管理员可以根据实际需求选择合适的负载均衡算法。
l4:四层负载《里面有四层交换,四层路由》
根据请求报文的目标IP和PORT(端口号)将其转发至后端主机集群中的某一台主机(根据挑选算法)
netfilter:包过滤器
数据包流向
PREROUTING(路由前) --> INPUT(进入):此路由目标为本机
PREROUTING (路由前)–> FORWARD(转发) --> POSTROUTING(路由后)
OUTPUT(出) --> POSTROUTING(路由后)
lvs工具:
1、ipvsadm :用户空间的命令行工具,用于管理集群服务
2、ipvs:工作于内核中netfilter INPUT(流量的过滤器)钩子上
支持TCP,UDP,AH,EST,AH_EST,SCTP等诸多协议
查看系统对ipvs的支持情况,包括算法
[root@centos ~]# grep -i -A 2 'ipvs' /boot/config-4.18.0-305.el8.x86_64
CONFIG_NETFILTER_XT_MATCH_IPVS=m
# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
--
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
--
# IPVS scheduler //调度算法
#
CONFIG_IP_VS_RR=m
--
# IPVS SH scheduler //SH调度算法
#
CONFIG_IP_VS_SH_TAB_BITS=8
--
# IPVS MH scheduler
#
CONFIG_IP_VS_MH_TAB_INDEX=12
--
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
lvs arch:(lvs架构)
LVS的架构包括以下几个组件:
- 负载均衡器(Load Balancer):负载均衡器是LVS的核心组件,它接收来自客户端的请求,并根据一定的负载均衡算法将请求转发给后端的真实服务器。负载均衡器可以是物理设备,也可以是虚拟机或容器。
- 后端真实服务器(Real Servers):后端真实服务器是负载均衡器的下游服务器,它们承担实际处理客户端请求的任务。后端服务器可以是物理服务器,也可以是虚拟机或容器。
- 负载均衡算法(Load Balancing Algorithms):负载均衡器使用负载均衡算法来决定将请求转发给哪个后端服务器。常见的负载均衡算法包括轮询(Round Robin)、加权轮询(Weighted Round Robin)、最少连接(Least Connections)等。
- 调度器(Scheduler):调度器是负载均衡器的一部分,它根据负载均衡算法来选择后端服务器。调度器可以根据服务器的负载情况动态调整请求的分发策略,以实现负载均衡。
调度器(缩写:DR)名称:director,dispatcher,balancer (调度器就是负载均衡服务器)
RS(服务器):Real Server
角色ip:
Client IP:CIP(用户ip)
Director Virutal IP:VIP(供用户访问)
Director IP:DIP(内网ip)
Real Server IP:RIP(服务器集群中每台服务器的ip)
lvs type:lvs类型### (负载均衡模式)
lvs-nat(nat模式):masquerade
LVS-NAT通过修改数据包的源IP地址和目标IP地址来实现负载均衡。
在LVS-NAT模式下,负载均衡器将客户端请求转发到后端真实服务器之前,会将请求的源IP地址修改为负载均衡器的IP地址,并将请求的目标IP地址修改为后端真实服务器的IP地址。这样,后端服务器接收到请求后,会将响应发送给负载均衡器,负载均衡器再将响应转发给客户端。
lvs-nat本质上就是多目标的DNAT(iptables)
lvs-nat模式通过修改请求报文的目标IP地址(同时可能会修改目标端口)至挑选出来的某RS的RIP地址实现转发
lvs-nat的特点:
RS和DIP应该使用私网地址,且RS的网关要指向DIP
请求和响应报文都要经由director转发,所以配置时需要将director的转发功能开启,极高负载的场景中,director可能会成为系统性能瓶颈
支持端口映射
RS可以使用任意OS
RS的RIP和Director的DIP必须在同一IP网络
lvs-dr(direct routing):lvs的默认模式,gateway
LVS-DR是一种高性能、低延迟、透明、可扩展、高可靠性的负载均衡模式,适用于对延迟要求较高、需要保持源IP地址透明的应用场景。它可以提供高效的服务质量和用户体验。
lvs-tun(ip tunneling):隧道模式
LVS-TUN利用Linux内核的IP隧道功能,将客户端请求通过隧道传输到后端的真实服务器上,实现负载均衡。
在LVS-TUN模式下,负载均衡器将客户端请求转发到后端真实服务器之前,会将请求封装在隧道中,并通过隧道传输到后端服务器。后端服务器接收到请求后,会解析隧道中的数据,并进行相应的处理和响应。
lvs-fullnat(富nat模式):keepalived
LVS-FullNAT通过修改数据包的源IP地址和目标IP地址以及端口号来实现负载均衡。
在LVS-FullNAT模式下,负载均衡器将客户端请求转发到后端真实服务器之前,会将请求的源IP地址和端口号修改为负载均衡器的IP地址和端口号,并将请求的目标IP地址和端口号修改为后端真实服务器的IP地址和端口号。这样,后端服务器接收到请求后,会将响应发送给负载均衡器,负载均衡器再将响应转发给客户端。
实验:LVS-DR部署
- 需求:实现httpd服务的http的负载均衡
环境说明
首先准备三台主机
服务器名称 | ip |
---|---|
DR | 192.168.134.155 |
RS1 | 192.168.134.151 |
RS2 | 192.168.134.148 |
//准备工作
//在三台虚拟机上关闭防火墙、selinux
systemctl disable --now firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled //将这里改成关闭状态
在rs1、rs2上面安装apache服务
//在两台虚拟机上面
yum -y install httpd
systemctl enable --now httpd
ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 *:80(apache) *:*
LISTEN 0 128 [::]:22 [::]:*
访问网页:
lvs-dr(direct routing):lvs的默认模式,gateway
LVS-DR是一种高性能、低延迟、透明、可扩展、高可靠性的负载均衡模式,适用于对延迟要求较高、需要保持源IP地址透明的应用场景。它可以提供高效的服务质量和用户体验。
lvs-tun(ip tunneling):隧道模式
LVS-TUN利用Linux内核的IP隧道功能,将客户端请求通过隧道传输到后端的真实服务器上,实现负载均衡。
在LVS-TUN模式下,负载均衡器将客户端请求转发到后端真实服务器之前,会将请求封装在隧道中,并通过隧道传输到后端服务器。后端服务器接收到请求后,会解析隧道中的数据,并进行相应的处理和响应。
lvs-fullnat(富nat模式):keepalived
LVS-FullNAT通过修改数据包的源IP地址和目标IP地址以及端口号来实现负载均衡。
在LVS-FullNAT模式下,负载均衡器将客户端请求转发到后端真实服务器之前,会将请求的源IP地址和端口号修改为负载均衡器的IP地址和端口号,并将请求的目标IP地址和端口号修改为后端真实服务器的IP地址和端口号。这样,后端服务器接收到请求后,会将响应发送给负载均衡器,负载均衡器再将响应转发给客户端。
实验:LVS-DR部署
- 需求:实现httpd服务的http的负载均衡
环境说明
首先准备三台主机
服务器名称 | ip |
---|---|
DR | 192.168.134.155 |
RS1 | 192.168.134.151 |
RS2 | 192.168.134.148 |
//准备工作
//在三台虚拟机上关闭防火墙、selinux
systemctl disable --now firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled //将这里改成关闭状态
在rs1、rs2上面安装apache服务
//在两台虚拟机上面
yum -y install httpd
systemctl enable --now httpd
ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 *:80(apache) *:*
LISTEN 0 128 [::]:22 [::]:*
访问网页:
为了做区分,将两个网页里面写入不同内容
[root@rs1 ~]# echo rs1 > /var/www/html/index.html
[root@rs2 ~]# echo rs2 > /var/www/html/index.html
再次访问网页:
DR要配置1块网卡,分别配置DIP和VIP
1.lvs-dr配置:director只需要一块网卡,vip配置在lo接口中即可,此处假设dip与rip在同一网段
配置director的ip地址信息(dip,vip)
配置dip(编辑物理网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth160)
配置vip:
ifconfig eth0:0 vip/32 broadcast vip up
由于我们的虚拟机本身是配置的DHCP自动下发ip,所以我们的dip不用再次设置,需要我们操作的就是添加一个vip
//配置dip
[root@DR ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160 (编辑物理网卡配置文件)
发现此处是由dhcp下发,不用改动
//在DR上配置vip
此处将vip设置为192.168.134.250
[root@DR ~]# yum -y install net-tools //先安装这个包才能使用ifconfig
[root@DR ~]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.134.155 netmask 255.255.255.0 broadcast 192.168.134.255
inet6 fe80::20c:29ff:fe14:eae9 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:14:ea:e9 txqueuelen 1000 (Ethernet)
RX packets 820 bytes 405086 (395.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 632 bytes 63130 (61.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
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 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//此时显示我要在ens160这个网卡上面配置
//给他添加一个网卡为ens160 ip为192.168.134.250的端口
[root@DR ~]# ifconfig ens160:0 192.168.134.250/32 broadcast 192.168.134.250 up
[root@DR ~]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.134.155 netmask 255.255.255.0 broadcast 192.168.134.255
inet6 fe80::20c:29ff:fe14:eae9 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:14:ea:e9 txqueuelen 1000 (Ethernet)
RX packets 1962 bytes 496353 (484.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 832 bytes 77977 (76.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens160:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.134.250 netmask 0.0.0.0 broadcast 192.168.134.250 //添加成功
ether 00:0c:29:14:ea:e9 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 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@DR ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:14:ea:e9 brd ff:ff:ff:ff:ff:ff
inet 192.168.134.155/24 brd 192.168.134.255 scope global dynamic noprefixroute ens160
valid_lft 1220sec preferred_lft 1220sec
inet 192.168.134.250/0 brd 192.168.134.250 scope global ens160:0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe14:eae9/64 scope link noprefixroute
valid_lft forever preferred_lft forever
在rs上面配置ip地址信息
vim /etc/sysconfig/network-scripts/ifcfg-ens160 (编辑物理网卡配置文件)
//同样,我们目前所演示的三台虚拟机都是以DHCP的方式下发ip地址,所以同样不用再次配置rip
//查看
[root@rs1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:ad:3f:73 brd ff:ff:ff:ff:ff:ff
inet 192.168.134.151/24 brd 192.168.134.255 scope global dynamic noprefixroute ens160
valid_lft 1085sec preferred_lft 1085sec
inet6 fe80::20c:29ff:fead:3f73/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@rs2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> 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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:51:4c:69 brd ff:ff:ff:ff:ff:ff
inet 192.168.134.148/24 brd 192.168.134.255 scope global dynamic noprefixroute ens160
valid_lft 1074sec preferred_lft 1074sec
inet6 fe80::20c:29ff:fe51:4c69/64 scope link noprefixroute
valid_lft forever preferred_lft forever
//修改网卡内核参数
[root@rs1 ~]# vim /etc/sysctl.conf
[root@rs1 ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.conf.all.arp_ignore = 1 //添加这两行内容
net.ipv4.conf.all.arp_announce = 2
//两台RS都要进行以上操作
[root@rs1 ~]# echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf
[root@rs1 ~]# echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf
[root@rs1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS-2 ~]# echo 'net.ipv4.conf.all.arp_ignore = 1' >> /etc/sysctl.conf
[root@RS-2 ~]# echo 'net.ipv4.conf.all.arp_announce = 2' >> /etc/sysctl.conf
[root@RS-2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
RS上配置VIP
一定要先设置好内核参数在配置VIP,如果先配置VIP,VIP配置好后会立即通告给所有人,而修改内核参数就是为了不通告
LVS服务器的eth160网卡的IP:192.168.134.250作为VIP
//在两台rs主机上配置
[root@rs1 ~]# ifconfig lo:0 192.168.134.250/32 broadcast 192.168.134.250 up
[root@rs2 ~]# ifconfig lo:0 192.168.134.250/32 broadcast 192.168.134.250 up
//查看
[root@rs1 ~]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.134.151 netmask 255.255.255.0 broadcast 192.168.134.255
inet6 fe80::20c:29ff:fead:3f73 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ad:3f:73 txqueuelen 1000 (Ethernet)
RX packets 22197 bytes 25747529 (24.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7658 bytes 744906 (727.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
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 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.134.250 netmask 0.0.0.0
loop txqueuelen 1000 (Local Loopback) //添加成功
[root@rs2 ~]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.134.148 netmask 255.255.255.0 broadcast 192.168.134.255
inet6 fe80::20c:29ff:fe51:4c69 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:51:4c:69 txqueuelen 1000 (Ethernet)
RX packets 5538 bytes 750533 (732.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3301 bytes 462524 (451.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
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 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.134.250 netmask 0.0.0.0
loop txqueuelen 1000 (Local Loopback) //添加成功
注:此处必须先修改网卡内核参数然后再配置vip,因为如果先配vip,vip配好后就会立马通告给别人,而修改内核参数就是为了不通告
配置路由:route add -host vip dev interface:0
配置路由信息: 在DR和所有RS上进行如下配置
[root@DR ~]# route add -host 192.168.134.250 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.134.2 0.0.0.0 UG 100 0 0 ens160
192.168.134.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.134.250 0.0.0.0 255.255.255.255 UH 0 0 0 ens160
[root@rs1 ~]# route add -host 192.168.134.250 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.134.2 0.0.0.0 UG 100 0 0 ens160
192.168.134.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.134.250 0.0.0.0 255.255.255.255 UH 0 0 0 lo
[root@rs2 ~]# route add -host 192.168.134.250 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.134.2 0.0.0.0 UG 100 0 0 ens160
192.168.134.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.134.250 0.0.0.0 255.255.255.255 UH 0 0 0 lo
在DR上添加并保存规则:
//先安装命令
[root@DR ~]# yum -y install ipvsadm
//添加规则
[root@DR ~]# ipvsadm -A -t 192.168.134.250:80 -s wrr
//查看DR调度器上面是否有80
[root@DR ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@DR ~]# ipvsadm -a -t 192.168.134.250:80 -r 192.168.134.148:80 -g
[root@DR ~]# ipvsadm -a -t 192.168.134.250:80 -r 192.168.134.151:80 -g
[root@DR ~]# ipvsadm -Ln //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.134.250:80 wrr //表示:我访问250的80端口会转发到148的80以及151的80
-> 192.168.134.148:80 Route 1 0 0
-> 192.168.134.151:80 Route 1 0 0
保存配置:
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@DR ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.134.250:80 -s wrr
-a -t 192.168.134.250:80 -r 192.168.134.148:80 -g -w 1
-a -t 192.168.134.250:80 -r 192.168.134.151:80 -g -w 1
测试:
进入真机cmd窗口