99网
您的当前位置:首页keepalived双机热备nginx的配置方法

keepalived双机热备nginx的配置方法

来源:99网
keepalived双机热备nginx的配置⽅法

nginx⽬前是我最常⽤的反向代理服务,线上环境为了能更好的应对突发情况,⼀般会使⽤keepalived双机热备nginx或者使⽤docker跑nginx集群,keepalived是⽐较传统的⽅式,虽然⽤docker跑nginx集群更⽅便,但传统的⽅式总是有他的可取之处,并且多学⼀些东西也很好。以后也会写如何使⽤docker跑nginx集群。  环境准备:

  2台centos: 192.168.0.105 和192.168.0.118, 虚拟IP(VIP)为192.168.0.119配置keepavlived

  分别在105和118上安装keepalived

yum install keepalived

  准备⼼跳⾓本

  keepalived的配置相当灵活,可以定时执⾏⾓本命令,⽤于⼼跳检查,⽐如,我们访问nginx发现nginx不可访问时,就关闭keepalived,从⽽切换到从nginx来实现不间断的服务⽀持。

vi /etc/keepalived/keepalived.conf

#!/bin/bash

count=0

for (( k=0; k<2; k++ ))do

check_code=$( curl --connect-timeout 3 -sL -w \"%{http_code}\\\\n\" http://localhost:81 -o /dev/null ) if [ \"$check_code\" != \"200\" ]; then count=count +1 continue else

count = 0 break fidone

if [ \"$count\" != \"0\" ]; then killall keepalived exit 1else exit 0fi

  设置118机器上的keepalived为主节点,105机器上的keepalived为从节点,它们两个的配置⽂件差不太多

vi /etc/keepalived/keepalived.conf

  118机器keepalived的配置⽂件

! Configuration File for keepalivedvrrp_script chk_nginx {

script \"/etc/keepalived/check_nginx.sh\" # ⼼跳检测⾓本 interval 2 #脚本执⾏间隔,每2s检测⼀次

weight -5 #脚本结果导致的优先级变更,检测失败(脚本返回⾮0)则优先级 -5 fall 3 #检测连续2次失败才算确定是真失败。会⽤weight减少优先级(1-255之间) rise 2 #检测1次成功就算成功。但不修改优先级}

vrrp_instance VI_1 {

state MASTER #指定keepalived的⾓⾊,MASTER表⽰此主机是主服务器,BACKUP表⽰此主机是备⽤服务器 interface eth0 #指定监测⽹络的接⼝。实例绑定的⽹卡,因为在配置虚拟IP的时候必须是在已有的⽹卡上添加的 mcast_src_ip 192.168.0.118 ## 发送多播数据包时的源IP地址

virtual_router_id 51 #虚拟路由标识,MASTER和BACKUP必须是⼀致的 priority 100 #定义优先级,数字越⼤,优先级越⾼

advert_int 2 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #设置验证类型和密码。主从必须⼀样

auth_type PASS #设置vrrp验证类型,主要有PASS和AH两种

auth_pass 1111 #设置vrrp验证密码,在同⼀个vrrp_instance下,MASTER与BACKUP必须使⽤相同的密码才能正常通信 }

virtual_ipaddress {

192.168.0.119 #VRRP 虚拟地址 如果有多个VIP,换⾏填写 }

track_script {

chk_nginx # ⼼跳脚本,即在 vrrp_script 部分指定的名字 }}

115机器上的⾓本对上⾯的⾓本稍做变动即可

改变 state MASTER -> state BACKUP,priority 100 -> priority 90,mcast_src_ip 192.168.0.118 -> mcast_src_ip 192.168.0.105。其他的地⽅保持不变,是不是很简单。

! Configuration File for keepalivedvrrp_script chk_nginx {

script \"/etc/keepalived/check_nginx.sh\" interval 2 weight -5}

vrrp_instance VI_1 { state BACKUP # 修改 interface eth0

mcast_src_ip 192.168.0.105 # 修改 为本机IP virtual_router_id 51 priority 90 #数字变⼩ advert_int 2 authentication { auth_type PASS

auth_pass 1111 }

virtual_ipaddress { 192.168.0.119 }

track_script { chk_nginx }}

到这⾥keepalived的简单配置就完成了下⾯就启动keepalived

service keepalived start

安装Nginx

查看nginx的依赖库是否完整

rpm -qa zlib

rpm -qa zlib-develrpm -qa openssl

rpm -qa openssl-develrpm -qa pcre

rpm -qa pcre-develrpm -qa gcc

如果没有就安装

yum -y install gcc zlib zlib-devel openssl openssl-devel pcre-devel

下载并解压nginx

mkdir nginxsrccd nginxsrc/

wget http://nginx.org/download/nginx-1.13.9.tar.gztar zxvf nginx-1.13.9.tar.gzcd nginx-1.13.9/

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module

安装在/usr/local/nginx/sbin/nginx ⽬录下

make&&make install

执⾏成功后会显⽰leaving directory

启动

/usr/local/nginx/sbin/nginx

检查

ps aux|grep nginx

开机启动

vi /etc/rc.local

添加⼀⾏

/usr/local/nginx/sbin/nginx

因为我的机器上80端⼝被别的应⽤占⽤了,所以就修改105和118的 nginx.conf 把端⼝80 修改为81

vi /usr/local/nginx/conf/nginx.conf

分别个性105 和119上的index.html 加上⼀个ip以便们们识别打开的是哪个ip上的index.html

vi /usr/local/nginx/html/index.html

nginx重新加载配置

/usr/local/nginx/sbin/nginx -s reload

好了,我们访问⼀下

curl 192.168.0.119:81

返回的html是 118机器上的index.html

现在我们把118的nginx停⽌

/usr/local/nginx/sbin/nginx -s stop

这时118上的keepalived的⼼跳检查⾓本发现nginx⽆法访问会把keepalived关闭,然后转向从节点我们再访问⼀下119

curl 192.168.0.119:81

在118上重新启动nginx和keepalived再访问119 返回的⽹址是118上的index.html总结

以上所述是⼩编给⼤家介绍的keepalived双机热备nginx的配置⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!

因篇幅问题不能全部显示,请点此查看更多更全内容