ngxin+keepalived 双机热备(nginx的高可用)

本文介绍了如何通过Nginx和Keepalived搭建双机热备环境,确保Web服务的高可用性。配置包括Nginx的负载均衡设置和Keepalived的安装与配置,通过VRRP协议动态抢占虚拟IP,实现故障切换。当主服务器宕机时,虚拟IP会自动切换到备用服务器,保证服务不间断。同时,文章提到了数据同步方案和数据传输层的冗余策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 nginx+keepalived双机热备的目的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EbeOKoxb-1629896215704)(https://raw.githubusercontent.com/linglongQaQ/cloudimg/master/img/image-20210506112432917.png)]

在访问过程中,如果nginx服务器挂掉了,则web1 和web2中的服务都无法访问,保证nginx的高可用性,使用nginx+keepalived集群保证ngxin的高可用

在这里插入图片描述

在这里插入图片描述

2 搭建环境

系统:centos7.6

虚拟机:两台(192.168.92.144,192.168.92.145)

软件:ngxin,keepalive

2.1 安装ngxin

#1 切换到nginx的目录,设置ng的默认配置
./configure

#2 安装
make

make install

2.2 配置nginx的负载均衡(两台机器一样)

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    

    upstream web{    
        # 名为web的反向代理群组
        #访问web服务的服务器ip
        server 192.168.92.144;  
        server 192.168.92.145;
    }
    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

	root    web;


	location / {

	if ( $request_uri = "/" ) {
                ##找到代理地址
				proxy_pass http://web;
                rewrite "/" /html/home.html permanent;
            }
	}
        
	location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|woff|ttf)$ {

                root  /usr/local/nginx/web/;
        }
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}


2.2 安装keepalive

#1 使用yum 安装
yum install keepalive -y

2.3 修改配置文件

##修改keepalive的配置文件
vi /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   #邮箱地址
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   ###host主机地址 要进行映射才能找到主机  类似于  127.0.0.1 LVS_DEVEL0 唯一
   router_id LVS_DEVEL0
   vrrp_skip_check_adv_addr
   ###vrrp-_strict 要注释掉否则无法ping通虚拟ip
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

###keepalive监测nginx服务状态的脚本
###这里的'{'要换行顶格,不能有空格
vrrp_script chk_ng
{
	###执行脚本所在的位置 要和文件地址位置一致
    script "/usr/local/src/ngx_check.sh"	 
    #检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
    interval 2 
    #权重
    weight 2
}


vrrp_instance VI_1 {
	##主备模式下的名称   备用节点改为backup
    state MASTER
    ###绑定的网卡名称  我这里是ens33  根据自己的网卡名称进行绑定
    interface ens33
    ###集群模式先的唯一id  主备节点的id要保持一致
    virtual_router_id 51
    ##权重 权重越大 访问次数越多  住节点的权重应大于备用节点的权重
    priority 100
    advert_int 1
    ##授权  和备用节点保持一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    ###虚拟主机ip   在虚拟机的环境中  该ip应该和master的ip在同一网段
    virtual_ipaddress {
        192.168.92.100
    }
    ###调用监测脚本
    track_script {
    	##对应的脚本名称
		chk_ng
    }
}

说明:

**"###"**的说明容易踩坑,在进行配置时需注意

“##”和“#”的注释,是对配置的说明,较灵活

编写监测nginx状态的脚本

##1 创建脚本文件(文件位置看灵活变动,要和keepalive.conf中的脚本文件所在位置保持一致)
cd /usr/local/src/

touch ngx_check.sh
##2 编写脚本

#!/bin/bash
#当nginx进程不存在时,就干掉keepalived
 
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
 then
 killall keepalived
fi
##3 给脚本授权,不搜授权,脚本无法执行

chmod 775 ngx_check.sh

注:

1 在编写脚本时,注意命名;脚本内容是 查看ngxin进程是否还存在,使用ps -ef|grep nginx查看进程会有三个进程;如果脚本文件命名为nginx_check.sh,那么使用ps查看nginx时就会有四个进程,导致脚本不执行

2 当脚本授权后,先手动执行一次,若能将keepalive服务停掉,则证明脚本编写成功;若出现“killall命令找不到,则使用yum 安装killall命令 yum -y install psmisc

3 测试

##1 两台机器分别启动nginx和keepalive  先后顺序(先启动ng,再启动keepalive服务)

/usr/local/nginx/sbin/nginx

systemctl start keepalived.service

##2 在浏览器输入虚拟IP访问网站,查看master机器的ip,绑定的是虚拟ip,而slave节点的机器没有绑定虚拟ip,若slave节点也有虚拟ip,则表明配置文件有误,需检查keepalive.conf的配置文件


##3 模拟服务器宕机:手动停止nginx服务器,在浏览器继续访问虚拟ip,依然能访问到网站,证明环境搭建成功;此时slave节点机器上的网卡绑定的虚拟IP,当master启动后,虚拟IP又被抢夺回去,绑定在master节点的网卡上





在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4 其他

数据同步方案:mysql做主从结构,保证数据的可用性和数据的一致性,尊从CAP理论原则

数据传输层:即从采集端到服务端,可以采用冗余方式保证数据的可靠性传输,即准备多台机器保证数据的正常传输,同时保证服务宕机后,服务在其他机器上的切换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值