方案:前端
利用keepalived+nginx實現官網web的高可用性linux
兩臺服務器一臺爲主,一臺爲備機,使兩臺機器公用一個虛擬IP,當主服務器宕機,106.3.32.6這個IP會自動切換到備機上,前端機恢復以後再自動切換回主服務機nginx
而後,主服務機和備機利用rsync實現實時同步數據,web
rsync的安裝配置能夠參照我以前的一篇文章:http://cuimk.blog.51cto.com/6649029/1322241shell
環境:bash
CentOS 6.4服務器
nginx-1.2.1併發
keepalived-1.2.2負載均衡
主和輔都須要安裝keepalived,安裝方法相同dom
yum -y install kernel-devel yum install openssl-* -y wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz tar xzf keepalived-1.2.2.tar.gz cd keepalived-1.2.2 ./configure --prefix=/usr/local/keepalived make && make install ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ mkdir -pv /etc/keepalived cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ ln -s /usr/local/keepalived/sbin/keepalived /sbin/
加入開機啓動:chkconfigkeepalived on
主和輔配置的差異只在stateMASTER和priority 100
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { # notification_email { ####此處定義發生替換會郵件通知 # cuimingkun@yinwuweiye.com # } # notification_email_from keepalived@domain.com # smtp_server 127.0.0.1 # smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_http_port { script "/root/shell/nginx_pid.sh" ##監控腳本位置 interval 2 weight 2 } track_script { chk_http_port } vrrp_instance VI_1 { state MASTER #####備機爲BACKUP interface em1 virtual_router_id 51 priority 100 #####備機要小於主 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 106.3.32.6 ####虛擬IP } }
Keepalived管理虛IP是經過組播和優先級實現的,優先級高的會擁有虛IP的管理權,因此要實現IP自動切換,只須要創建一個監控腳本,讓keepalived進行調用,一旦發現nginx出現故障就kill掉keepalived的進程,讓其餘keepalived管理此IP
vi /root/shell/nginx_pid.sh
#!/bin/bash A=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx sleep 3 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi
注意給腳本添加執行權限:chmod+x /root/shell/nginx_pid.sh
兩臺機器啓動keepalived:service keepalived start
#ip a查看IP
查看主的IP,目前虛IP在主這裏
Kill掉主的keepalived,再查看,虛IP消失
查看輔的這邊,能夠看到虛IP
再啓動主的keepalived,虛IP又回到主的這邊
此方案沒有作負載均衡,只是作了一個故障自動切換的處理,適用於PV不是很高的環境(固然Nginx作好調優其負載能力也是很強的),不過能夠以一樣的原理觸類旁通,把他作在高併發的負載均衡器上,來實現高必發的容災方案!