目标:
主nginx 172.25.62.101
从nginx 172.25.62.102
虚拟ip 172.25.62.115
一.安装nginx
1.安装nginx相关依赖(如果已经安装请跳过)
mkdir /home/nginx #新建nginx目录
a.安装gcc gcc-c++
yum install -y gcc gcc-c++
b.安装PCRE库
cd /home/nginx/
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
tar -zxvf pcre-8.33.tar.gz
cd pcre-8.33
./configure
make && make install
c.安装SSL库
cd /home/nginx/
wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
tar -zxvf openssl-1.0.1j.tar.gz
cd openssl-1.0.1j
./config
make && make install
d.安装zlib库存
cd /home/nginx/
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
2.安装nginx
cd /home/nginx/
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure
make && make install
3. 启动nginx
/usr/local/nginx/sbin/nginx
ps -ef|grep nginx #查看nginx进程
二.安装keepalived
1.下载keepalived
cd /home/nginx/
wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz
2.解压安装:
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
3.下载插件openssl
yum install -y openssl openssl-devel(需要安装一个软件包)
4.开始编译keepalived
cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
5.make一下
make && make install
6.复制脚本文件,建立软连接
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ #复制脚本文件
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ #复制脚本文件
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ #复制脚本文件
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/ #建立软连接
chkconfig keepalived on #设置开机自启动
7.修改keepalived配置文件
vi /etc/keepalived/keepalived.conf
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #自动开启服务,该脚本在下面
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
vrrp_instance VI_1 {
state MASTER #来决定主从
interface ens160# 绑定虚拟 IP 的网络接口,根据自己的机器填写,linux通过ip a 来查看
virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 172.25.62.101 #填写本机ip
priority 100 # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
}
virtual_ipaddress {
172.25.62.115 #必须和本机ip在同一个网段
}
}
上面interface填写的值,如下图查看
以下是开机自启动脚本:nginx_check.sh
#!/bin/bash
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
说明:该脚本放在 cd /etc/keepalived/目录
三.keepalived
service keepalived start #启动keepalived
service keepalived stop #停止keepalived
service keepalived restart #停止重启keepalived
输入 ip a 查看虚拟ip
这样我们就配好了主nginx和主keepalived
那么接下来按相同的方法配置从nginx和从keepalived即可,只需要修改从keepalived配置文件:
vi /etc/keepalived/keepalived.conf #进入从keepalived配置文件
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #自动开启服务,该脚本在下面
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
vrrp_instance VI_1 {
state MASTER #来决定主从
interface ens160# 绑定虚拟 IP 的网络接口,根据自己的机器填写,linux通过ip a 来查看
virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
mcast_src_ip 172.25.62.102 #填写本机ip
priority 99# 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
}
virtual_ipaddress {
172.25.62.115 #必须和本机ip在同一个网段
}
}
四.启动从nginx和从keepalived
此时从keepalived是没有生成虚拟ip的,有虚拟ip的是主keepalived,只有当主nginx挂了之后,从keepalived才生成相同的虚拟ip
五.测试一下
通过虚拟ip访问主nginx
当主nginx挂了之后,
此时跳转到从nginx,这时从服务器生成了虚拟ip