<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        揭秘企業級web負載均衡完美架構

        來源:懂視網 責編:小采 時間:2020-11-09 08:24:34
        文檔

        揭秘企業級web負載均衡完美架構

        揭秘企業級web負載均衡完美架構:【51CTO.com獨家特稿】相信很多朋友對 企業 級的 負載 均衡 高可用實例非常感興趣,此篇 文章 根據成熟的線上環境而寫,旨在幫助大家迅速 架構 一個 企業 級的 負載 均衡 高可用的web環境。 此系統 架構 僅映射內網VIP的80及443端口于外網的Juniper
        推薦度:
        導讀揭秘企業級web負載均衡完美架構:【51CTO.com獨家特稿】相信很多朋友對 企業 級的 負載 均衡 高可用實例非常感興趣,此篇 文章 根據成熟的線上環境而寫,旨在幫助大家迅速 架構 一個 企業 級的 負載 均衡 高可用的web環境。 此系統 架構 僅映射內網VIP的80及443端口于外網的Juniper

        【51CTO.com獨家特稿】相信很多朋友對 企業 級的 負載 均衡 高可用實例非常感興趣,此篇 文章 根據成熟的線上環境而寫,旨在幫助大家迅速 架構 一個 企業 級的 負載 均衡 高可用的web環境。 此系統 架構 僅映射內網VIP的80及443端口于外網的Juniper防火墻下

        【51CTO.com獨家特稿】相信很多朋友對企業級的負載均衡高可用實例非常感興趣,此篇文章根據成熟的線上環境而寫,旨在幫助大家迅速架構一個企業級的負載均衡高可用的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號,下面將其安裝步驟詳細說明下:

        環境:

        1. centos5.3(64位)、nginx-0.7.51、keepalived-1.1.15
        2. 主nginx負載均衡器:192.168.0.154
        3. 輔nginx負載均衡器:192.168.9.155
        4. vip:192.168.0.188

        第二部分:分別安裝Nginx負載均衡器及相關配置腳本

        先安裝Nginx負載均衡器,nginx負載的配置就用一般的模板來配置了

        1. #添加運行nginx的用戶和組www
        2. groupadd www
        3. useradd -g www www
        4. wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz
        5. tar zxvf pcre-7.8.tar.gz
        6. cd pcre-7.8/
        7. ./configure
        8. make && make install
        9. wget http://sysoev.ru/nginx/nginx-0.7.51.tar.gz
        10. tar zxvf nginx-0.7.51.tar.gz
        11. cd nginx-0.7.51/
        12. ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
        13. make && make install

        配置nginx負載均衡器的配置文件vim /usr/local/nginx/conf/nginx.conf,此篇文章僅僅只是我的某項目的配置文檔,純80轉發;如果對nginx配置有https要求的可參考張宴的相關文章。

        1. user www www;
        2. worker_processes 8;
        3. pid /usr/local/nginx/logs/nginx.pid;
        4. worker_rlimit_nofile 65535;
        5. events
        6. {
        7. use epoll;
        8. worker_connections 65535;
        9. }
        10. http{
        11. include mime.types;
        12. default_type application/octet-stream;
        13. server_names_hash_bucket_size 128;
        14. client_header_buffer_size 32k;
        15. large_client_header_buffers 4 32k;
        16. client_max_body_size 8m;
        17. sendfile on;
        18. tcp_nopush on;
        19. keepalive_timeout 60;
        20. tcp_nodelay on;
        21. fastcgi_connect_timeout 300;
        22. fastcgi_send_timeout 300;
        23. fastcgi_read_timeout 300;
        24. fastcgi_buffer_size 64k;
        25. fastcgi_buffers 4 64k;
        26. fastcgi_busy_buffers_size 128k;
        27. fastcgi_temp_file_write_size 128k;
        28. gzip on;
        29. gzip_min_length 1k;
        30. gzip_buffers 4 16k;
        31. gzip_http_version 1.0;
        32. gzip_comp_level 2;
        33. gzip_types text/plain application/x-javascript text/css application/xml;
        34. gzip_vary on;
        35. upstream backend
        36. {
        37. server 192.168.1.102:80;
        38. server 192.168.1.103:80;
        39. server 192.168.1.105:80;
        40. }
        41. server {
        42. listen 80;
        43. server_name www.yuhongchun027.com;
        44. location / {
        45. root /var/www ;
        46. index index.jsp index.htm index.html;
        47. proxy_redirect off;
        48. proxy_set_header Host $host;
        49. proxy_set_header X-Real-IP $remote_addr;
        50. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        51. proxy_pass http://backend;
        52. }
        53. location /nginx {
        54. access_log on;
        55. auth_basic "NginxStatus";
        56. auth_basic_user_file /usr/local/nginx/htpasswd;
        57. }
        58. log_format access '$remote_addr - $remote_user [$time_local] "$request" '
        59. '$status $body_bytes_sent "$http_referer" '
        60. '"$http_user_agent" $http_x_forwarded_for';
        61. access_log /var/log/access.log access;
        62. }
        63. }

        小節:

        第一部分和第二部分講的是如何通過安裝Nginx來達到負載均衡后端web集群的過程,Nginx能實現自動切換后端有故障的web服務器;但Nginx負載均衡器出了問題怎么辦呢,它們之間是如何實現無故障轉移的呢?

        第三部分:安裝Keepalived,讓其分別作web及Nginx的HA

        安裝keepalived,并將其做成服務模式,方便以后調試。

        1. wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
        2. #tar zxvf keepalived-1.1.15.tar.gz
        3. #cd keepalived-1.1.15
        4. #./configure --prefix=/usr/local/keepalived
        5. #make
        6. #make install
        7. #cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
        8. #cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
        9. #cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
        10. #mkdir /etc/keepalived
        11. #cd /etc/keepalived/
        12. vim keepalived.conf
        13. ! Configuration File for keepalived
        14. global_defs {
        15. notification_email {
        16. yuhongchun027@163.com
        17. }
        18. notification_email_from keepalived@chtopnet.com
        19. smtp_server 127.0.0.1
        20. smtp_connect_timeout 30
        21. router_id LVS_DEVEL
        22. }
        23. vrrp_instance VI_1 {
        24. state MASTER
        25. interface eth0
        26. virtual_router_id 51
        27. mcast_src_ip 192.168.0.154 <==主nginx的IP地址
        28. priority 100
        29. advert_int 1
        30. authentication {
        31. auth_type PASS
        32. auth_pass chtopnet
        33. }
        34. virtual_ipaddress {
        35. 192.168.0.188 <==vip地址
        36. }
        37. }
        38. #service keepalived start

        我們來看一下日志:

        1. [root@ltos ~]# tail /var/log/messages
        2. Oct 6 03:25:03 ltos avahi-daemon[2306]: Registering new address record for 192.168.0.188 on eth0.
        3. Oct 6 03:25:03 ltos avahi-daemon[2306]: Registering new address record for 192.168.0.154 on eth0.
        4. Oct 6 03:25:03 ltos avahi-daemon[2306]: Registering HINFO record with values 'I686'/'LINUX'.
        5. Oct 6 03:25:23 ltos avahi-daemon[2306]: Withdrawing address record for fe80::20c:29ff:feb9:eeab on eth0.
        6. Oct 6 03:25:23 ltos avahi-daemon[2306]: Withdrawing address record for 192.168.0.154 on eth0.
        7. Oct 6 03:25:23 ltos avahi-daemon[2306]: Host name conflict, retrying with

        很顯然vrrp已經啟動,我們還可以通過命令來檢查

        1. [root@ltos html]# ip addr
        2. 1: lo: mtu 16436 qdisc noqueue
        3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        4. inet 127.0.0.1/8 scope host lo
        5. inet6 ::1/128 scope host
        6. valid_lft forever preferred_lft forever
        7. 2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
        8. link/ether 00:0c:29:ba:9b:e7 brd ff:ff:ff:ff:ff:ff
        9. inet 192.168.0.154/24 brd 192.168.0.255 scope global eth0
        10. inet 192.168.0.188/32 scope global eth0
        11. inet6 fe80::20c:29ff:feba:9be7/64 scope link
        12. valid_lft forever preferred_lft forever
        13. 3: sit0: mtu 1480 qdisc noop
        14. link/sit 0.0.0.0 brd 0.0.0.0

        說明vip已經啟動,這樣主服務器就配置好了,輔機的配置大致一樣,除了配置文件有少部分的變化,下面貼出輔機的配置文件:

        1. ! Configuration File for keepalived
        2. global_defs {
        3. notification_email {
        4. yuhongchun027@163.com
        5. }
        6. notification_email_from keepalived@chtopnet.com
        7. smtp_server 127.0.0.1
        8. smtp_connect_timeout 30
        9. router_id LVS_DEVEL
        10. }
        11. vrrp_instance VI_1 {
        12. state BACKUP
        13. interface eth0
        14. virtual_router_id 51
        15. mcast_src_ip 192.168.0.155 <==輔nginx的IP的地址
        16. priority 100
        17. advert_int 1
        18. authentication {
        19. auth_type PASS
        20. auth_pass chtopnet
        21. }
        22. virtual_ipaddress {
        23. 192.168.0.188
        24. }
        25. }

        第四部分:針對Keepalived的不足,用Nginx_pid.sh來監控nginx進程,實現真正意義上的負載均衡高可用。

        針對Nginx+Keepalived,編寫nginx監控腳本nginx_pid.sh,此腳本思路其實也很簡單,即放置在后臺一直監控nginx進程;如進程消失,嘗試重啟nginx,如是失敗則立即停掉本機的keepalived服務,讓另一臺負載均衡器接手,此腳本直接從生產環境下載:

        1. vim /root/nginx_pid.sh
        2. #!/bin/bash
        3. while :
        4. do
        5. nginxpid=`ps -C nginx --no-header | wc -l`
        6. if [ $nginxpid -eq 0 ];then
        7. /usr/local/nginx/sbin/nginx
        8. sleep 5
        9. nginxpid=`ps -C nginx --no-header | wc -l`
        10. if [ $nginxpid -eq 0 ];then
        11. /etc/init.d/keepalived stop
        12. fi
        13. fi
        14. sleep 5
        15. done

        然后置于后臺運行 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僅僅只做了負載均衡器,如果以后有機會我會嘗試做負載均衡器/反向代理加速。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        揭秘企業級web負載均衡完美架構

        揭秘企業級web負載均衡完美架構:【51CTO.com獨家特稿】相信很多朋友對 企業 級的 負載 均衡 高可用實例非常感興趣,此篇 文章 根據成熟的線上環境而寫,旨在幫助大家迅速 架構 一個 企業 級的 負載 均衡 高可用的web環境。 此系統 架構 僅映射內網VIP的80及443端口于外網的Juniper
        推薦度:
        標簽: 完美 揭秘 均衡
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲视频在线不卡| 国产亚洲免费的视频看| 亚洲男人的天堂久久精品| 国产h肉在线视频免费观看| 免费看男人j放进女人j免费看| 51在线视频免费观看视频| 国产伦一区二区三区免费| 亚洲乳大丰满中文字幕| 亚洲熟伦熟女专区hd高清| 免费在线观影网站| 亚洲大尺度无码专区尤物| 亚洲AV无码XXX麻豆艾秋| 日日操夜夜操免费视频| 亚洲成人精品久久| 九九免费观看全部免费视频| 久久久久亚洲精品无码网址| 亚洲JIZZJIZZ妇女| 亚洲视频在线免费播放| 国产成人亚洲精品| 四虎永久成人免费影院域名| 性生大片视频免费观看一级| 亚洲国产精品无码一线岛国| 最近中文字幕大全中文字幕免费| 亚洲一级免费视频| 全亚洲最新黄色特级网站 | 国产在线观看片a免费观看| 中文字幕亚洲精品无码| 亚洲情侣偷拍精品| 麻豆亚洲AV成人无码久久精品 | 亚洲Av综合色区无码专区桃色| 国产精品亚洲专区无码WEB| 亚洲日韩在线第一页| 一级毛片免费观看不卡的| 亚洲精品字幕在线观看| 131美女爱做免费毛片| 亚洲AV永久无码精品网站在线观看| 久久乐国产精品亚洲综合| 亚洲成人免费在线观看| 美女免费视频一区二区三区| 亚洲av不卡一区二区三区| 小小影视日本动漫观看免费|