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

keepalived + nginx 实现高可用集群方案

2017-06-05 20:48 561 查看

准备工作

两台虚拟机如:

10.211.55.8

10.211.55.10

准备安装文件

nginx-1.13.1.tar.gz

pcre-8.36.zip

keepalived-1.2.22.tar.gz

安装
nginx

参考安装Linux一文,在两台服务器安装nginx

10.211.55.8
称为
nginx1
<br/>
10.211.55.10
称为
nginx2


安装
keepalived

解压文件

cd /opt/software
tar -zxvf keepalived-1.2.22.tar.gz
cd keepalived-1.2.22


安装

./configure --prefix=/opt/keepalived
make && make install


处理配置文件和可执行文件

cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /opt/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
ln -s /opt/keepalived/sbin/keepalived /usr/sbin/


启动服务

/etc/init.d/keepalived start


按照相同的步骤在另一台服务器安装
keepalived


修改配置文件

vim /etc/keepalived/keepalived.conf


! Configuration File for keepalived

global_defs {
# keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTP,也可配置邮件发送
router_id 10.211.55.8
}

vrrp_script chk_nginx {
# 运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
script "/opt/shell/nginx_check.sh"
# 检测时间间隔
interval 2
# 如果条件成立的话,则权重 -20
weight -20
}

# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
# 来决定主从(从:BACKUP)
state MASTER
# 绑定虚拟 IP 的网络接口,根据自己的机器填写
interface eth0
# 虚拟路由的 ID 号, 两个节点设置必须一样
virtual_router_id 121
# 填写本机ip
mcast_src_ip 10.211.55.10
# 节点优先级,主节点比从节点优先级高
priority 100
# 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
nopreempt
# 组播信息发送间隔,两个节点设置必须一样,默认 1s
advert_int 1

authentication {
auth_type PASS
auth_pass 1111
}

# 将 track_script 块加入 instance 配置块
track_script {
#执行 Nginx 监控的服务
chk_nginx
}

virtual_ipaddress {
# 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
10.211.55.100
}
}

以上配置为主节点配置,从节点类似,有区别的已经标明。下面是监控服务脚本内容

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/opt/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

定义变量,此变量为检查nginx进程脚本,如果进程为0,则启动nginx服务,再次检查nginx服务,如果仍没启动 ,杀掉所有keepalived的进程。

测试高可用

打开浏览器,输入虚拟ip
10.211.55.100


显示的是
nginx1
的页面

此时可以停掉一台nginx服务器

/opt/nginx/sbin/nginx -s stop


这时候,单独访问这台服务器,发现还是可以的,也就是说,
keepalived
监控到
nginx
服务down掉了,然后自动重启这台机器了。

这时再停掉一台
keepalived
服务器

/etc/init.d/keepalived stop


刷新浏览器,显示的将是另外一台
nginx


这时就可以证明已经实现**
高可用
**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: