两台服务器,一主一备,提供一个虚拟IP
SERVER vmvare01:192.168.10.191(主服务器 MASTER)
SERVER vmvare02:192.168.10.192(从服务器 BACKUP)
virtual IP:192.168.10.195
安装nginx请参照本http://nmszh.blog.51cto.com/4609205/1530262
要求:主服务器宕机后,从服务器接管。
在vmvare01和vmvare02都操作如下:
# tar zxvf keepalived-1.2.13.tar.gz
#cd keepalived-1.2.2
[root@vmvare01 keepalived-1.2.2]# ./configure &&make &&make install
[root@vmvare01 keepalived-1.2.2]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ (输入y,覆盖)
[root@vmvare01 keepalived-1.2.2]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
(输入y,覆盖)
[root@vmvare01 keepalived-1.2.2]# mkdir /etc/keepalived (如果有不用创建)
[root@vmvare01 keepalived-1.2.2]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ (输入y,覆盖)
[root@vmvare01 keepalived-1.2.2]# cp /usr/local/sbin/keepalived /usr/sbin/
2.在vmvare01上配置为主服务器:
[root@vmvare01 keepalived-1.2.2]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL 注:router_id可默认,与从服务保持一致
}
vrrp_script chk_nginx { #设置脚本监控
script "/opt/nginx/conf/check_nginx_process.sh"
interval 1
weight -5
}
vrrp_instance VI_1 {
state MASTER 注:默认MASTER
interface eth0
virtual_router_id 51 注:默认,保持主备一致
priority 100 注:默认100,数字越大,优先级越高
advert_int 1 注:默认,心跳广播时间1(秒)
authentication {
auth_type PASS
auth_pass 1111
}
track_script { #启用监控脚本
chk_nginx
}
virtual_ipaddress {
192.168.10.195 注:自修改虚拟IP
}
}
3.在vmvare02上配置为从服务器:
[root@vmvare02 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL 注:router_id可默认,与主服务保持一致
}
vrrp_script chk_nginx { #设置脚本监控
script "/opt/nginx/conf/check_nginx_process.sh"
interval 1
weight -5
}
vrrp_instance VI_2 {
state BACKUP 注:改成BACKUP
interface eth0
virtual_router_id 51 注:默认,保持主备一致
priority 90 注:90<100,比主服务优先级低
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script { #启用监控脚本
chk_nginx
}
virtual_ipaddress {
192.168.10.196 注:自修改虚拟IP
}
}
4.主服务器启动keepalived
[root@vmvare01 keepalived-1.2.2]# service keepalived start
[root@vmvare01 keepalived-1.2.2]# ps -ef | grep keepalived
root 12035 1 0 07:37 ? 00:00:00 keepalived -D
root 12036 12035 0 07:37 ? 00:00:00 keepalived -D
root 12038 12035 0 07:37 ? 00:00:00 keepalived -D
root 12043 651 0 07:43 pts/0 00:00:00 grep keepalived
注:默认1个主进程,两个辅进程,共3个进程
[root@vmvare01 keepalived-1.2.2]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:db:a2:04 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.191/24 brd 192.168.10.255 scope global eth0
inet 192.168.10.195/32 scope global eth0
inet6 fe80::20c:29ff:fedb:a204/64 scope link
valid_lft forever preferred_lft forever
从服务器启动keepalived
[root@vmvare02 keepalived-1.2.2]# service keepalived start
[root@vmvare02 keepalived-1.2.2]# ps -ef | grep keepalived
root 4536 1 0 21:52 ? 00:00:00 keepalived -D
root 4538 4536 0 21:52 ? 00:00:00 keepalived -D
root 4539 4536 0 21:52 ? 00:00:00 keepalived -D
root 4555 2996 0 22:26 pts/0 00:00:00 grep keepalived
注:默认1个主进程,两个辅进程,共3个进程
[root@vmvare02 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:16:3e:a6:60:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.192/24 brd 192.168.5.255 scope global eth0
inet 192.168.10.196/32 scope global eth0
inet6 fe80::216:3eff:fea6:6017/64 scope link
valid_lft forever preferred_lft forever
5.编写脚本监控 /opt/nginx/conf/check_nginx_process.sh
#!/bin/sh
killall -0 nginx
if
[[ $? -ne 0 ]];then
# /opt/nginx/sbin/nginx
# if
#[[ $? -ne 0 ]];then
/etc/init.d/keepalived stop
# fi
fi
测试主服务器nginx进程杀掉,keepalived服务自动关闭
[root@localhost conf]# ps -ef | grep nginx
root 10501 1 0 05:41 ? 00:00:00 nginx: master process /opt/nginx/sbin/nginx
nobody 10502 10501 0 05:41 ? 00:00:00 nginx: worker process
root 11504 13917 0 05:44 pts/2 00:00:00 grep nginx
[root@localhost conf]# ps -ef | grep keepalived
root 11567 13917 0 05:44 pts/2 00:00:00 grep keepalived
root 28822 1 0 03:30 ? 00:00:00 keepalived -D
root 28824 28822 0 03:30 ? 00:00:01 keepalived -D
root 28825 28822 0 03:30 ? 00:00:09 keepalived -D
[root@localhost conf]# kill 10501
[root@localhost conf]# ps -ef | grep keepalived
root 11602 13917 0 05:45 pts/2 00:00:00 grep keepalived
[root@localhost conf]# ps -ef | grep nginx
root 11607 13917 0 05:45 pts/2 00:00:00 grep nginx
本文出自 “梦三国” 博客,谢绝转载!