一、LVS作用

LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。

二、Keepalived作用

LVS可以实现负载均衡,但是不能够进行健康检查,比如一个rs出现故障,LVS 仍然会把请求转发给故障的rs服务器,这样就会导致请求的无效性。keepalive 软件可以进行健康检查,而且能同时实现 LVS 的高可用性,解决 LVS 单点故障的问题,其实 keepalive 就是为 LVS 而生的。

keepalived和其工作原理
keepalived是一个类似于Layer2,4,7交换机制的软件。是Linux集群管理中保证集群高可用的一个服务软件,其功能是用来防止单点故障。

keepalived的工作原理:
keepalived是基于VRRP协议实现的保证集群高可用的一个服务软件,主要功能是实现真机的故障隔离和负载均衡器间的失败切换,防止单点故障。在了解keepalived原理之前先了解一下VRRP协议。

VRRP协议:Virtual Route
Redundancy Protocol虚拟路由冗余协议。是一种容错协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。在介绍VRRP之前先介绍一些关于VRRP的相关术语:
虚拟路由器:由一个 Master 路由器和多个 Backup 路由器组成。主机将虚拟路由器当作默认网关。
VRID:虚拟路由器的标识。有相同 VRID 的一组路由器构成一个虚拟路由器。
Master 路由器:虚拟路由器中承担报文转发任务的路由器。
Backup 路由器: Master 路由器出现故障时,能够代替 Master 路由器工作的路由器。
虚拟 IP 地址:虚拟路由器的 IP 地址。一个虚拟路由器可以拥有一个或多个IP 地址。
IP 地址拥有者:接口 IP 地址与虚拟 IP 地址相同的路由器被称为 IP 地址拥有者。
虚拟 MAC 地址:一个虚拟路由器拥有一个虚拟 MAC 地址。虚拟 MAC 地址的格式为 00-00-5E-00-01-{VRID}。通常情况下,虚拟路由器回应 ARP 请求使用的是虚拟 MAC 地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实 MAC 地址。

优先级: VRRP 根据优先级来确定虚拟路由器中每台路由器的地位。
非抢占方式:如果 Backup 路由器工作在非抢占方式下,则只要 Master 路由器没有出现故障,Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器。
抢占方式:如果 Backup 路由器工作在抢占方式下,当它收到 VRRP 报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的 Master 路由器的优先级高,就会主动抢占成为 Master 路由器;否则,将保持 Backup 状态。
VRRP将局域网内的一组路由器划分在一起,形成一个VRRP备份组,它在功能上相当于一台路由器的功能,使用虚拟路由器号进行标识(VRID)。虚拟路由器有自己的虚拟IP地址和虚拟MAC地址,它的外在变现形式和实际的物理路由完全一样。局域网内的主机将虚拟路由器的IP地址设置为默认网关,通过虚拟路由器与外部网络进行通信。
虚拟路由器是工作在实际的物理路由器之上的。它由多个实际的路由器组成,包括一个Master路由器和多个Backup路由器。 Master路由器正常工作时,局域网内的主机通过Master与外界通信。当Master路由器出现故障时, Backup路由器中的一台设备将成为新的Master路由器,接替转发报文的工作。(路由器的高可用)

VRRP的工作工程:
(1) 虚拟路由器中的路由器根据优先级选举出 Master。 Master 路由器通过发送免费 ARP 报文,将自己的虚拟 MAC 地址通知给与它连接的设备或者主机,从而承担报文转发任务;
(2) Master 路由器周期性发送 VRRP 报文,以公布其配置信息(优先级等)和工作状况;
(3) 如果 Master 路由器出现故障,虚拟路由器中的 Backup 路由器将根据优先级重新选举新的 Master;
(4) 虚拟路由器状态切换时, Master 路由器由一台设备切换为另外一台设备,新的 Master 路由器只是简单地发送一个携带虚拟路由器的 MAC 地址和虚拟 IP地址信息的ARP 报文,这样就可以更新与它连接的主机或设备中的ARP 相关信息。网络中的主机感知不到 Master 路由器已经切换为另外一台设备。
(5) Backup 路由器的优先级高于 Master 路由器时,由 Backup 路由器的工作方式(抢占方式和非抢占方式)决定是否重新选举 Master。
VRRP优先级的取值范围为0到255(数值越大表明优先级越高)

三、环境服务配置

Nginx搭建一主一备,在主机不挂的情况下不会访问到备机,这样双击主从热备可以实现7*24小时实时访问。

两台Nginx服务器
Nginx 主服务器 192.168.212.143
Nginx 备服务器 192.168.212.144
Lvs 虚拟VIP 192.168.212.110
需要在同一个网段


主Nginx 走主 Tomcat

备Nginx 走备 Tomcat

LVS是一种四层负载均衡器 (传输层) 其实软负载均衡,完成所有负载均衡业务需求: 数据库 web服务

虚拟VIP

LVS不需要安装 只需要配置 linux内核2.4之后 都要有了

Nginx 与 Lvs 区别

 nginx 主要七层负载均衡 1.9之后支持四层    拥有虚拟化vip技术LVS 四层负载均衡 主要针对传输层负载均衡

应用场景: LVS更广泛,支持所有服务负载均衡业务功能、

Keeplived 做心跳检测 是在LVS基础之上 实现心跳检测 监控服务器 实现故障转移 如果宕机 可以尝试自动重启脚本。如果多次重试失败 发邮件通知运维 高可用~

1、如果客户端发送请求到Nginx服务器,高并发,Nginx承受不了怎么办? 限流机制,Nginx实现集群,服务降级,熔断策略

2、项目上线 访问不了
LVS抗负载能力比Nginx强,而且也可以管理Nginx集群
客户端访问哪个Nginx服务器? 通过LVS虚拟VIP技术,使用负载均衡算法。

四、环境搭建

1.下载keepalived
wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz
2.解压安装:
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
3.下载插件openssl
yum install -y openssl openssl-devel(需要安装一个软件包)
4.开始编译keepalived
cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
5.make一下
make && make install

报错: keepalived执行./configure --prefix=/usr/local/keepalived时报错:configure: error: Popt libraries is required
出现此错误的原因:
未安装popt的开发包
解决方法:
yum install popt-devel
安装好popt的开发包。重新./configure 即可。

keepalived安装成Linux系统服务
将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作:
首先创建文件夹,将keepalived配置文件进行复制:
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
然后复制keepalived脚本文件:
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
可以设置开机启动:chkconfig keepalived on,到此我们安装完毕!

启动报错Starting keepalived (via systemctl): Job for keepalived.service failed. See ‘systemctl status keepalived.service’ and ‘journalctl -xn’ for details.
解决办法
[root@edu-proxy-01 sbin]# cd /usr/sbin/
[root@edu-proxy-01 sbin]# rm -f keepalived
[root@edu-proxy-01 sbin]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

keepalived 常用命令
service keepalived start
service keepalived stop

使用keepalived虚拟VIP
vi /etc/keepalived/keepalived.conf

vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务interval 2 #检测时间间隔weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {state MASTER #来决定主从interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样mcast_src_ip 192.168.212.140 #填写本机ippriority 100 # 节点优先级,主要比从节点优先级高nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1sauthentication {auth_type PASSauth_pass 1111}# 将 track_script 块加入 instance 配置块track_script {chk_nginx #执行 Nginx 监控的服务}virtual_ipaddress {192.168.110.110 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。}
}

关闭防火墙 systemctl stop firewalld

双机主从热备概述
可以两台机子互为热备,平时各自负责各自的服务。在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续性,提高服务的可靠性,从而保证服务器7*24小时运行。

upstream testproxy {server 127.0.0.1:8080;server 127.0.0.1:8081 backup;}server {listen       80;server_name  localhost;location / {proxy_pass   http://testproxy;index  index.html index.htm;}###nginx与上游服务器(真实访问的服务器)超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间proxy_connect_timeout 1s;###nginx发送给上游服务器(真实访问的服务器)超时时间proxy_send_timeout 1s;### nginx接受上游服务器(真实访问的服务器)超时时间proxy_read_timeout 1s;}

只要在希望成为后备的服务器 ip 后面多添加一个 backup 参数,这台服务器就会成为备份服务器。
在平时不使用,nginx 不会给它转发任何请求。只有当其他节点全部无法连接的时候,nginx 才会启用这个节点。
一旦有可用的节点恢复服务,该节点则不再使用,又进入后备状态

Nginx+keepalived简单双机主从热备
每个服务虚拟安装keepalived 虚拟一个VIP ,配置主从关系,当主挂了,直接走备机。
Keepalived虚拟VIP 地址 192.168.212.110
A 服务器 192.168.212.142
B 服务器 192.168.212.143

修改主keepalived信息
修改主Nginx服务器keepalived文件, /etc/keepalived/keepalived.conf
State 为MASTER,mcast_src_ip 改为本机ip

! Configuration File for keepalivedvrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务interval 2 #检测时间间隔weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {state MASTER #来决定主从interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样mcast_src_ip 192.168.212.142 #填写本机ippriority 100 # 节点优先级,主要比从节点优先级高nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1sauthentication {auth_type PASSauth_pass 1111}# 将 track_script 块加入 instance 配置块track_script {chk_nginx #执行 Nginx 监控的服务}virtual_ipaddress {192.168.212.110 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。}
}

修改从keepalived信息
修改主Nginx服务器keepalived文件, /etc/keepalived/keepalived.conf
State 为BACKUP

! Configuration File for keepalivedvrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务interval 2 #检测时间间隔weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {state BACKUP #来决定主从interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样mcast_src_ip 192.168.212.143 #填写本机ippriority 100 # 节点优先级,主要比从节点优先级高nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1sauthentication {auth_type PASSauth_pass 1111}# 将 track_script 块加入 instance 配置块track_script {chk_nginx #执行 Nginx 监控的服务}virtual_ipaddress {192.168.212.110 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。}
}

写入nginx_check.sh脚本 /etc/keepalived/nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi

注意该脚本一定要授权
chmod 777 nginx_check.sh

将keepalived和Nginx都开启,访问虚拟ip地址192.168.212.110,这个时候只会走主Nginx,当把主Nginx停掉时,会自动尝试重启,把主的keepalived停掉后,就会访问备机Nginx。

lvs+keepalived+nginx实现高性能负载均衡集群相关推荐

  1. lvs+keepalived+nginx实现高性能负载均衡集群 高性能jsp集群

    LVS-master:192.168.254.134 LVS-backup:192.168.254.135 LVS-VIP:192.168.254.88 nginx+tomcat:192.168.25 ...

  2. [运维] 高性能负载均衡集群

    1.Nginx+Tomcat搭建高性能负载均衡集群 https://blog.csdn.net/wang379275614/article/details/47778201 2.使用Tomcat-re ...

  3. 青蛙学Linux—高性能负载均衡集群软件LVS

    LVS,即Linux Virtual Server的简写,是目前非常流行的一款实现负载均衡集群的软件.该项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.LVS官网http: ...

  4. Nginx+Tomcat搭建高性能负载均衡集群的实现方法

    一.    目标实现高性能负载均衡的Tomcat集群: 二.步骤 1.首先下载Nginx,要下载稳定版: 2.然后解压两个Tomcat,分别命名为apache-tomcat-6.0.33-1和apac ...

  5. Nginx+Tomcat搭建高性能负载均衡集群

    2019独角兽企业重金招聘Python工程师标准>>> 一.       工具 nginx-1.8.0 apache-tomcat-6.0.33 二.    目标 实现高性能负载均衡 ...

  6. IPVS-DR+keepalived实现高可用负载均衡集群

    IPVS-DR+keepalived高可用负载均衡集群方案前端的负载调度器采用双机热备方式,Keepalived主要用来监测RealServer的健康状态以及主负载均衡器和备份负载均衡器之间的故障转移 ...

  7. nginx+keepalived 高可用兼负载均衡集群

    Nginx是一个高性能的web服务器,同时也是一个优秀的反向代理服务器,本文利用两台Dell R720 构建一个高可用兼负载均衡的Linux web集群. 原理 通过nginx分别搭建两个web服务器 ...

  8. nginx+tomcat配置负载均衡集群

    一.Hello world 1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,方法如下: 首先去apache tomcat官网下载一个tomcat解压版. 解压该压缩包,生成 ...

  9. Nginx + Tomcat 配置负载均衡集群

    1.前期环境准备 准备两个解压版tomcat,如何同时启动两个tomcat,请看我的另一篇文章<一台机器同时启动多个tomcat>. nginx官网下载解压版nginx. 创建一个简单的w ...

最新文章

  1. LNMP(nginx防盗链,访问控制,解析php相关配置,Nginx代理,常见502问题)
  2. 防止ACCESS数据库被下载的9种方法
  3. PhpWord的autoload.php文件及目录的生成方式
  4. php windows 下载,PHPForWindows官方下载_PHPForWindows最新版_PHPForWindows7.2.1官方最新版-华军软件园...
  5. 汇编语言(第2版)2011040201
  6. 音视频开发基础(二)常用的直播协议
  7. 2019.7.24循环结构以及昨天的预习题。
  8. Java作业-多线程
  9. vscode ---- 插件
  10. 取消xp开机默认登陆账户
  11. Qt_加速编译 快速编译 make -j4
  12. 制作软件工程师风格的qq头像
  13. 升级mac系统正在计算机,USB对拷线在苹果Mac系统的升级说明
  14. Java 泛型 <? super T> <? extend T> 的通俗理解
  15. python中英文字母和中文汉字所占的字节
  16. SAP 安全证书的导入
  17. 【硬十宝典目录】——1、电源类(更新中~)
  18. Resco MobileForms Toolkit 2010的破解
  19. [leetcode/lintcode 题解] 谷歌面试题:基因相似度
  20. OE链面临区块链生态新机遇

热门文章

  1. 你可能不知道的BIM的十六个错误理念
  2. 第15课:Spark Streaming源码解读之No Receivers彻底思考
  3. Trackingnet Ubantu 解压 / linux.zip.001, linux.zip.002, linux.zip.003文件解压方法
  4. sigmoid函数求导-只要四步
  5. 三端稳压器W7805稳压性能的研究
  6. Java工程师学习指南(初级篇)
  7. python数值取反问题~
  8. 计算机基础知识教程打印a4纸,学会这9个Word打印方法,不浪费任何一张A4纸,涨知识了...
  9. SpringBoot项目中ShiroConfig 配置文件无法注入bean和使用@Value注解的问题
  10. 中国计算机学会培训会议,CCF专委培训研讨会在北京举行