HA(High Available):高可用性羣集,是保證業務連續性的有效解決方案,一般有兩個或兩個以上的節點,且分爲活動節點(master)及備用節點(slave)。當master出現問題,導致正在運行的業務(任務)不能正常運行時,slave此時就會偵測到,並立即接續活動節點來執行業務。從而實現業務的不中斷或短暫中斷,在此過程中,用戶使用不會受到任何影響。
測試機器3臺:
1.nginx:部署nginx主要作用是進行代理轉發操作
2.master:部署master的apache和tomcat服務
3.slave:部署slave的apache和tomcat服務
安裝命令:
apt-get install nginx //安裝nginx
apt-get install apache2 libapache2-mod-jk tomcat6//master和slave服務器安裝apache和tomcat
服務器配置:
nginx服務器配置,/etc/nginx/sites-enabled/VTWeb//sites-enabled下配置文件名自定義
upstream VTWeb {
server 192.168.1.72 max_fails=3; //將72設置爲master
server 192.168.1.10 backup; //將10設置爲slave
} server {
// server port and name //
listen 192.168.1.11:80 ; //此處端口填寫apache所使用端口,默認80
server_name lacalhost; //填寫ip地址或域名
access_log /var/log/nginx/tracker3.videodna.com.access.logrequest_time;
location / {
proxy_pass http://tracker3.videodna.com;
proxy_next_upstream error timeout invalid_headerhttp_503;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For$remote_addr;
proxy_set_header X-Forwarded-Host$server_name;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 60; proxy_read_timeout 900;
} }
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
master和slave中apache2配置,/etc/apache2/sites-enabled/VTWeb,以下兩個文件在master和slave都需要進行配置
#loadModule jk_module /usr/lib/apache2/modules/mod_jk.so
JkWorkersFile "/etc/apache2/workers.properties"//填寫轉發文件絕對路徑,重要
JkLogFile "/var/log/apache2/mod_jk.log"
Alias /cache /var/www/cache
Alias /vtontc /var/www/vtontc
Alias /vtontc1.2 /var/www/vtontc1.2
Alias /data /var/www/data
Alias /resource /var/www/resource
Alias /msn /var/www/msn
ServerName 192.168.1.10 //當前服務器地址
Options FollowSymLinks AllowOverride None
DocumentRoot "/var/lib/tomcat6/webapps/VTWeb/" ServerName192.168.1.10
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None Options +ExecCGI -MultiViews? +SymLinksIfOwnerMatch? Orderallow,deny Allow from all
#Deny direct access to WEB-INF and META-INF deny from all
AllowOverride None deny from all
#Use Directory too. On Windows, Location doesn't work unlesscase matches AllowOverride None deny from all
AllowOverride None deny from all
jkMount / ajp13
JkMount /*.do ajp13
JkMount /*.jsp ajp13
JkMount /dwr/* ajp13
jkMount /exportWhiteListReport ajp13
jkMount /dataFeedForMatch ajp13
jkMount /josso_security_check ajp13
jkMount /josso_user_login/ ajp13
jkMount /josso_logout/ ajp13
CustomLog /var/log/apache2/tracker3.log vhost_combined//輸出log配置
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
apache2配置,/etc/apache2/workers.properties,該文件不存在時需手動創建
worker.list=ajp13
# Define a worker using ajp13 worker.app1.port=8009//該端口爲nginx轉發時所用端口,如被佔用將影響服務
worker.app1.host=localhost
worker.app1.type=ajp13
# Define the LB worker
worker.ajp13.type=lb
worker.ajp13.sticky_session=True
#worker.ajp13.sticky_session_force=True
worker.ajp13.balance_workers=app1
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
注意事項: 1.tomcat配置增加了一行
vdna@qa-10:/etc/apache2/sites-enabled $ less/var/lib/tomcat6/conf/server.xml |grep VTWeb
2.系統中部分端口默認是不開啓的,需要手動開啓
測試方法:
開啓nginx,/etc/init.d/nginx start
開啓apache,/etc/init.d/apache2 start
開啓tomcat,/etc/init.d/tomcat6 start
case1:3個服務器中5個服務均開啓,訪問nginx地址:192.168.1.11成功打開VTWeb首頁
case2:將master服務器中的apache服務停止,訪問nginx地址:192.168.1.11成功打開VTWeb首頁,並且在slave的log中輸出請求日誌格式如下:
192.168.1.10:80 192.168.1.11 - - [09/Oct/2014:18:10:12+0800] "GET/VTWeb/login/images/bot/top_contact_2.gif HTTP/1.0" 404 642" http://192.168.1.11/VTWeb/""Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1Safari/537.85.10"
case3:將slave服務器中的apache服務停止,訪問nginx地址:192.168.1.11成功打開VTWeb首頁
case4:將master服務器中的tomcat停止
case5:將master服務器中的apache和tomcat全部停止
master在不同情況下測試結果:
apache up, tomcat up, 訪問正常
apache up, tomcat down, 檢測到503錯誤,切換到備份服務器,訪問正常
apache down, tomcat up, 檢測到502錯誤,切換到備份服務器,訪問正常
apache down, tomcat down, 切換到備份服務器,訪問正常
原文地址:http://blog.sina.com.cn/s/blog_4d3ff0eb0102vc0o.html