官网下载
当前的最新版本是:keepalived-2.0.18.tar.gz
Master 192.168.1.2
$ yum -y install openssl-devel libnl libnl-devel libnfnetlink-devel
$ tar -zxvf keepalived-2.0.18.tar.gz
$ cd keepalived-2.0.18
$ ./configure
$ make -j4
$ make install
$ systemctl enable keepalived
写一个检查nginx master进程是否存活的脚本
$ mkdir /etc/keepalived
$ vim /etc/keepalived/nginx_monitor.sh
#!/bin/bash
# 获取nginx master进程pid
pid=$(ps aux | grep -v grep | grep "nginx: master process" | awk '{print $2}')
# 判断进程pid是否为空,为空就认nginx服务有问题
if [ -z $pid ];then
echo "############# nginx down " >> /var/log/messages
exit 1
fi
exit 0
$ chmod 755 /etc/keepalived/nginx_monitor.sh
配置keepalived
$ vim /etc/keepalived/keepalived.conf
vrrp_script monitor {
script "/etc/keepalived/nginx_monitor.sh"
interval 1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 61
priority 90
advert_int 1
track_script {
monitor
}
virtual_ipaddress {
192.168.1.10
}
}
启动keepalived服务
$ systemctl start keepalived
附上nginx的配置
# cat /usr/local/nginx/conf/nginx.conf
worker_processes auto;
events {
use epoll;
worker_connections 65535;
}
http {
server {
listen 80;
location / {
default_type text/html;
return 200 "Hello,Nginx! Server [email protected]\n";
}
}
}
至此keepalived的Master节点192.168.0.2
就配置好了,这份配置指定的vip是192.168.1.10
现在我们可以把我们的虚拟机克隆一份出来,作为backup节点192.168.0.3
backup 192.168.1.3
修改backup节点相应的配置文件
# cat /usr/local/nginx/conf/nginx.conf
worker_processes auto;
events {
use epoll;
worker_connections 65535;
}
http {
server {
listen 80;
location / {
default_type text/html;
return 200 "Hello,Nginx! Server [email protected]\n";
}
}
}
$ vim /etc/keepalived/keepalived.conf
vrrp_script monitor {
script "/etc/keepalived/nginx_monitor.sh"
interval 1
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 61
priority 89
advert_int 1
track_script {
monitor
}
virtual_ipaddress {
192.168.1.10
}
}
小结
keepalived可以实现nginx多节点共享一个虚拟IP(VIP)
使用nginx可以高可用,如本例中,master节点上的nginx宕机后,backup上位
当master节点的nginx故障修复后,依然是master,备胎(backup)依赖是备,备胎只是用来临时顶一顶。
Master与Backup中配置文件/etc/keepalived/keepalived.conf
的异同
不同
- state MASTER、state BACKUP
- priority 90、priority 89
必须相同:
- virtual_router_id 61
- virtual_ipaddress { 192.168.1.10 }
搭建过程中可以通过查询系统日志来调试
$ tail -f /var/log/messages