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启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx