Quantcast
Viewing all articles
Browse latest Browse all 10

keepalived+nginx+tomcat 双机热备部署方案

这篇文档只讨论keepalived的基本应用,不深入讨论结合lvs的应用
OS:centos 5.10

主机A:
eth0: 192.168.1.204
vip: 192.168.1.207
tomcat+nginx

主机B
eth0: 192.168.1.206
vip: 192.168.1.207
tomcat+nginx

实现目标:平时主机A提供服务,B待命,当A主机当机或者nginx或者tomcat故障的时候,由主机B来充当web服务。当A主机恢复的时候,B的承担服务的责任再次交还给主机A。
这个方案虽然主机B提供服务器的概率不高,但实际效果还是很有效的,也不失为一个初级的热备方案

1:首相A,B俩主机时间同步

2:安装keepalived

yum -y install gcc make openssl openssl-devel wget kernel-devel
wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz

编译安装

./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-371.8.1.el5-x86_64/ --disable-lvs

或者(1.2.13版本)

./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-371.8.1.el5-x86_64/ --disable-fwmark --disable-lvs
make
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp keepalived/etc/init.d/keepalived.rh.init /etc/init.d/keepalived
cp keepalived/etc/init.d/keepalived.sysconfig /etc/sysconfig/keepalived
chmod +x /etc/init.d/keepalived
chkconfig --add keepalived
chkconfig --level 3 keepalived on

主机A配置:

vim /etc/keepalived/keepalived.conf
global_defs
{
notification_email
{
username@email.com
}
notification_email_from username@email.com
smtp_server 127.0.0.1
stmp_connect_timeout 30
router_id c3_204			#这个名字根据自己需要随便取
}
vrrp_script chk_nginx {
        script "killall -0 nginx"	#检查nginx进程
        interval 1			#检查频率 1秒
        weight  -2			#如果发现nginx进程不在,优先级降低2
}
 
vrrp_script chk_tomcat {
        script "killall -0 java"	#检查tomcat进程
        interval 1			#检查频率 1秒
        weight  -2			#如果发现tomcat进程不在,优先级降低2
}
vrrp_instance shengzc {
state BACKUP
interface eth0
virtual_router_id 100			#这个ID A B主机必须保持一致
priority 151				#优先级,越大优先级越大
advert_int 1
track_interface {
eth0
}
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.207
#192.168.1.207 dev eth0 label eth0:1	#如果想直接通过ifconfig显示eth0:1信息,用这个语法
}
track_script {
        chk_nginx
        chk_tomcat
        }
}

主机B配置:

vim /etc/keepalived/keepalived.conf
global_defs
{
notification_email
{
username@email.com
}
notification_email_from username@email.com
smtp_server 127.0.0.1
stmp_connect_timeout 30
router_id c5_206			#这个名字根据自己需要随便取
}
vrrp_script chk_nginx {
        script "killall -0 nginx"	#检查nginx进程
        interval 1			#检查频率 1秒
        weight  -2			#如果发现nginx进程不在,优先级降低2
}
 
vrrp_script chk_tomcat {
        script "killall -0 java"	#检查tomcat进程
        interval 1			#检查频率 1秒
        weight  -2			#如果发现tomcat进程不在,优先级降低2
}
vrrp_instance shengzc {
state BACKUP
interface eth0
virtual_router_id 100			#这个ID A B主机必须保持一致
priority 150				#优先级,越大优先级越大
advert_int 1
track_interface {
eth0
}
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.207
#192.168.1.207 dev eth0 label eth0:1	#如果想直接通过ifconfig显示eth0:1信息,用这个语法
}
track_script {
        chk_nginx
        chk_tomcat
        }
}

iptables设置:

vim /etc/sysconfig/iptables

注意添加

-A RH-Firewall-1-INPUT -p vrrp -j ACCEPT

否则会出现
May 14 11:16:37 s3 Keepalived_vrrp[7591]: VRRP_Instance(shengzc) Received lower prio advert, forcing new election
May 14 11:16:37 s3 Keepalived_vrrp[7591]: VRRP_Instance(shengzc) Sending gratuitous ARPs on eth0 for 192.168.1.207

类似这样的错误

好了,同时启动A B主机的keepalived

/etc/init.d/keepalived start

可以测试关掉A机器的nginx进程 tomcat进程 或者断网 是否能切换到B机器那儿去


Viewing all articles
Browse latest Browse all 10

Trending Articles