小镇再上一遍服务器的架构图,服务器集群的冗余和热备规则就是在有ups,没有发生火灾地震的情况下,应该是保证web应用永不下线,要保证web应用永不下线,就是任何一台服务器宕机的情况下,整个服务器集群的工作都不会受到影响,架构图如下图所示:
可以看出,如果apache的服务器坏掉一台,那么流量就会分到别的apache的服务器上面去,如果nginx的服务器坏掉了,那么nginx的backup服务器就会顶上去。
keepalived就可以实现nginx 和nginx(backup)之间的双机热备,keepalived使用的是vrrp协议,如果你不了解vrrp协议的话,可以查看下面链接:http://baike.baidu.com/link?url=BMkPAB46FosuHulQlNhzmYSYqiXM_EIkDuQlbSvA5rCD18z7KIcpeJy2f0UlSy7Jnq4XEqnRG-_sVtarg8dQS_。
首先在两个nginx的前端机上都装上keepalived。小镇使用的系统是centos7.2。
yum -y install gcc gcc+ gcc-c++
yum install popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
tar -zxvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure
make
make install
cp /usr/local/sbin/keepalived /usr/sbin/
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp -r /usr/local/etc/keepalived/ /etc/
第二步给两个nginx前端都加上一个虚拟的ip,虚拟的ip都为192.168.1.88。然后这个ip就作为对外ip。
ifconfig eth0 192.168.1.88 netmask 255.255.255.0就可以了。
然后编辑keepalived的配置文件
192.168.1.100的配置文件如下,另外一个192.168.1.101的配置文件同理,吧master改为backup就可以了。
! Configuration File for keepalived
global_defs {
notification_email {
#acassen@firewall.loc
#failover@firewall.loc
#sysadmin@firewall.loc
}
#notification_email_from Alexandre.Cassen@firewall.loc
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "</dev/tcp/127.0.0.1/80"
interval 1
weight -2
}
vrrp_instance VI_1 {
state MASTER
interface eth2
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.88
}
track_script {
chk_http_port
}
}
然后访问192.168.1.88,就可以看到相应的网页,这时候将192.168.1.100关机,再看看192.168.1.88是否能够访问,如果能够访问的话就代表双机热备成功了。