nginx
主页 > 服务器 > nginx >

nginx搭建高可用集群的实现方法

2024-02-13 | 佚名 | 点击:

Keepalived+Nginx 高可用集群(主从模式)

集群架构图

1、准备两台装有Nginx虚拟机

2、都需安装Keepalived

1

yum install keepalived -y

查看是否安装成功

1

rpm -q -a keepalived

安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf  

3、完成高可用配置(主从配置)

修改/etc/keepalived/keepalivec.conf 配置文件

主服务配置:keepalivec.conf

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

global_defs {

     notification_email {

         acassen@firewall.loc

         failover@firewall.loc

         sysadmin@firewall.loc

     }

     notification_email_from Alexandre.Cassen@firewall.loc

     smtp_server 192.168.19.129

     smtp_connect_timeout 30

     router_id LVS_DEVEL

}

vrrp_script chk_http_port {

     script "/usr/local/src/nginx_check.sh"

     interval 2 #(检测脚本执行的间隔)

     weight 2

}

vrrp_instance VI_1 {

     state MASTER # 备份服务器上将 MASTER 改为 BACKUP

     interface ens33 //网卡

     virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同

     priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小

     advert_int 1

     authentication {

         auth_type PASS

         auth_pass 1111

     }

     virtual_ipaddress {

        192.168.19.50 # VRRP H 虚拟地址(非真实物理地址)

     }

}

从服务配置:keepalivec.conf

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

global_defs {

     notification_email {

         acassen@firewall.loc

         failover@firewall.loc

         sysadmin@firewall.loc

     }

     notification_email_from Alexandre.Cassen@firewall.loc

     smtp_server 192.168.19.129

     smtp_connect_timeout 30

     router_id LVS_DEVEL

}

vrrp_script chk_http_port {

     script "/usr/local/src/nginx_check.sh"

     interval 2 #(检测脚本执行的间隔)

     weight 2

}

vrrp_instance VI_1 {

     state BACKUP # 备份服务器上将 MASTER 改为 BACKUP

     interface ens33 //网卡

     virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同

     priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小

     advert_int 1

     authentication {

         auth_type PASS

         auth_pass 1111

     }

     virtual_ipaddress {

        192.168.19.50 # VRRP H 虚拟地址(非真实物理地址)

     }

}

在/usr/local/src 添加检测脚本,两台虚拟机都要添加

添加文件: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

把两台服务器上 nginx 和 keepalived 启动 重新启动 nginx 启动 keepalived:

1

systemctl start keepalived.service

检验keepalived是否启动成功

1

ps -ef | grep keepalived

最终测试 在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50访问

在master 输入 ip a 可以查看到

 停止主服务器仍可以访问从服务器

1

2

systemctl stop keepalived.service

docker stop mynginx

原文链接:
相关文章
最新更新