当前位置:   article > 正文

生产环境nginx集群高可用方案_nginx高可用方案比较

nginx高可用方案比较

搭建架构图

在这里插入图片描述

第一步:安装nginx

1、下载openssl主要用于ssl模块加密,支持htps

wget https://www.openssl.org/source/openssl-1.0.2s.tar.gz
  • 1

2、下载 pcre来实现地址重定向,地址重写功能和localtion指令以及正则表达式的支持

wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
  • 1

3、下载zlib gzip压缩模块

wget https://zlib.net/zlib-1.2.11.tar.gz
  • 1

4、下载nginx

wget http://nginx.org/download/nginx-1.17.1.tar.gz
  • 1

5、使用tar解压多有的文件

ls *.tar.gz | xargs -n1 tar xzvf
  • 1

6、编译安装

./configure \
   --with-openssl=../openssl-1.0.2s \
   --with-pcre=../pcre-8.43 \
   --with-zlib=../zlib-1.2.11 \
   --with-pcre-jit --user=admin \
   --prefix=/home/admin/nginx \
   --with-http_ssl_module \
   --with-http_v2_module 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

7、编译

make
  • 1

8、安装

make install
  • 1

9、设置权限

sudo chown root nginx
  • 1
sudo chmod u+s nginx
  • 1

10、启动nginx

./nginx
  • 1

如果出现以下错误

nginx: [emerg] getpwnam("admin") failed
  • 1

检查用户组是否存在admin

cat /etc/group
  • 1

创建用户组admin和创建用户

/usr/sbin/groupadd -f admin
  • 1
/usr/sbin/useradd -g admin admin
  • 1

修改admin的密码,需要输入两次密码:Drxm_24mysql

passwd admin 
  • 1

11、查看nginx是否启动成功

ps -ef | grep nginx
  • 1

第二步:安装keepalived

1、下载keepalived

wget http://keepalived.org/software/keepalived-2.0.18.tar.gz
  • 1

2、解压文件

tar -zxvf keepalived-2.0.18.tar.gz  -C /usr/local
  • 1

3、进入keepalived的目录并进行编译

 cd /usr/local/keepalived-2.0.18/
  • 1
./configure --prefix=/usr/local/keepalived/
  • 1

如果出现这个错误

!!! OpenSSL is not properly installed on your system. !!!

执行此命令,然后在编译

 yum -y install openssl-devel
  • 1

4、进行安装

make && make install
  • 1

5、进入keepalived的配置文件,修改配置文件

global_defs {
    notification_email {
        #mr@mruse.cn       # 指定keepalived在发生切换时需要发送email到的对象,一行一个
        #sysadmin@firewall.loc
    }
    notification_email_from xxx@163.com   # 指定发件人
    smtp_server smtp@163.com              # smtp 服务器地址
    smtp_connect_timeout 30               # smtp 服务器连接超时时间
    router_id LVS_1 # 必填,标识本节点的字符串,通常为hostname,但不一定非得是hostname,故障发生时,邮件通知会用到
    }

vrrp_script chk_nginx {                    #详细看下面
    script "/etc/keepalived/tomcat_check.sh"            #检测服务shell
    interval 2                                    #每个多长时间探测一次
    weight -20                                            #每个多长时间探测一次                                                
}

_instance VI_1 {  # 实例名称
    state MASTER      #  必填,可以是MASTER或BACKUP,不过当其他节点keepalived启动时会将priority比较大的节点选举为MASTER
    interface ens33    #  必填, 节点固有IP(非VIP)的网卡,用来发VRRP包做心跳检测
    mcast_src_ip 172.16.1.139 #本机的ip,需要修改
    virtual_router_id 101 #  必填,虚拟路由ID,取值在0-255之间,用来区分多个instance的VRRP组播,同一网段内ID不能重复;主备必须为一样;
    priority 100      #  必填,用来选举master的,要成为master那么这个选项的值最好高于其他机器50个点,该项取值范围是1-255(在此范围之外会被识别成默认值100)
    advert_int 1      #  必填,检查间隔默认为1秒,即1秒进行一次master选举(可以认为是健康查检时间间隔)
    authentication {  #  必填,认证区域,认证类型有PASS和HA(IPSEC),推荐使用PASS(密码只识别前8位)
        auth_type PASS  # 默认是PASS认证
        auth_pass 1111 # PASS认证密码
    }
    virtual_ipaddress {
        172.16.1.100    #  必填,虚拟VIP地址,允许多个
    }
    track_script {         # 检测shell                            
        chk_nginx
    }
}
  • 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

6、修改备用机器的keepalived的机器

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
   router_id LVS_2
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
}

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 146
    mcast_src_ip 172.16.1.79
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script{
        chk_nginx
        }

    virtual_ipaddress {
        172.16.1.100
    }
}
  • 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

7、编辑chk_nginx脚本

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
    /home/admin/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

8、设置keepalived服务为开机自启动的服务

systemctl enable keepalived.service
  • 1

9、启动keepalived服务

service keepalived start
  • 1

10、测试虚拟IP

ip add
  • 1

在这里插入图片描述

11、使用vip访问,查看是否可以。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ORHkttj-1599736357339)(C:\Users\user\AppData\Roaming\Typora\typora-user-images\image-20200910191052847.png)]

当访问不通时,说明此方案失败。

注意此方案的前提条件是:服务器必须支持VIP(虚拟IP)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/103678
推荐阅读
相关标签
  

闽ICP备14008679号