Nginx结合keepalived实现双机热备方案

前言 在生产环境上很多时候是以 Nginx 做反向代理...

首页 » 技术文档 » Nginx结合keepalived实现双机热备方案
Nginx结合keepalived实现双机热备方案

前言

在生产环境上很多时候是以 Nginx 做反向代理对外提供服务,但是一天Nginx难免遇见故障,如:服务器宕机。当 Nginx 宕机那么 所有对外提供的接口都将导致无法访问。虽然我们无法保证服务器百分之百可用,但是也得想办法避免这种悲剧,今天我们使用 keepalived 来实现 Nginx 的高可用。

一、双机热备方案是什么?

这种方案是国内企业中最为普遍的一种高可用方案,双机热备其实 就是指一台服务器在提供服务,另一台为某服务的备用状态,当一 台服务器不可用另外一台就会顶替上去。 本文我们通过keepalived来实现双机热备。keepalived是基于VRRP协议实现的保证集群高可用的一个服务软 件,主要功能是实现真机的故障隔离和负载均衡器间的失败切换, 防止单点故障。

二、使用步骤

1.环境准备

准备两台Nginx主机,主Nginx的ip为192.168.66.100,备Nginx的服务器ip为192.168.66.101.还有一个Lvs虚拟VIP(这个不需要特别准备,在配置文件写上就可,但主备Nginx服务器需要特别准备),Lvs虚拟Vip为192.168.66.99.

2.具体操作

在两台虚拟机上分别执行以下命令,安装keepalived

1

yum install -y keepalived

现在对主Nginx进行操作,修改keepalived.conf文件,直接把文件中原有的内容删除,粘贴并修改以下内容。其中主备Nginx的virtual_router_id必须一样,可以直接用代码里的,不用修改,mcast_src_ip必须为Nginx宿主机的ip地址(如主Nginx的为192.168.66.100),virtual_ipaddress为Lvs虚拟Vip192.168.66.99

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

! Configuration File for keepalived

vrrp_script chk_nginx {

   script "/etc/keepalived/nginx_check.sh"

   interval 2

   weight -20

}

vrrp_instance VI_1 {

   state MASTER

   interface ens33

   virtual_router_id 121

   mcast_src_ip 192.168.66.100

   priority 100

   nopreempt

   advert_int 1

   authentication {

     auth_type PASS

     auth_pass 1111

   }

   

   track_script {

     chk_nginx

   }

   virtual_ipaddress {

     192.168.212.110

   }

}

现在对从Nginx进行操作,修改keepalived.conf文件,直接把文件中原有的内容删除,粘贴并修改以下内容。其中主备Nginx的virtual_router_id必须一样,可以直接用代码里的,不用修改,mcast_src_ip必须为Nginx宿主机的ip地址(如主Nginx的为192.168.66.101),virtual_ipaddress为Lvs虚拟Vip192.168.66.99

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

! Configuration File for keepalived

vrrp_script chk_nginx {

   script "/etc/keepalived/nginx_check.sh"

   interval 2

   weight -20

}

vrrp_instance VI_1 {

   state BACKUP

   interface ens33

   virtual_router_id 121

   mcast_src_ip 192.168.66.100

   priority 100

   nopreempt

   advert_int 1

   authentication {

     auth_type PASS

     auth_pass 1111

   }

   

   track_script {

     chk_nginx

   }

   virtual_ipaddress {

     192.168.66.99

   }

}

Nginx+keepalived实现高可用
写入nginx_check.sh脚本 /etc/keepalived/nginx_check.sh.输入命令

1

vim /etc/keepalived/nginx_check.sh

1

2

3

4

5

6

7

8

9

#!/bin/bash

A=`ps -C nginx –no-header |wc -l`

if [ $A -eq 0 ];then

   /usr/local/nginx/sbin/nginx

   sleep 2

   if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

     killall keepalived

   fi

fi

  • 运行keepalived和Nginx
    这里给出运行和停止keepalived的命令,Nginx大家自行运行

1

2

service keepalived start

service keepalived stop

如果在启动keepalived的时候报错:

Nginx结合keepalived实现双机热备方案

当你在浏览器输入192.168.66.99的时候,打开的是nginx的页面或者服务,就说明双机热备就成功了

总结

到此这篇关于Nginx结合keepalived实现双机热备方案的文章就介绍到这了,更多相关Nginx keepalived双机热备内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

上一篇: 已经是第一篇了

下一篇: