Keepalived+LVS+Nginx负载均衡之高可用

2024-09-01 00:48

本文主要是介绍Keepalived+LVS+Nginx负载均衡之高可用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


  一、Keepalived介绍

   Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Server)使用,其功能类似于heartbeat,解决单机宕机的问题。

 


 

  二、Keepalived技术原理

   keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。通过VRRP协议结合LVS,对组群服务器监控情况,若master出现宕机情况,则将VIP漂移到backup机上。实现了分布式系统高可用。可以理解为:keepalived是LVS的管理软件,根据监控情况,将宕机服务器从ipvsadm移除掉。

 


 

  三、Keepalived+LVS+Nginx实现系统高可用

  

服务器IP地址说明
虚拟IP192.168.1.120:80 
主机192.168.1.104:80 
备机192.168.1.103:80 
Web站点A192.168.1.101:8081不同端口
Web站点B192.168.1.101:8082不同端口

 

 

  

 

 

  1、安装ipvsadm,CentOS7自带安装包,通过yum进行安装。实现系统支持LVS

?
1
yum install ipvsadm

  2、安装Keepalived软件,并将keepalived设置开机启动

?
1
yum install Keepalived
?
1
systemctl enable keepalived

  

  3、进行Keepalived.conf配置,如果是MASTER机,将state BACKUP改为state MASTER。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
vim /etc/keepalived/keepalived.conf
#配置的内容
! Configuration File for keepalived
global_defs {
    notification_email {
      xxx@126.com #收到通知的邮件地址
    }
    notification_email_from XX@126.com
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
vrrp_script monitor_nginx{
    script "/usr/local/etc/keepalived/script/monitor_nginx.sh"
    interval 1
    weight -15
}
vrrp_instance VI_1 {
     state BACKUP
     interface eno16777736
     virtual_router_id 51
     priority 80
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         192.168.1.120
     }
     track_script {
         monitor_nginx
     }
}
virtual_server 192.168.1.120 80 {
     delay_loop 6
     lb_algo wrr
     lb_kind DR
     persistence_timeout 50
     protocol TCP
     real_server 192.168.1.103 80 {
         weight 1
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 80
         }
     }
     real_server 192.168.1.104 80 {
         weight 5
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 80
         }
     }
}

  4、配置监控shell脚本

?
1
2
3
4
5
6
7
8
9
10
(1)创建:vim /usr/local/etc/keepalived/script/monitor_nginx.sh<br><br>(2)SHELL文件内容<br>#!/bin/bash 
if [ "$(ps -ef | grep " nginx: master process "| grep -v grep )" == "" ]
then 
     systemclt start nginx.service
     sleep 5   
   if [ "$(ps -ef | grep " nginx: master process "| grep -v grep )" == ""
   then  
     killall keepalived 
   fi 
fi

  现在我们对nginx进行配置:

安装Nginx和配置

  1、Nginx介绍

  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的工程师Igor Sysoev研发,供俄国大型的入口网站Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

 

  2、安装部署  

  在CentOS7通过命令行安装Nginx服务器。

  (1)添加Nginx仓储,添加 epel repository

sudo yum install epel-release

  (2)检查是否已安装过nginx 

find -name nginx

  (3)如果有安装则删除

yum remove nginx

  (4)安装nginx

sudo yum install nginx

  (5)启动nginx

sudo systemctl start nginx
sudo systemctl enable nginx #可用

  (6)将nginx 设置为启动系统自动启动nginx

echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local

  (7)查看本机IP,为了后续配置nginx.conf所用

ifconfig

  (8)修改nginx.conf配置文件

cd /etc/nginx/ #定位到nginx安装目录
vim nginx.conf #通过vim打开nginx.conf配置文件进行配置

  (9)主要配置节点,192.168.119.1:8081 和 192.168.119.1:8082 分别部署在 IIS7的两个ASP.NET MVC 开发的站点(在另一台电脑),设计软件架构解决方案后续介绍。

复制代码
upstream 192.168.119.128{server 192.168.119.1:8081;server 192.168.119.1:8082;
}server{listen   80;server_name  192.168.119.128;location /{ proxy_pass http://192.168.119.128;  } }

(10)重启nginx服务

service nginx restart


如下对功能进行验证测试。

 


 

  四、实现测试展示

   1、访问系统情况:通过VIP(192.168.1.120)访问系统页面。因为设置了轮询调度,所以刷新页面访问不同站点。

        

 

  2、将 MASTER(192.168.1.104)关机前后,查看相关VLS情况:

  (1)关机前:

  (2)关机后:

  我们看到将104服务器从 LVS移除掉。此时则将后续请求转发到103服务器。

 

  3、关机后,BACKUP服务器 keepalived日志显示无法连接104,并移除掉

  

  5、开机后,将自动检测到服务器正常,并加入LVS中。

  


 

这篇关于Keepalived+LVS+Nginx负载均衡之高可用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125470

相关文章

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

SpringCloud负载均衡spring-cloud-starter-loadbalancer解读

《SpringCloud负载均衡spring-cloud-starter-loadbalancer解读》:本文主要介绍SpringCloud负载均衡spring-cloud-starter-loa... 目录简述主要特点使用负载均衡算法1. 轮询负载均衡策略(Round Robin)2. 随机负载均衡策略(

Nginx配置location+rewrite实现隐性域名配置

《Nginx配置location+rewrite实现隐性域名配置》本文主要介绍了Nginx配置location+rewrite实现隐性域名配置,包括基于根目录、条件和反向代理+rewrite配置的隐性... 目录1、配置基于根目录的隐性域名(就是nginx反向代理)2、配置基于条件的隐性域名2.1、基于条件

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配