1.集群介绍
2.keepalived介绍
3. 用keepalived配置高可用集群
3.1 两台机器都安装keepalived
3.2 修改(knightlai01)配置文件创建启动脚本编辑130上keepalived配置文件
33.3 169(knightlai02)上编辑配置文件132上132上169上编辑配置文件编辑配置编配置文件
3.4 测试高可用
4.负载均衡集群介绍
5.LVS介绍
6. LVS调度算法
7.LVS NAT模式搭建
7.1 准备三台机器,并设置相关IP
7.2 安装ipvsadm,并编辑脚本
7.3 测试NAT模式
计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件(和/或)硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度(和/或)可靠性。一般情况下集群计算机比单个计算机,工作站或超级计算机性能价格比要高得多。
集群就是一组相互独立的计算机,通过高速的网络组成一个计算机系统,每个集群节点都是运行其自己进程的一个独立服务器。对网络用户来讲,网站后端就是一个单一的系统,协同起来向用户提供系统资源,系统服务。通过网络连接组合成一个组合来共同完一个任务.
集群分类
【1】负载均衡集群(Load balancing clusters)简称LBC
【2】高可用性集群(High-availability clusters)简称HAC
【3】高性能计算集群(High-perfomance clusters)简称HPC
【4】网格计算(Gridcomputing)
在网络上,一般认为只前三有三个,”负载均衡”和”高可用集群”是互联网行业常用的集群架构,也是我们必须掌握的。下面详细说说前三种集群。
负载均衡集群
负载均衡集群为企业提供了更为实用,性价比更高的系统架构解决方案。负载均衡集群把很多客户集中访问的请求负载压力尽可能平均的分摊到计算机集群中处理。客户请求负载通常包括”应用程度处理负载”和”网络流量负载”。这样的系统非常适合向使用同一组应用程序为大量用户提供服务。每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。
负载均衡运行时,一般通过一个或多个前端负载均衡器将客户访问请求分发到后端一组服务器上,从而达到整个系统的高性能和高可用性。这样计算机集群有时也被称为服务器群。一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。
负载均衡集群的作用:
分担访问流量(负载均衡)
保持业务的连续性(高可用性)
高可用性集群
一般是指当集群中的任意一个节点失效的情况下,节点上的所有任务自动转移到其他正常的节点上,并且此过程不影响整个集群的运行,不影响业务的提供。
类似是集群中运行着两个或两个以上的一样的节点,当某个主节点出现故障的时候,那么其他作为从节点的节点就会接替主节点上面的任务。从节点可以接管主节点的资源(IP地址,架构身份等),此时用户不会发现提供服务的对象从主节点转移到从节点。
高可用性集群的作用:
当一个机器宕机另一台进行接管。
比较常用的高可用集群开源软件有:keepalive,heardbeat..........................
集群工作方式(多服务器互备方式)
工作原理:多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。
常用集群软硬件
常用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat
常用商业集群硬件有:F5,Netscaler,Radware,A10 等……
Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管,
它与HeartBeat RoseHA 实现相同类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能,比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦,
与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成,
Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。
后来Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能,下面介绍一下VRRP协议实现的过程。
我们介绍了Keepalived通过VRRP实现高可用性的工作原理,而Keepalived作为一个高性能集群软件,它还能实现对集群中服务器运行状态的监控以及故障隔离,下面我们介绍一下Keepalived对服务器运行状态和故障隔离的工作原理。
Keepalived工作在TCP/IP 参考模型的 三层、四层、五层,也就是分别为:网络层,
传输层和应用层,根据TCP、IP参数模型隔层所能实现的功能,Keepalived运行机制如下:
在网络层:我们知道运行这4个重要的协议,互联网络IP协议,互联网络可控制报文协议ICMP、地址转换协议ARP、反向地址转换协议RARP,在网络层Keepalived在网络层采用最常见的工作方式是通过ICMP协议向服务器集群中的每一个节点发送一个ICMP数据包(有点类似与Ping的功能),如果某个节点没有返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中剔除故障节点。
在传输层:提供了两个主要的协议:传输控制协议TCP和用户数据协议UDP,传输控制协议TCP可以提供可靠的数据输出服务、IP地址和端口,代表TCP的一个连接端,要获得TCP服务,需要在发送机的一个端口和接收机的一个端口上建立连接,而Keepalived在传输层里利用了TCP协议的端口连接和扫描技术来判断集群节点的端口是否正常,比如对于常见的WEB服务器80端口。或者SSH服务22端口,Keepalived一旦在传输层探测到这些端口号没有数据响应和数据返回,就认为这些端口发生异常,然后强制将这些端口所对应的节点从服务器集群中剔除掉。
在应用层:可以运行FTP,TELNET,SMTP,DNS等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived工作方式,例如:可以通过编写程序或者脚本来运行Keepalived,而Keepalived将根据用户的设定参数检测各种程序或者服务是否允许正常,如果Keepalived的检测结果和用户设定的不一致时,Keepalived将把对应的服务器从服务器集群中剔除
第一台机器(knigthlai01) IP地址:192.168.139.168
[root@knightlai01]# yum install -y keepalived
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 9.3 kB 00:00:00
* base: ftp.cuhk.edu.hk
* epel: mirrors.aliyun.com
* extras: ftp.cuhk.edu.hk
* updates: ftp.cuhk.edu.hk
base
...........................................
第二台机器 (knightlai02)IP地址:192.168.139.169
[root@knightlai02 ~]# yum install -y nginx
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 9.3 kB 00:00:00
* base: mirror.vpshosting.com.hk
* epel: mirrors.aliyun.com
* extras: mirror.vpshosting.com.hk
* updates: ftp.cuhk.edu.hk
base | 3.6 kB 00:00:00
epel | 3.2 kB 00:00:00
extras | 3.4 kB 00:00:00
updates
编辑168上keepalived配置文件
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.139.100
}
track_script {
chk_nginx
}
}
编辑监控脚本
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
//给脚本赋予权限并启动keepalived
[root@knightlai /]# chmod 755 /usr/local/sbin/check_ng.sh
[root@knightlai /]# systemctl start keepalived
[root@knightlai /]# !ps
ps aux |grep keep
root 11174 2.3 0.1 118676 1360 ? Ss 07:18 0:00 /usr/sbin/keepalived -D
root 11175 0.6 0.3 122876 3092 ? S 07:18 0:00 /usr/sbin/keepalived -D
root 11176 4.3 0.2 122948 2512 ? S 07:18 0:00 /usr/sbin/keepalived -D
root 11190 0.0 0.0 112704 960 pts/1 R+ 07:18 0:00 grep --color=auto keep
169上编辑配置文件
[root@knightlai02 ~]#vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.139.100
}
track_script {
chk_nginx
}
}
//169上编辑监控脚本
[root@knightlai02 ~]# vim /usr/local/sbin/check_ng.sh
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
systemctl start nginx
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
//启动监控脚本
[root@knightlai02 ~]# sh /usr/local/sbin/check_ng.sh
//给监控脚本赋予相关权限,并启动keepalived
[root@knightlai02 ~]# chmod 755 /usr/local/sbin/check_ng.sh
[root@knightlai02 ~]# systemctl start keepalived
[root@knightlai02 ~]# ps aux |grep keep
root 4898 0.5 0.1 118676 1348 ? Ss 22:24 0:00 /usr/sbin/keepalived -D
root 4899 0.8 0.3 129608 3300 ? S 22:24 0:00 /usr/sbin/keepalived -D
root 4903 0.7 0.2 129476 2544 ? S 22:24 0:00 /usr/sbin/keepalived -D
root 4907 0.0 0.0 112704 960 pts/1 R+ 22:24 0:00 grep --color=auto keep
我们访问192.168.139.100可以看到是master的主页
我们关掉master上面的keepalived
[root@knightlai01]# systemctl stop keepalived
[root@knightlai01 test.com]# ps aux |grep keep
root 109578 0.0 0.0 112704 956 pts/0 S+ 21:33 0:00 grep --color=auto keep
再访问192.168.139.100发现备用服务器起来了
[root@knightlai02 ~]# curl 192.168.139.100
This is a backup backup!
[root@knightlai02 ~]# ip addr
3: ens36: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:b1:e4:36 brd ff:ff:ff:ff:ff:ff
inet 192.168.139.169/24 brd 192.168.139.255 scope global noprefixroute dynamic ens36
valid_lft 2658sec preferred_lft 2658sec
inet 192.168.139.100/32 scope global ens36
valid_lft forever preferred_lft forever
inet6 fe80::44a0:85cc:564e:fb/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::fc66:c175:7b25:828a/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::1102:6de7:f1e0:9a6b/64 scope link tentative dadfailed
随着业务量的提高,现有网络的各个核心部分访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
负载均衡技术通过设置虚拟服务器IP(VIP),将后端多台真实服务器的应用资源虚拟成一台高性能的应用服务器,通过负载均衡算法,将用户的请求转发给后台内网服务器,内网服务器将请求的响应返回给负载平衡器,负载平衡器再将响应发送到用户,这样就向互联网用户隐藏了内网结构,阻止了用户直接访问后台(内网)服务器,使得服务器更加安全,可以阻止对核心网络栈和运行在其它端口服务的攻击。并且负载均衡设备(软件或硬件)会持续的对服务器上的应用状态进行检查,并自动对无效的应用服务器进行隔离,实现了一个简单、扩展性强、可靠性高的应用解决方案,解决了单台服务器处理性能不足,扩展性不够,可靠性较低的问题。
系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。因此需要采用横向扩展的方式,通过添加机器来满足大型网站服务的处理能力。比如:一台机器不能满足,则增加两台或者多台机器,共同承担访问压力。
负载平衡最重要的一个应用是利用多台服务器提供单一服务,这种方案有时也称之为服务器农场。通常,负载平衡主要应用于Web网站,大型的Internet Relay Chat网络,高流量的文件下载网站,NNTP(Network News Transfer Protocol)服务和DNS服务。现在负载平衡器也开始支持数据库服务,称之为数据库负载平衡器。
服务器负载均衡有三大基本Feature:负载均衡算法,健康检查和会话保持,这三个Feature是保证负载均衡正常工作的基本要素。其他一些功能都是在这三个功能之上的一些深化。下面我们具体介绍一下各个功能的作用和原理。
在没有部署负载均衡设备之前,用户直接访问服务器地址(中间或许有在防火墙上将服务器地址映射成别的地址,但本质上还是一对一的访问)。当单台服务器由于性能不足无法处理众多用户的访问时,就要考虑用多台服务器来提供服务,实现的方式就是负载均衡。负载均衡设备的实现原理是把多台服务器的地址映射成一个对外的服务IP(我们通常称之为VIP,关于服务器的映射可以直接将服务器IP映射成VIP地址,也可以将服务器IP:Port映射成VIP:Port,不同的映射方式会采取相应的健康检查,在端口映射时,服务器端口与VIP端口可以不相同),这个过程对用户端是不可见的,用户实际上不知道服务器是做了负载均衡的,因为他们访问的还是一个目的IP,那么用户的访问到达负载均衡设备后,如何把用户的访问分发到合适的服务器就是负载均衡设备要做的工作了,具体来说用到的就是上述的三大Feature。
LVS是Linux内核的一部分,因此性能较高
Linux虚拟服务器(即分发器或调度器): 不真正提供服务,但接受客户的访问,为整个集群提供一个唯一的入口
虚拟服务器和真实服务器(Real Server)通信
真实服务器(Real Server): 真正提供服务,集群中每个Real Server可以是物理机,也可以是虚拟机
VS/NAT: 网络地址转换模式, 进站/出站的数据流量经过分发器
VS/DR: 直接路由模式,只有进站的数据流量经过分发器
调度器和真实服务器必须在同一网段
VS/TUN: 隧道模式,只有进站的数据流量经过分发器
1. 轮询(Round Robin)(简称rr)
调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2. 加权轮询(Weighted Round Robin)(简称wrr)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3. 最少链接(Least Connections)(LC)
调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用 “最小连接” 调度算法可以较好地均衡负载。
4.加权最少链接(Weighted Least Connections)(WLC)
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负
载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
5. 基于局部性的最少链接(Locality-Based Least Connections)(LBLC)
“基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的
服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”
的原则选出一个可用的服务器,将请求发送到该服务器。
6. 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)(LBLCR)
“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标
IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按
“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台
服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复
制的程度。
7. 目标地址散列(Destination Hashing)(DH)
“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
8. 源地址散列(Source Hashing)(SH)
“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
9. 最短的期望的延迟(Shortest Expected Delay Scheduling SED)(SED)
基于wlc算法。这个必须举例来说了
ABC三台机器分别权重123 ,连接数也分别是123。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算
A(1+1)/1
B(1+2)/2
C(1+3)/3
根据运算结果,把连接交给C。
10.最少队列调度(Never Queue Scheduling NQ)(NQ)
无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要在进行sed运算
三台机器
分发器,也叫调度器(简写为dir)
内网:220.129,外网:139.168(vmware仅主机模式)
rs1
内网:220.125,设置网关为220.129
rs2
内网:220.170,设置网关为220.129
[root@knightlai02 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.220.129 0.0.0.0 UG 100 0 0 ens36
192.168.139.0 0.0.0.0 255.255.255.0 U 100 0 0 ens36
[root@knightlai03 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.220.129 0.0.0.0 UG 100 0 0 ens33
[root@knightlai01 ~]# yum install -y ipvsadm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 7.5 kB 00:00:00
* base: ftp.cuhk.edu.hk
* epel: mirrors.aliyun.com
* extras: ftp.cuhk.edu.hk
* updates: ftp.cuhk.edu.hk
base | 3.6 kB 00:00:00
epel | 3.2 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package ipvsadm.x86_64 0:1.27-7.el7 will be installed
--> Finished Dependency Resolution
.............................................................
//编写脚本
[root@knightlai01 ~]# vim /usr/local/sbin/lvs_nat.sh
#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens36/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.220.0/24 -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.139.168:80 -s rr
$IPVSADM -a -t 192.168.139.168:80 -r 192.168.220.125:80
$IPVSADM -a -t 192.168.139.168:80 -r 192.168.220.170:80
ipvaadm参数:
ipvsadm -ln --stats ==> 查看分发情况
ipvsadm -ln --rate ==> 查看速率
ipvsadm -C ==> 清空规则
//由于我们前面是设置的rr算法,所以两个服务器会轮流执行服务
[root@knightlai01 conf]# curl 192.168.139.168
This is 192.168.220.170!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is 192.168.220.170!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is 192.168.220.170!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
//测试加权轮询算法
[root@knightlai01 conf]# cat /usr/local/sbin/lvs_nat.sh
#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,阿铭的两个网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens36/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.220.0/24 -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.139.168:80 -s wrr
$IPVSADM -a -t 192.168.139.168:80 -r 192.168.220.125:80 -m -w 5
$IPVSADM -a -t 192.168.139.168:80 -r 192.168.220.170:80 -m -w 1
//它会优先选择168这个服务器,因为权重更高一点
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is 192.168.220.170!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is a backup backup!
[root@knightlai01 conf]# curl 192.168.139.168
This is 192.168.220.170!