揭秘企业级web负载均衡完美架构
相信很多朋友對企業級的負載均衡高可用實例非常感興趣,此篇文章根據成熟的線上環境而寫,旨在幫助大家迅速架構一個企業級的負載均衡高可用的web環境。
此系統架構僅映射內網VIP的80及443端口于外網的Juniper防火墻下,其它端口均關閉,內網所有機器均關閉iptables及ipfw防火墻;外網DNS指向即通過Juniper映射出來的外網地址,而此映射的地址對映的其實是內網VIP地址。這里說下端口的問題,有的朋友可能會很疑惑,這樣映射端口行不?通過項目實踐得知,這樣完全是可行的,php-cgi需要的9000端口及MySQL的3306端口均可走內網,完全不影響業務系統的運行。
另外,我維護的電子商務網站并發大約在1000左右,此時,Nginx+Apache集群運行得非常穩定,尤其是apache,并沒有想象中那般弱;其實,在內存足夠(>=8G)的情況,測試時不連數據庫的話,單臺apache+php5能頂得住6000并發,而且相當穩定。在網站升級架構方面,我不贊成全面淘汰生級,錦上添花式的升級會更好。
?
第一部分:Nginx+Keepalived的說明及環境說明
喜歡看我博客或文章的朋友都知道,我一直主力推崇Nginx+Keepalived作web的負載均衡高可用架構,并積極將其用于項目方案中;Nginx負載均衡作服務器遇到的故障一般有①服務器網線松動等網絡故障;②服務器硬件故障從而crash;③nginx服務死掉;遇到前二者情況,keeaplived是能起到HA的作用的;然而遇到③種情況就沒有辦法了,但可以通過shell監控解決這問題,從而實現真正意義上的負載均衡高可用。此篇的最新更新時間為2010年6月25號,下面將其安裝步驟詳細說明下:
環境:
第二部分:分別安裝Nginx負載均衡器及相關配置腳本
先安裝Nginx負載均衡器,nginx負載的配置就用一般的模板來配置了
配置nginx負載均衡器的配置文件vim /usr/local/nginx/conf/nginx.conf,此篇文章僅僅只是我的某項目的配置文檔,純80轉發;如果對nginx配置有https要求的可參考張宴的相關文章。
小節:
第一部分和第二部分講的是如何通過安裝Nginx來達到負載均衡后端web集群的過程,Nginx能實現自動切換后端有故障的web服務器;但Nginx負載均衡器出了問題怎么辦呢,它們之間是如何實現無故障轉移的呢?
第三部分:安裝Keepalived,讓其分別作web及Nginx的HA
安裝keepalived,并將其做成服務模式,方便以后調試。
我們來看一下日志:
很顯然vrrp已經啟動,我們還可以通過命令來檢查
說明vip已經啟動,這樣主服務器就配置好了,輔機的配置大致一樣,除了配置文件有少部分的變化,下面貼出輔機的配置文件:
第四部分:針對Keepalived的不足,用Nginx_pid.sh來監控nginx進程,實現真正意義上的負載均衡高可用。
針對Nginx+Keepalived,編寫nginx監控腳本nginx_pid.sh,此腳本思路其實也很簡單,即放置在后臺一直監控nginx進程;如進程消失,嘗試重啟nginx,如是失敗則立即停掉本機的keepalived服務,讓另一臺負載均衡器接手,此腳本直接從生產環境下載:
然后置于后臺運行 sh /root/nginx_pid.sh &,這種寫法是錯誤的,這樣你用root用戶logout后,此進程會消失;正確寫法為nohup/bin/bash /root/nginx_pid.sh &,附帶下注釋:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用nohup命令。該命令可以在你退出root帳戶之后繼續運行相應的進程。nohup就是不掛起的意思( no hang up),哈哈,差點老馬失蹄了。
后記:
我的線上環境網絡非常復雜,這也是LVS+Keepalived失敗的原因。目前此套架構在1000并發的電子商務網站非常穩定,帶來的直接影響就是nginx_backup一直處于閑置狀態。相對于張宴的雙機輪詢而言,我感覺他的可能更加完美,因為目前我的Nginx僅僅只做了負載均衡器,如果以后有機會我會嘗試做負載均衡器/反向代理加速。
轉載于:https://www.cnblogs.com/moqiang02/p/4061217.html
總結
以上是生活随笔為你收集整理的揭秘企业级web负载均衡完美架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 存储知识课堂(二):磁盘读写磁头揭秘
- 下一篇: Canvas 学习笔记1