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

搭建架构图

在这里插入图片描述

第一步:安装nginx

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

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

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

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

3、下载zlib gzip压缩模块

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

4、下载nginx

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

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

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

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 

7、编译

make

8、安装

make install

9、设置权限

sudo chown root nginx
sudo chmod u+s nginx

10、启动nginx

./nginx

如果出现以下错误

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

检查用户组是否存在admin

cat /etc/group

创建用户组admin和创建用户

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

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

passwd admin 

11、查看nginx是否启动成功

ps -ef | grep nginx

第二步:安装keepalived

1、下载keepalived

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

2、解压文件

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

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

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

如果出现这个错误

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

执行此命令,然后在编译

 yum -y install openssl-devel

4、进行安装

make && make install

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
    }
}

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
    }
}

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

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

systemctl enable keepalived.service

9、启动keepalived服务

service keepalived start

10、测试虚拟IP

ip add

在这里插入图片描述

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

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

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

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

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值