1、准备2台机器,192.168.1.11、192.168.1.12 vip 192.168.1.20
vip 的设置 即在2台已经分配好静态IP的机器中做如下配置(2台机器都要)
vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
#插入公共IP
IPADDR1=192.168.1.20
##配置完成莫忘记执行下面command
service network restart
systemctl stop firewalld
2、2台机器中都部署nginx 这个不赘述了,因为我做的是一主一备所以搭建的2台机器的nginx.conf配置是一致的
3、下载安装keepalived
#下载地址http://www.keepalived.org/
tar xf keepalived-1.3.4.tar.gz
mv keepalived-1.3.4 keepalived
cd keepalived
yum install -y libnl*
yum install -y libnfnetlink-devel zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh
./configure --prefix=/data/keepalived
make && make install
复制/sbin/keepalived到/usr/sbin下
cp /data/keepalived/sbin/keepalived /usr/sbin/
mkdir /etc/keepalived
cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
cp /data/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
复制启动脚本到/etc/init.d下
cd /data/keepalived-1.3.4
cp /usr/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
chmod 755 /etc/init.d/keepalived
4、配置keepalived配置文件 这里我把192.168.1.11当做主192.168.1.12当做备机
vi /etc/keepalived/keepalived.conf
##192.168.1.11
global_defs {
notification_email {
[email protected]
}
notification_email_from Keepalived@localhost
smtp_server [email protected]
smtp_connect_timeout 30
router_id 192.168.1.11
}
vrrp_script chk_nginx {
script "/etc/keepalived/ck_ng.sh"
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
mcast_src_ip 192.168.1.11
virtual_router_id 55
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.20/24
}
track_script {
chk_nginx
}
smtp_alert
}
##192.168.1.12 备机
global_defs {
notification_email {
[email protected]
}
notification_email_from Keepalived@localhost
smtp_server [email protected]
smtp_connect_timeout 30
router_id 192.168.1.11
}
vrrp_script chk_nginx {
script "/etc/keepalived/ck_ng.sh"
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
mcast_src_ip 192.168.1.12
virtual_router_id 55
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.20/24
}
track_script {
chk_nginx
}
smtp_alert
}
5、启动2台机器的nginx 和keepalived
./nginx
配置完成后使用192.168.1.11和192.168.1.12访问2台nginx是可以访问的,但是使用虚拟的vip192.168.1.20访问是不可能访问通的,但是没有关系 ,在这2台机器中都启动keepalived就可以使用这个ip访问这个主备机器了,启动命令
service keepalived start
到此,主备nginx用keepalive配置完毕
6、验证配置是否成功
由于如上我配置的master机器是192.168.1.11 ,备机是192.168.1.12,
1)若将192.168.1.12这台机器的nginx宕机,使用192.168.1.20访问nginx不会受到影响,
2)若将192.168.1.11这台机器的nginx宕机,使用192.168.1.20访问nginx会受到影响,大约10s会自动恢复,去访问备机。至于为何10s恢复这个和上面的keepalived配置有关
3)通过access.log去查看请求都是进入主机并且都是192.168.1.20 转发的304请求