nginx集群_8、nginx配置高可用集群

1、什么是nginx高可用集群?

375a30146143d4299e9cede7e355168f.png

(1)需要两个 nginx 服务器

(2)需要 keepalived

(3)需要虚拟 ip

2、配置高可用的准备工作

(1)需要两个服务器 192.168.168.129 和 192.168.168.131。

(2)下载需要准备的依赖

1、安装 pcre

第一步:下载 pcre 的压缩文件依赖

wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz

第二步:解压压缩文件

tar -xvf pcre-8.37.tar.gz

第三步:./configure 完成后,回到 pcre 目录下执行 make , 最后执行 make install

第四步:查看 pcre 是否按照成功

pcre-config --version

2、安装openssl、zlib、gcc 依赖

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

3、安装 nginx

1)移动下载好的nginx-1.12.2.tar.gz

cd /usr/src/
把在windows中的下载好的nginx-1.12.2.tar.gz拖到xshell的命令框进行复制。

2)解压

tar -xvf nginx-1.12.2.tar.gz

3)安装

cd nginx-1.12.2/
./configure
make && make install

4)查看是否安装成功

cd /usr/local
ls
检测使用存在 nginx

5)安装成功后,在usr多出来一个文件夹 local/nginx,在 nginx 中的 sbin 中有nginx启动脚本

cd /usr/local/nginx/sbin

6)启动nginx

cd /usr/local/nginx/sbin
./nginx

7)查看nginx运行进程

ps -ef |grep nginx

8)本机访问linux的ip地址来访问nginx。

4、安装 keepalived

(1)使用 yum 命令进行安装

yum install keepalived -y

(2)检查是否安装成功

rpm -q -a keepalived

(3)安装之后,在etc里面生成目录 keepalived ,里面有文件 keepalived.conf 配置文件。

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

3.1 主服务器配置

(1)在 /etc/keepalived/keepalived.conf,修改配置文件

global_defs {
   notification_email  {
       acassen@firewall.loc
       failover@firewall.loc
       sysadmin@firewall.loc
   }
   notification_email_form  Alexandre.Cassen@firewall.loc
   smtp_server 192.168.168.129
   smtp_connect_timeout  30
   router_id nginx_01  #标识本节点的名称,通常为hostname
}

## keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。
##如果脚本执行结果为0,并且weight配置的值大于0,则优先级相应的增加。如果脚本执行结果非0,
##并且weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中priority对应的值。
vrrp_script chk_nginx {
       script "/etc/keepalived/nginx_check.sh"
       interval 2  #每2秒检测一次nginx的运行状态
       weight -20  #失败一次,将自己的优先级-20
}

vrrp_instance VI_1 {
    state MASTER                  # 状态,主节点为MASTER,备份节点为BACKUP
    interface ens33              # 绑定VIP的网络接口,通过ifconfig查看自己的网络接口,网卡名称
    virtual_router_id 51          # 虚拟路由的ID号,两个节点设置必须一样,可选IP最后一段使用,相同的VRID为一个组,他将决定多播的MAC地址
    priority 100                  # 节点优先级,值范围0~254,MASTER要比BACKUP高
    advert_int 1                  # 组播信息发送时间间隔,两个节点必须设置一样,默认为1秒
    # 设置验证信息,两个节点必须一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP,两个节点设置必须一样。可以设置多个,一行写一个
    virtual_ipaddress {
        192.168.168.50
    }

}

(2)编写脚本文件,放到/usr/local/src/里面

#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx #尝试重新启动nginx
    sleep 2  #睡眠2秒
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        killall keepalived #启动失败,将keepalived服务杀死。将vip漂移到其它备份节点
    fi
fi

3.2 从服务器配置

(1)在 /etc/keepalived/keepalived.conf,修改配置文件

global_defs {
   notification_email  {
       acassen@firewall.loc
       failover@firewall.loc
       sysadmin@firewall.loc
   }
   notification_email_form  Alexandre.Cassen@firewall.loc
   smtp_server 192.168.168.131
   smtp_connect_timeout  30
   router_id nginx_02  #标识本节点的名称,通常为hostname
}

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 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.168.50
    }

}

(2)编写脚本文件,放到/usr/local/src/里面

#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx #尝试重新启动nginx
    sleep 2  #睡眠2秒
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
        killall keepalived #启动失败,将keepalived服务杀死。将vip漂移到其它备份节点
    fi
fi

(3)把两台服务器的 nginx 和 keepalived 都启动

分别在/usr/local/nginx/sbin,运行命令启动nginx

./local

再运行keepalived

systemctl start keepalived.service

配置完成后,可以通过命令来检测虚拟ip是否配置成功

ip add

4、最终测试

(1)在浏览器地址栏输入 虚拟ip地址 192.168.17.50

579f488f177105d78feab007075070a6.png

从服务器输入 ip add ,测试虚拟ip是否自动绑定

a4af3e6f3d095b74d0e02c0ba74b89b0.png

(2)把主服务器的 nginx 和keepalived 都停止,检测是否可以访问到 虚拟ip地址 192.168.17.50。

systemctl stop keepalived.service
cd /usr/local/nginx/sbin/
./nginx -s stop

71dbe55a758839a1dc36b8d88044b137.png

从服务器输入 ip add ,测试虚拟ip是否自动绑定

091816dde7b46287a7897acf7f18c125.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值