lvs看这一篇就够了!!!

lvs

负载均衡集群

一、集群是什么

1 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。
​
2 集群组成后,可以利用多个计算机和组合进行海量请求处理(**负载均衡**),从而获得很高的处理效率,也可以用多个计算机做备份(高可用),使得任何一个机器坏了整个系统还是能正常运行。

二、负载均衡集群技术

① 负载均衡(Load Balance):负载均衡集群为企业需求提供了可解决容量问题的有效方案。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理。
​
② 负载通常包括应用程序处理负载和网络流量负载,每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。

三、负载均衡集群技术的实现

负载均衡(Load Balance)
负载均衡技术类型:基于 4 层负载均衡技术和基于 7 层负载均衡技术
负载均衡实现方式:硬件负载均衡设备或者软件负载均衡
硬件负载均衡产品:**F5**    、深信服 、Radware
软件负载均衡产品: **LVS**(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)

四、实现效果如图

五、负载均衡分类

我们先来看一张图,相信很多同学对这张图都不陌生,这是一张网络模型图,包含了 OSI 模型及 TCP/IP 模型,两个模型虽然有一点点区别,但主要的目的是一样的,模型图描述了通信是怎么进行的。它解决了实现有效通信所需要的所有过程,并将这些过程划分为逻辑上的层。层可以简单地理解成数据通信需要的步骤。

负载均衡根据所采用的设备对象(**软/硬件负载均衡**),应用的OSI网络层次(**网络层次上的负载均衡**),及应用的地理结构(**本地/全局负载均衡**)等来分类。下面着重介绍的是根据应用的 OSI 网络层次来分类的两个负载均衡类型。
​
**负载均衡可以大概分为以下几类:**
​
-  **二层负载均衡(mac)**
   一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应。 
-  **三层负载均衡(ip)**
   一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应。 
-  **四层负载均衡(tcp)**
   在三层负载均衡的基础上,用ip+port接收请求,再转发到对应的机器。 
-  **七层负载均衡(http)**
   根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。 
​
在实际应用中,比较常见的就是四层负载及七层负载。这里也重点说下这两种负载。

六、四层负载均衡(基于IP+端口的负载均衡)

实现四层负载均衡的软件有:
​
- F5:硬件负载均衡器,功能很好,但是成本很高。
- lvs:重量级的四层负载软件
- nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活(1.9)
- haproxy:模拟四层转发,较灵活

七、七层的负载均衡(基于虚拟的URL或主机IP的负载均衡)

1. 在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别来决定是否要进行负载均衡。
2. 实现七层负载均衡的软件有: 
   - haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;
   - nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;
   - apache:功能较差
   - Mysql proxy:功能尚可。
八、四层负载与七层负载的区别
四层负载均衡七层负载均衡
基于基于IP+Port的基于虚拟的URL或主机IP等。
类似于路由器代理服务器
复杂度
性能高;无需解析内容中;需要算法识别 URL,Cookie 和 HTTP head 等信息
安全性
额外功能会话保持,图片压缩,等
总结:从上面的对比看来四层负载与七层负载最大的区别就是效率与功能的区别。四层负载架构设计比较简单,无需解析具体的消息内容,在网络吞吐量及处理能力上会相对比较高,而七层负载均衡的优势则体现在功能多,控制灵活强大。在具体业务架构设计时,使用七层负载或者四层负载还得根据具体的情况综合考虑。
九、LVS 实现四层负载均衡项目实战

1、LVS 介绍

(1)LVS 是`Linux Virtual Server`的简称,也就是 Linux 虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是**www.linuxvirtualserver.org。**现在LVS已经是 Linux标准内核的一部分,因此性能较高。
​
(2)LVS软件作用:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

2、LVS 优势与不足

1、优势
高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。
稳定性强:是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。
成本低廉:硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。
配置简单:LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。
支持多种算法:支持多种论调算法,可根据业务场景灵活调配进行使用
支持多种工作模型:可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。
应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等
​
2、不足
工作在4层,不支持7层规则修改,机制过于庞大,不适合小规模应用。
3、LVS 核心组件和专业术语
1、核心组件
LVS的管理工具和内核模块 ipvsadm/ipvs
ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS等;
ipvs:工作于内核上的程序,可根据用户定义的集群实现请求转发;
​
2、专业术语
VS: Virtual Server          #虚拟服务
Director,Balancer           #负载均衡器、分发器
RS: Real Server             #后端请求处理服务器
CIP: Client IP              #用户端IP
VIP: Director Virtual IP    #负载均衡器虚拟IP
DIP: Director IP            #负载均衡器IP
RIP: Real Server IP         #后端请求处理服务器IP
​
3、具体图解

4、LVS负载均衡四种工作模式
LVS/NAT:网络地址转换模式,进站/出站的数据流量经过分发器(IP负载均衡,他修改的是IP地址)  --利用三层功能
LVS/DR  :直接路由模式,只有进站的数据流量经过分发器(数据链路层负载均衡,因为他修改的是目的mac地址)--利用二层功能mac地址
LVS/TUN: 隧道模式,只有进站的数据流量经过分发器
LVS/full-nat:双向转换:通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发

NAT模式(VS-NAT)

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。
缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!

直接路由(Direct routing)模式(LVS-DR)

直接路由(Direct routing)模式(LVS-DR)
原理:负载均衡器和RS都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。
优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

IP隧道(Tunnel)模式(VS-TUN)

IP隧道(Tunnel)模式(VS-TUN)
原理:互联网上的大多Internet服务的请求包很短小,而应答包通常很大。那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项
    优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。
    缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。

FULL-NAT模式

FULL-NAT模式
原理:客户端对VIP发起请求,Director接过请求发现是请求后端服务。Direcrot对请求报文做full-nat,把源ip改为Dip,把目标ip转换为任意后端RS的rip,然后发往后端,rs接到请求后,进行响应,相应源ip为Rip目标ip还是DIP,又内部路由路由到Director,Director接到响应报文,进行full-nat。将源地址为VIP,目标地址改为CIP
​
请求使用DNAT,响应使用SNAT

5、四者的区别
lvs-nat与lvs-fullnat:请求和响应报文都经由Director
lvs-nat:RIP的网关要指向DIP
lvs-fullnat:RIP和DIP未必在同一IP网络,但要能通信
lvs-dr与lvs-tun:请求报文要经由Director,但响应报文由RS直接发往Client
lvs-dr:通过封装新的MAC首部实现,通过MAC网络转发
lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信
6、LVS ipvsadm 命令的使用

LVS-server安装lvs管理软件

yum -y install ipvsadm      直接下载即可
​
程序包:ipvsadm(LVS管理工具)
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save  > /path/to/file
配置文件:/etc/sysconfig/ipvsadm-config
命令选项
-A --add-service #在服务器列表中新添加一条新的虚拟服务器记录
-s --scheduler #使用的调度算法, rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc
例:ipvsadm -A -t 192.168.1.2:80 -s wrr
​
-a --add-server  #在服务器表中添加一条新的真实主机记录
-t --tcp-service #说明虚拟服务器提供tcp服务
-u --udp-service #说明虚拟服务器提供udp服务
-r --real-server #真实服务器地址
-m --masquerading #指定LVS工作模式为NAT模式
-w --weight #真实服务器的权值
-g --gatewaying #指定LVS工作模式为直接路由器模式(也是LVS默认的模式)
-i --ip #指定LVS的工作模式为隧道模式  
-p #会话保持时间,定义流量被转到同一个realserver的会话存留时间
例:ipvsadm -a -t 192.168.1.2:80 -r 192.168.2.10:80 -m -w 1
​
-E -edit-service #编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D -delete-service #删除内核虚拟服务器表中的一条虚拟服务器记录。
-C -clear #清除内核虚拟服务器表中的所有记录。
-R -restore #恢复虚拟服务器规则
-S -save #保存虚拟服务器规则到标准输出,输出为-R 选项可读的格式
-e -edit-server #编辑一条虚拟服务器记录中的某条真实服务器记录
-d -delete-server #删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list #显示内核虚拟服务器表
​
--numeric, -n:#以数字形式输出地址和端口号
--exact: #扩展信息,精确值 
--connection,-c: #当前IPVS连接输出
--stats: #统计信息
--rate : #输出速率信息
​
参数也可以从/proc/net/ip_vs*映射文件中查看
-Z –zero #虚拟服务表计数器清零(清空当前的连接数量等)
命令使用
ipvsadm -ln         #-l 显示内核虚拟服务器表,-n 以数值形式显示
​
ipvsadm -C(大C)          #清除所有规则,-ln查看到的内容
​
ipvsadm -c(小c)          #显示当前ipvs连接输出
​
ipvsadm -A -t 虚拟主机ip:端口 -s rr       #-A 添加一条新的虚拟服务器记录,-t 虚拟服务器提供tcp服务,-s 使用的调度算法,有rr | wrr | lc | wlc | lblb | lblcr | dh | sh | sed | nq 默认调度算法是 wlc
​
ipvsadm -a -t 虚拟主机ip:端口 -r 真实主机ip:端口 -m -w 3        #-a 添加一条真实的主机记录,-r 真实服务器地址,-m 指定lvs工作模式为nat模式,-w 真实服务器的权重
​
ipvsadm -E -t 虚拟主机ip:端口 -s wrr      #编辑一条虚拟服务器记录,但是只能修改调度算法
​
ipvsadm -e -t 虚拟主机ip:端口 -r 真实主机ip:端口 -w 2       #编辑一条真实服务器记录,但是只能修改权重
​
ipvsadm -D -t 虚拟主机ip:端口     #删除一条虚拟服务器记录,会将虚拟服务器下的真实服务器也全部删除
​
ipvsadm -d -t 虚拟主机ip:端口 -r 真实主机ip:端口        #删除一条真实服务器记录
​
ipvsadm -a -t 虚拟主机ip:端口 -r 真实主机ip:端口 -m -p 3        #会话保持时间,同一个流量在一个真实服务器上存留的时间
​
ipvsadm -S -n > a.txt           #将虚拟服务器规则标准输出到a.txt文件中,-n y
​
ipvsadm -R < a.txt          #将a.txt文件中的虚拟规则标准输入到ipvsadm中
7、LVS 负载均衡集群企业级应用实战
nat模式部署

环境准备

1、准备虚拟机
准备 3 台纯净的虚拟机,两台 web 服务器
​
2、LVS-server 安装lvs管理软件
yum -y install ipvsadm
​
程序包:ipvsadm(LVS管理工具)
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save > /path/to/file
配置文件:/etc/sysconfig/ipvsadm-config
​
4、负载均衡器两个网卡ip
一个桥接(桥接负责创建一个虚拟负载均衡器ip,用于连接两台后台真实服务器ip,当web服务器访问桥接ip的时候,访问到后台真实服务器)
一个nat(nat的ip负责作为两台真实服务器的网关,当真实服务器回包的时候,可以回到负载均衡器上,负载均衡器再将数据包回复到客户端上)
​
5、真实服务器一个nat网卡ip
负责接受请求,并且回包,需要将负载均衡器的nat网卡ip设置为真实服务器nat网卡的网关

负载均衡主机

vim /etc/sysctl.conf        打开路由转发
-------------------
net.ipv4.ip_forward = 1
-------------------
sysctl -p
yum install -y ipvsadm
ipvsadm -A -t 主机的桥接网卡桥接ip:端口 -s rr
ipvsadm -a -t 主机的桥接网卡桥接ip:端口 -r 后端真实服务器ip -m        #在虚拟主机ip上添加真实后端服务器ip
ipvsadm -ln         #查看配置情况
浏览器中访问负载均衡器的桥接网卡ip,刷新访问到真实服务器中nginx发布目录中设置的内容

两台后台真实服务器

yum install -y nginx
echo jiaming1 > /usr/share/nginx/html/index.html
systemctl start nginx
ip route add default via 负载均衡主机的net网卡ip         将负载均衡器主机nat的ip配为后台真实服务器的网关,用于和负载均衡器通信
dr模式部署

环境准备

负载均衡器一个nat网卡即可,但是需要创建一个用于客户访问负载均衡器的ip,用于客户访问,直接创建到nat网卡上即可
​
真实服务器一个nat网卡即可,需要

负载均衡主机

ip addr add dev ens33 负载均衡器ip/子网掩码          本身的nat网卡ip用于接受客户请求,新建的作为负载均衡器ip,如果将负载均衡器的虚拟IP设置为自己的IP,那么它将无法区分来自客户端的请求和来自后端真实服务器的响应。
​
yum install -y ipvsadm
​
ipvsadm -A -t 新建虚拟负载均衡ip:端口 -s rr                   #用于接受客户请求
ipvsadm -a -t 新建虚拟负载均衡ip:端口 -r 后端真实服务器ip        #将客户请求分发到

两台后台真实服务器

yum install -y nginx
echo "jiaming1" > /usr/share/nginx/html/index.html      #两台真实服务器发布目录内容设置为不一样的
ip addr add dev lo 新建负载均衡器ip/32     #将新建虚拟服务器的ip设置为lo网卡上,用于回包,可以不经过负载均衡器回包,子网掩码32位,更精确
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  #忽略arp广播
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce #匹配精确ip地址回包
sed -i 's/    keepalive_timeout   65;/    keepalive_timeout   0;/' /etc/nginx/nginx.conf        #会话保持
systemctl start nginx
8、LVS的调度算法
LVS的调度算法分为静态与动态两类。
1、静态算法(4种)
只根据算法进行调度 而不考虑后端服务器的实际连接情况和负载情况
​
RR:轮叫调度(Round Robin)
调度器通过”轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
​
WRR:加权轮叫(Weight RR)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
​
DH:目标地址散列调度(Destination Hash )
根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
​
SH:源地址 hash(Source Hash)
源地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
​
2、动态算法(6种)
前端的调度器会根据后端真实服务器的实际连接情况来分配请求
​
LC:最少链接(Least Connections)
调度器通过”最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用”最小连接”调度算法可以较好地均衡负载。
​
WLC:加权最少连接(默认采用的就是这种)(Weighted Least Connections)
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
​
SED:最短期望延迟调度(Shortest Expected Delay )
在WLC基础上改进,Overhead =  (ACTIVE+1)*256/加权,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权限过大的时候,会倒置空闲服务器一直处于无连接状态。
​
NQ:永不排队/最少队列调度(Never Queue Scheduling NQ)
无需队列。如果有台  realserver的连接数=0就直接分配过去,不需要再进行sed运算,保证不会有一个主机很空闲。
​
LBLC:基于局部性的最少链接(locality-Based Least Connections)
基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。
​
LBLCR:带复制的基于局部性最少连接(Locality-Based Least Connections with Replication)
带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

keepalived高可用

Keepalived VRRP 介绍

keepalived是什么
    keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
​
keepalived工作原理
    keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
​
    虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
​
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
==============================================
脑裂  split barin:
Keepalived的BACKUP主机在收到不MASTER主机报文后就会切换成为master,如果是它们之间的通信线路出现问题,无法接收到彼此的组播通知,但是两个节点实际都处于正常工作状态,这时两个节点均为master强行绑定虚拟IP,导致不可预料的后果,这就是脑裂。
解决方式:
1、添加更多的检测手段,比如冗余的心跳线(两块网卡做健康监测),ping对方等等。尽量减少"裂脑"发生机会。(指标不治本,只是提高了检测到的概率);
2、设置仲裁机制。两方都不可靠,那就依赖第三方。比如启用共享磁盘锁,ping网关等。(针对不同的手段还需具体分析);
3、爆头,将master停掉。然后检查机器之间的防火墙。网络之间的通信
keepalivedg给nginx实现高可用
systemctl disable firewalld --now
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux
​
两台虚拟机即可,两台nginx皆高可用

nginx高可用部署

yum install -y nginx keepalived
vim /etc/keepalived/keepalived.conf     master服务器,配置文件差不多,master引用脚本
---------------------------------
! Configuration File for keepalived
​
global_defs {
   router_id director1      #辅助改为directory2
}
vrrp_script check_nginx {       #引用的脚本
   script "/root/s.sh"      #脚本的位置
   interval 1           #多长时间执行一次该脚本
}
​
vrrp_instance VI_1 {    #实例1
    state MASTER        #定义主备,备写BACKUP
    interface ens33     #vip绑定接口
    virtual_router_id 80    #整个集群的调度器一致
    priority 100        #优先级,100为最高,以此类推,backup改为100以下
    advert_int 1        #vrrp广播之间的时间间隔,单位秒
    authentication {    #定义vrrp路由之间的通信
        auth_type PASS  #验证身份的类型,类型为密码
        auth_pass 1111  #验证身份的密码
    }
    virtual_ipaddress {     #定义vip
        192.168.253.100/24
    }
    track_script {      #引用模块
        check_nginx
    }
}
---------------------------------
vim /root/s.sh
---------------------------------
ps aux | grep nginx | grep -v grep      #过滤nginx进程,过滤出的出来返回值为0,否则不为0
if [ $? -ne 0 ];then
        ip link set ens33 down          #停止网卡
else
        ip link set ens33 up            #开启网卡
fi
---------------------------------
也可以给master服务器添加一个桥接网卡,ssh远程连接用桥接ip,防止远程连接断开,停掉ens33(nat)网卡
​
vim /etc/keepalived/keepalived.conf
---------------------------------
! Configuration File for keepalived
​
global_defs {
   router_id directory2
}
​
vrrp_instance VI_1 {
    state BACKUP    #设置为backup
    interface ens33
    nopreempt        #设置到back上面,不抢占资源
    virtual_router_id 80
    priority 50   #辅助改为50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.253.100/24
    }
}
---------------------------------
​
两台服务器同时启动nginx,keep alived
nginx
systemctl start keepalived
  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVS(Linux Virtual Server)是一种基于 Linux 系统的负载均衡集群技术,它主要用于将网络流量分发到多个服务器上,以提高系统的可靠性、可扩展性和性能。 LVS 集群一般包括四个组件:调度器(LVS 调度器)、前端服务器(负载均衡器)、后端服务器(真实服务器)和存储服务器(用于共享数据)。首先,调度器接收来自客户端的请求,然后根据配置的调度算法(如轮询、加权轮询、最小连接数等)将请求分发到多个前端服务器。前端服务器接收到请求后,通过相应的负载均衡算法将请求转发到后端的真实服务器上进行处理。在整个过程中,存储服务器用于存放共享的数据,以确保所有的真实服务器都能获取到相同的数据,并提供一致的服务。 LVS 集群的优点是能提高网站的稳定性和可靠性,当某一台服务器出现故障时,调度器会自动将请求分发到其他可用的服务器上,从而保证服务的连续性。同时,LVS 集群还能通过增加前端服务器和后端服务器的数量来提高系统的性能和吞吐量,以满足不断增长的用户需求。 在实际应用中,LVS 集群需要合理配置,包括选择合适的调度算法、调整每台服务器的权重、选择适当的硬件设备等。此外,还需要及时监控集群的运行状态,及时发现和解决故障,以确保整个系统的正常运行。 总的来说,LVS 负载均衡集群是一种强大而高效的集群技术,能帮助企业提高系统的可靠性和性能,是现代互联网应用中不可或缺的重要组成部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值