您的位置:首页 > 运维架构 > Nginx

nginx+keeplived实现高可用站点主备模式搭建

2017-05-10 14:45 666 查看
Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。

下载安装包

nginx下载地址:http://nginx.org/download/

keepalived下载地址:http://www.keepalived.org/software/

可根据需要下载对应的版本,我这里使用 nginx-1.6.2.tar.gz keepalived-1.2.18.tar.gz

两台centos 虚拟机:

192.168.1.236 和192.168.1.237

使用236作为master ,237作为backup

1)安装nginx

分别在236,237上面安装好nginx ,安装教程参见:http://blog.csdn.net/sunqingzhong44/article/details/68948980

2)安装keepalived

解压:

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

安装依赖包:

yum install -y openssl openssl-devel

编译安装:

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

make && make install

将keepalived加入系统服务:

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

ln -s /usr/local/sbin/keepalived /usr/sbin

ln -s /usr/local/keepalived/sbin/keepalived /sbin/

3)配置keepalived
查看两台虚拟机网卡

ip a





修改keepalived.conf文件:

vim /etc/keepalived/keepalived.conf

236(master节点)改为:

! Configuration File for keepalived

global_defs {
router_id 192.168.1.236  #当前机器的ip
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"  #这个文件在后面
interval 2
weight -20
}

vrrp_instance VI_1 {
state MASTER  #主节点
interface eth0  #配置要看上面ip a命令查询出的网卡
virtual_router_id 123
mcast_src_ip 192.168.1.236
priority 100  #优先级  主机大与备机
advert_int 1
authentication {
auth_type PASS
auth_pass manager   #主备配置为一样
}

track_script {  #执行上面配置的script
chk_nginx
}

virtual_ipaddress {
192.168.1.123  #虚拟ip
}
}

237(backup节点)改为:

! Configuration File for keepalived

global_defs {
router_id 192.168.1.237
}

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 123
mcast_src_ip 192.168.1.237
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass manager
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.123
}
}


脚本nginx_check.sh:

#!/bin/sh
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:

/usr/local/nginx/sbin/nginx #启动nginx

service keepalived start #启动keepalived

这时在使用ip a命令查看网卡:





可以看出主机236 已经虚拟成功,237备机无任何变化,这是我们可以将两台nginx 的index页面内容修改不一样,加入当前ip,再通过浏览器访问http://192.168.1.123,可以看到:



可以看出此时是236做出的相应:

我们将236的keepalived停掉 ,再次访问



nginx已经切换到了237,我们在重启236的keepalived ,我们会发现又会切换到236

因为脚步会自动重启nginx ,这里我们将236的nginx.conf文件加入一些错误内容,使nginx启动不起来,,停掉236nginx,这时脚步会将keepalilved也停掉 ,此时访问发现又会自动切换到237,将236 nginx.conf内容恢复,keepalived启动,又再次恢复到了236,则主备可以自动切换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: