一、环境配置
nginx_master:192.168.1.128
nginx_slave :192.168.1.129
vip :192.168.1.130
网站服务器:192.168.1.144
二、安装
1)安装keepalived
1.安装依赖
yum install kernel-* gcc make openssl-*
2.下载keepalived安装包
wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz
3.解压
tar xvzf keepalived-1.2.19.tar.gz
cd keepalived-1.2.19
4.配置
./configure --sysconfdir=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-504.el6.x86_64
5.编译安装
make && make install
6.验证安装是否正确
keepalived -v
7.设置开机启动
chkconfig keepalived on
2)安装nginx
官方nginx yum源:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
enabled=1
gpgcheck=0
yum源设置好后直接安装即可:
yum install nginx
chkconfig nginx on
三、配置
1)两台主机nginx的配置(完全一样)
#vim /etc/nginx/conf.d/upstream.conf
upstream nginx_80 {
server 192.168.1.144:80;
ip_hash;
}
#vim /etc/nginx/conf.d/server.conf
server {
listen 80;
server_name 192.168.1.130;
location / {
proxy_pass http://nginx_80;
}
location /nginx_status{
stub_status on;
access_log off;
allow 127.0.0.1;
# 要允许公司ip访问nginx status
allow 192.168.1.0/24;
deny all;
}
}
2)nginx_master的keepalived配置
#vim /etc/keepalived/keepalived.conf
global_defs {
router_id nginx-ha1
}
vrrp_script check_nginx {
# 检查nginx状态的脚本
script "/data/script/check_nginx.sh"
# 执行间隔2秒
interval 2
}
vrrp_instance VI_1 {
# 两台主机都是BACKUP
state BACKUP
interface eth0
# 同一keepalived集群的virtual_router_id 必须相同,默认51
virtual_router_id 55
# 主的优先级高
priority 100
advert_int 1
# 不抢占:如果集群里已存在MASTER状态的主机,即使优先级高于MASTER也不抢占为MASTER。只在优先级高的主机上设置即可。
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
# 虚拟IP
192.168.1.130
}
track_script {
check_nginx
}
}
3)nginx_slave的keepalived配置
#vim /etc/keepalived/keepalived.conf
global_defs {
router_id nginx-ha2
}
vrrp_script check_nginx {
script "/data/script/check_nginx.sh"
interval 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 55
# 备的优先级低
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.130
}
track_script {
check_nginx
}
}
4)防火墙设置
service iptables stop
5)部署nginx状态检查脚本check_nginx.sh
#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ];then
#echo 1
/etc/init.d/nginx start
sleep 5
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ];then
/etc/init.d/keepalived stop
#echo 2
fi
fi
给脚本设置可执行权限:
chmod +x /data/script/check_nginx.sh
6)开启keepalived的日志
#vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -d -S 0"
#vim /etc/rsyslog.conf
# 配置文件最后面加上下面一行
local0.* /var/log/keepalived.log
#重启rsyslog:
service rsyslog restart
7)启动服务
# 先检查nginx配置文件正确性
nginx -t
# 启动nginx服务
service nginx start
# 同时启动keepalived服务
service keepalived start
# 过一会查看虚拟IP是否在nginx_master主机上
ip addr