国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

HAProxy雙機高可用方案之HAProxy+Keepalived

原創
網絡 網絡優化 網絡運維
由于公司的注冊用戶已超過八百萬了,而且每天都有持續增漲的趨勢,而PV/日已經有向千萬靠擾的趨勢;原有的Web架構越來越滿足不了我們的需求了,所以我們也考慮上能抗高并發的HAProxy來作為我們網站的最前端的負載均衡器...

【51CTO.com 獨家特稿】由于公司的注冊用戶已超過八百萬了,而且每天都有持續增漲的趨勢,而PV/日已經有向千萬靠擾的趨勢;原有的Web架構越來越滿足不了我們的需求了,所以我們也考慮上能抗高并發的HAProxy來作為我們網站的最前端的負載均衡器;因為我已經在東莞的二個項目上面成功實施了HAProxy+Keepalived雙機方案,所以我在這里也嘗試在公司的網站上這種負載均衡高可用架構,即HAProxy+Keepalived。

HAProxy+Keepalived配置過程如下:

1. 做好整個環境的準備工作。

兩臺服務器DELL 2950均要做好準備工作,比如設置好hosts文件及進行ntpd對時。

網絡拓樸很簡單,如下所示:

ha1.cn7789.com eth0:203.93.236.145

ha2.cn7789.com eth0:203.93.236.142

網卡用其自帶的千兆網卡均可。

硬盤模式沒有要求,Raid0或Raid1均可。

網站對外的VIP地址是:203.93.236.149,這是通過Keepalived來實現的,原理請參考前面的章節;同時這也是我們的網站的外網DNS對應的IP。

2. HAProxy和Keepalived的安裝過程

關于此安裝過程,請大家參考前面的內容,這里就不重復了,我們主要是注意關鍵位置的改動:

(1)首先是要建立HAProxy啟動、重啟、關閉等狀態腳本,我這里的HAProxy腳本為/root/haproxy,我們給它執行權限,腳本內容如下所示:

  1. #!/bin/sh  
  2. # chkconfig 35 on  
  3. # description: HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.  
  4.  
  5. # Source function library.  
  6. if [ -f /etc/init.d/functions ]; then  
  7.   . /etc/init.d/functions  
  8. elif [ -f /etc/rc.d/init.d/functions ] ; then  
  9.   . /etc/rc.d/init.d/functions  
  10. else  
  11.   exit 0  
  12. fi  
  13.  
  14. # Source networking configuration.  
  15. . /etc/sysconfig/network  
  16.  
  17. # Check that networking is up.  
  18. [ ${NETWORKING} = "no" ] && exit 0  
  19.  
  20. [ -f /usr/local/haproxy/conf/haproxy.cfg ] || exit 1  
  21.  
  22. RETVAL=0 
  23.  
  24. start() {  
  25.   /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg  
  26.   if [ $? -ne 0 ]; then  
  27.     echo "Errors found in configuration file."  
  28.     return 1  
  29.   fi  
  30.  
  31.   echo -n "Starting HAproxy: "  
  32.   daemon /usr/local/haproxy/sbin/haproxy -D -f /usr/local/haproxy/conf/haproxy.cfg -p /var/run/haproxy.pid  
  33.   RETVAL=$?  
  34.   echo  
  35.   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/haproxy  
  36.   return $RETVAL  
  37. }  
  38.  
  39. stop() {  
  40.   echo -n "Shutting down HAproxy: "  
  41.   killproc haproxy -USR1  
  42.   RETVAL=$?  
  43.   echo  
  44.   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/haproxy  
  45.   [ $RETVAL -eq 0 ] && rm -f /var/run/haproxy.pid  
  46.   return $RETVAL  
  47. }  
  48.  
  49. restart() {  
  50.   /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg  
  51.   if [ $? -ne 0 ]; then  
  52.     echo "Errors found in configuration file, check it with 'haproxy check'."  
  53.     return 1  
  54.   fi  
  55.   stop  
  56.   start  
  57. }  
  58.  
  59. check() {  
  60.   /usr/local/haproxy/sbin/haproxy -c -q -V -f /usr/local/haproxy/conf/haproxy.cfg  
  61. }  
  62.  
  63. rhstatus() {  
  64.   status haproxy  
  65. }  
  66.  
  67. condrestart() {  
  68.   [ -e /var/lock/subsys/haproxy ] && restart || :  
  69. }  
  70.  
  71. # See how we were called.  
  72. case "$1" in  
  73.   start)  
  74.     start  
  75.     ;;  
  76.   stop)  
  77.     stop  
  78.     ;;  
  79.   restart)  
  80.     restart  
  81.     ;;  
  82.   reload)  
  83.     restart  
  84.     ;;  
  85.   condrestart)  
  86.     condrestart  
  87.     ;;  
  88.   status)  
  89.     rhstatus  
  90.  ;;  
  91.   check)  
  92.     check  
  93.     ;;  
  94.   *)  
  95.     echo $"Usage: haproxy {start|stop|restart|reload|condrestart|status|check}"  
  96.     RETVAL=1 
  97. esac  
  98.  
  99. exit $RETVAL 

#p#

(2)/usr/local/haproxy/conf/haproxy.cfg文件的內容如下所示(兩臺HAProxy機器的配置內容一樣):

  1. global  
  2.         log 127.0.0.1   local0  
  3.         maxconn 65535  
  4.         chroot /usr/local/haproxy  
  5.         uid 99   
  6.         gid 99  
  7.         daemon  
  8.         nbproc 8  
  9.         pidfile /usr/local/haproxy/haproxy.pid  
  10.         debug  
  11.  
  12. defaults    
  13.          log     127.0.0.1       local3    
  14.          mode   http    
  15.          option httplog    
  16.          option httpclose    
  17.          option dontlognull    
  18.          option forwardfor    
  19.          option redispatch    
  20.          retries 2    
  21.          maxconn 2000    
  22.          stats   uri     /haproxy-stats    
  23.          contimeout      5000    
  24.          clitimeout      50000    
  25.          srvtimeout      50000    
  26.  
  27. frontend www.1paituan.com  
  28.          bind *:80  
  29.          mode http   
  30.          option httplog  
  31.          log global   
  32.          default_backend phppool   
  33.  
  34. backend phppool  
  35.         balance source    
  36.         option httpchk HEAD /index.jsp HTTP/1.0  
  37.         server web1  203.93.236.147:80 weight 5  check inter 2000 rise 2 fall 3   
  38.      server  web2  203.93.236.146:80 weight 3  check inter 2000 rise 2 fall 3 

配置文件建議寫成這種frontend(前臺)和backend(后臺)的形式,方便我們根據需求也可以利用HAProxy的正則做成動靜分離或根據特定的文件名后綴(比如.php或.jsp)訪問指定的phppool池或javapool池(Nginx也能實現此項功能),我們還可以指定靜態服務器池,讓客戶端對靜態文件(比如bmp或jsp或html)訪問我們的Nginx靜態服務器,所以前后臺的模型也是非常有用的,不喜歡frontend(前臺)和backend(后臺)的朋友可以對比下以前沒有采用這種模式的配置文件,內容如下:

  1. global  
  2.         log 127.0.0.1   local0  
  3.         maxconn 65535  
  4.         chroot /usr/local/haproxy  
  5.         uid 99  
  6.         gid 99  
  7.         daemon  
  8.         nbproc 8  
  9.         pidfile /usr/local/haproxy/haproxy.pid  
  10.         debug  
  11.  
  12. defaults  
  13.          log     127.0.0.1       local3  
  14.          mode   http  
  15.          option httplog  
  16.          option httpclose  
  17.          option dontlognull  
  18.          option forwardfor  
  19.          option redispatch  
  20.          retries 2  
  21.          maxconn 2000  
  22.          balance source  
  23.          stats   uri     /haproxy-stats  
  24.          contimeout      5000  
  25.          clitimeout      50000  
  26.          srvtimeout      50000  
  27.  
  28. listen  www.1paituan.com  
  29.         bind *:80  
  30.         mode http  
  31.         option httplog  
  32.         log global  
  33.         option httpchk HEAD /index.jsp HTTP/1.0  
  34.         server web1  203.93.236.147:80 weight 5  check inter 2000 rise 2 fall 3  
  35.         server web2  203.93.236.146:80 weight 3  check inter 2000 rise 2 fall 3 

HAProxy的正則功能雖然沒Nginx強大靈活,但也是非常有用的;大家可以參考下面的文檔來熟悉下HAProxy的正則寫法,這些對于我們以后的工作幫助還是很大的,內容如下:

####################acl策略定義#########################
#如果請求的域名滿足正則表達式返回true -i是忽略大小寫
acl denali_policy hdr_reg(host) -i ^(
www.gemini.taobao.net|my.gemini.taobao.net|auction1.gemini.taobao.net)$
#如果請求域名滿足trade.gemini.taobao.net 返回 true -i是忽略大小寫
acl tm_policy hdr_dom(host) -i trade.gemini.taobao.net
#在請求url中包含sip_apiname=,則此控制策略返回true,否則為false
acl invalid_req url_sub -i sip_apiname=
#在請求url中存在timetask作為部分地址路徑,則此控制策略返回true,否則返回false
acl timetask_req url_dir -i timetask
#當請求的header中Content-length等于0時返回 true
acl missing_cl hdr_cnt(Content-length) eq 0
######################acl策略匹配相應###################
#當請求中header中Content-length等于0 阻止請求返回403
block if missing_cl
#block表示阻止請求,返回403錯誤,當前表示如果不滿足策略invalid_req,或者滿足策略timetask_req,則阻止請求。
block if !invalid_req || timetask_req
#當滿足denali_policy的策略時使用denali_server的backend
use_backend denali_server if denali_policy
#當滿足tm_policy的策略時使用tm_server的backend
use_backend tm_server if tm_policy
#reqisetbe關鍵字定義,根據定義的關鍵字選擇backend
reqisetbe ^Host:\ img dynamic
reqisetbe ^[^\ ]*\ /(img|css)/ dynamic
reqisetbe ^[^\ ]*\ /admin/stats stats
#以上都不滿足的時候使用默認mms_server的backend
default_backend mms_server
Keepalived的配置過程比較簡單,這里略過,大家可以參考我們前面的配置,配置成功后我們可以分別在二臺機器上啟動HAProxy及Keepalived服務(建議在Screen模式下開啟HAProxy服務,不熟悉Sreen用法的朋友建議熟悉下)。

#p#

3.替HAProxy添加日志支持

我們編輯/etc/syslog.conf文件, 添加內容如下:

local3.*        /var/log/haproxy.log 
local0.*        /var/log/haproxy.log

我們編輯/etc/sysconfig/syslog文件,修改內容如下:

SYSLOGD_OPTIONS="-r -m 0" 

然后重啟syslog服務,命令如下:

service syslog restart

4.驗證此架構及注意事項

我們可以關閉主HAProxy機器或重新啟動,看在此過程中,VIP地址有沒有正確的轉移到從HAProxy機器上,影響我們訪問網站沒,以上步驟我自己測試過多次,而且線上環境的穩定運行,證明HAProxy+Keeaplived雙機方案確實是有效的。

關于HAProxy+Heartbeat這種負載均衡高可用架構,有些情況我也跟大家說明一下:

◆在此HAProxy+Keepalivp負載均衡高可用架構中,我們是如何解決session的問題呢?我們這里采用的是它自身的balance source機制,它跟Nginx的ip_hash機制原理類似,是讓客戶機訪問時始終訪問后端的某一臺真實的web服務器,這樣讓session就固定下來了;

◆option httpchk HEAD /index.jsp HTTP/1.0 是網頁監控,如果HAProxy檢測不到Web的根目錄下沒有index.jsp,就會產生503報錯。

◆有網友配置HAProxy時喜歡用listen 203.93.236.141:80這樣的格式,這樣其實不好,做負載均衡高可用時由于從機分配不到VIP地址,會導致從機啟動不了,我建議用bind *:80的方式代替。

◆HAProxy的并發監控暫時沒有Nginx中的相關模塊,但可以考慮用SHELL命令或自行開發PHP或JSP程序來監控。

5.HAProxy的監控頁面

我們可以在地址欄輸入http://www.1paituan.com/haproxy-stats/,顯示界面如下(HAProxy自帶的監控頁面,也是我非常喜歡的功能之一):
 

作者介紹:

余洪春(撫琴煮酒·微博),《構建高可用Linux服務器》一書作者,一拍網系統架構師、資深項目管理工程師,ChinaUnix集群和高可用版版主。

【51CTO.com獨家特稿,非經授權謝絕轉載!合作媒體轉載請注明原文出處及出處!】

責任編輯:佟健 來源: 51CTO.com
相關推薦

2011-09-30 13:02:10

51CTO博客一周熱門Web架構

2018-08-24 08:51:10

haproxykeepalived均衡器

2023-10-13 18:57:22

2025-09-24 07:23:01

2011-09-22 10:48:20

MySQL集群HAProxy

2020-10-28 11:20:18

RabbitMQHAProxy運維

2015-10-21 12:58:58

keepalived集群Linux

2024-05-21 13:03:45

2022-07-22 20:00:01

高可用路由

2023-11-09 07:58:50

2023-05-15 08:20:56

2019-12-24 14:28:00

KeepalivedNginxTomcat

2012-02-15 00:15:48

2019-09-03 10:19:58

Kubernetes本地負載命令

2010-05-05 22:58:46

2025-03-31 10:40:52

2012-05-07 10:17:48

2024-01-31 09:11:16

HaproxyHttpTCP

2011-12-02 10:10:34

RedisFailover

2010-12-08 08:57:11

keepalivedMySQL-HA
點贊
收藏

51CTO技術棧公眾號

黄网站欧美内射| 亚洲欧美在线视频| 国产精品入口免费视频一| 日韩av手机版| 懂色av色香蕉一区二区蜜桃| 成人的网站免费观看| 中文字幕欧美精品日韩中文字幕| 91久久精品在线| 亚洲高潮无码久久| 97人人爽人人澡人人精品| 久久要要av| 亚洲天堂av在线免费| 在线久久视频| 国产区视频在线| 成人免费视频播放| 日韩欧美精品一区二区| 五月综合激情| 国产精品美女无圣光视频| 欧美精美视频| 欧美一乱一性一交一视频| 免费萌白酱国产一区二区三区| 国产免费av高清在线| 亚洲一区不卡| 亚洲一区二区三区欧美| 午夜精品一区二区三区在线观看 | 亚洲女同同性videoxma| 人人爽久久涩噜噜噜网站| 一区二区三区国产好| 视频一区视频二区国产精品| 亚洲成a人片77777在线播放 | 丝袜美腿一区| 亚洲视频自拍偷拍| 55av亚洲| 亚洲精品视频二区| 性欧美gay| 亚洲精品理论电影| 成人三级av在线| 91免费国产网站| 成人一区在线看| 日本fc2在线观看| 91麻豆精品国产自产在线观看一区 | 精品一区二区三区久久| 国内自拍在线观看| 亚洲四区在线观看| 国产偷激情在线| 欧美日韩高清影院| 国产亚洲字幕| 2019中文字幕全在线观看| 亚洲高清不卡| 羞羞在线观看网站| 日韩电影中文 亚洲精品乱码| 亚洲精品自拍| 91精品黄色| 激情综合色综合久久| 男人天堂2020| 久久精品国产欧美亚洲人人爽| 欧美亚洲免费高清在线观看| 亚洲欧美一区二区三区孕妇| ririsao久久精品一区| 成人黄色av网| 久久99久国产精品黄毛片色诱| 亚洲成人精品一区二区三区| 亚洲欧洲一区二区三区在线观看 | 青草国产精品久久久久久| 96sao精品免费视频观看| 久精品免费视频| 国产一区在线视频| 丰满的护士2在线观看高清| 91传媒视频免费| 午夜一区二区三区在线观看| 国产厕拍一区| 国产黄色影视| 欧美极品美女电影一区| 久久夜色精品国产欧美乱极品| 深夜av在线| 激情五月六月婷婷| 一区二区三区四区在线观看视频| 悠悠资源网久久精品| 欧美视频免费一区二区三区| 美女久久久久久久久久久| eeuss影院一区二区三区| 国产精品99久久久久久董美香| 亚洲欧美一二三| 国产香蕉97碰碰久久人人| 欧美一区高清| 欧美96在线| 欧美一区免费视频| 亚洲欧洲av一区二区| 91免费看视频| 日韩影片在线观看| 黄色免费看片| 国精产品一区二区| 亚洲欧美国产一区二区三区 | 国产在线视频综合| 热久久99这里有精品| 亚洲日本丝袜连裤袜办公室| av中字幕久久| 日韩中文字幕在线视频播放| 蜜桃一区二区三区四区| 91精品尤物| 在线观看免费高清完整| 日本欧美视频在线观看| 成人信息集中地欧美| 久久视频免费观看| 亚洲大片免费看| 亚洲专区免费| 成人欧美大片| av电影在线观看| 亚洲欧美日韩精品综合在线观看| 91精品国产综合久久香蕉麻豆| 国产精品一区二区三区99| 少妇精品久久久一区二区三区| 丁香花在线影院| 国产一二三在线观看| 国产熟人av一二三区| 欧美成人dvd在线视频| 91精品视频免费看| 精品国产不卡一区二区三区| 国产欧美精品在线观看| 另类小说欧美激情| 欧美在线视屏| 成人av影音| 黄色精品免费看| 日韩精品欧美一区二区三区| 精品国产髙清在线看国产毛片| 在线成人亚洲| 欧美gayvideo| 国产成人天天5g影院在线观看| 日韩 欧美 高清| 国产一区二区三区四区hd| 亚洲精品久久久久久久久| 亚洲高清不卡在线观看| 亚洲永久精品国产| 亚洲精品免费在线播放| 成人精品电影在线观看| 风间由美性色一区二区三区| 91蝌蚪精品视频| 直接在线观看的三级网址| 日本视频三区| 91精品中文在线| 欧美午夜影院一区| 亚洲精品美女91| 在线播放av片| 男女猛烈激情xx00免费视频| 日本一区二区不卡高清更新| 秋霞久久久久久一区二区| 欧美日韩国产一二| 日本精品视频网站| 在线观看欧美理论a影院| 日本午夜精品久久久| 日韩欧美视频在线播放| 欧美三级第一页| 激情欧美日韩一区| av永久不卡| 狠狠色丁香久久综合频道| 久久久国产精品| 国内精品福利| 美国欧美日韩国产在线播放| 国产在线播放一区| 亚洲免费观看在线观看| 一区二区视频在线看| 欧美日韩另类在线| 国产一区二区三区在线视频 | 久久精品久久精品国产大片| 亚洲精品一区国产精品| 国外亚洲成av人片在线观看| 亚洲综合网中心| 国产伦精品一区二区三区视频免费| 久久精品国产91精品亚洲| 亚洲成人中文字幕| 精品精品国产高清a毛片牛牛| 亚洲欧洲一区二区三区| 成人免费精品视频| 日韩毛片在线免费观看| 三级久久三级久久| 午夜在线一区| 丰满白嫩尤物一区二区| 久久久久亚洲综合| 亚洲在线视频一区| www日韩欧美| 久久久久久高清| 成年人小视频网站| 精品国产乱码久久久久久老虎 | 日本一区二区三区视频在线观看 | 欧美激情极品| 久久99精品国产.久久久久久 | 国产农村av| 欧美激情福利| 蜜臀av性久久久久蜜臀aⅴ| 日韩欧美aⅴ综合网站发布| 久久精品国产一区| 国产女主播一区二区三区| 中国黄色在线视频| 猫咪成人在线观看| 国产日韩欧美激情| 中文字幕欧美精品在线| 亚洲人成无码网站久久99热国产| 国产精品xx| 亚洲91精品| 88在线观看91蜜桃国自产|