• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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
    主站蜘蛛池模板: 亚洲AV永久无码精品| AV无码精品一区二区三区| 精品久久人妻av中文字幕| 国产专区日韩精品欧美色| 500av导航大全精品| 亚洲国产精品久久电影欧美| 麻豆国产精品VA在线观看不卡| 你懂的国产精品| 97视频在线观看这里只有精品| 欧美亚洲国产成人精品| 亚洲乱码精品久久久久..| 精品国产成人在线| 9999国产精品欧美久久久久久| 成人国产精品999视频| 久久久久久国产精品免费无码| 香蕉依依精品视频在线播放 | 久久亚洲精品无码观看不卡| 欧美日韩精品| 国产精品无码不卡一区二区三区| 久久青青草原精品影院| 98视频精品全部国产| 国产综合色在线精品| 精品免费人成视频app| 久久亚洲精品成人av无码网站| 亚洲国产人成精品| 免费人欧美日韩在线精品| 精品亚洲欧美中文字幕在线看 | 中文精品一卡2卡3卡4卡| 国产精品99久久精品| 91久久精品91久久性色| 国产精品日本一区二区不卡视频| 国内精品久久久久影院日本| 精品乱码一区二区三区四区| 国产午夜精品免费一区二区三区| 精品一区二区三区波多野结衣| 久久99精品久久久久久hb无码| 精品人妻久久久久久888| 久久99精品国产自在现线小黄鸭| 精品国产三级a∨在线欧美| 91精品成人免费国产| 国产成人精品日本亚洲网址 |