用Keepalived搭建雙Nginx server叢集,防止單點故障

來源:互聯網
上載者:User

用Keepalived搭建雙Nginx server叢集,防止單點故障 瀏覽器訪問虛擬IP: 192.168.1.57, 該虛擬IP被Keepalived接管,兩個Keepalived進程分別運行在物理IP為192.168.1.56和192.168.1.59伺服器上,這兩個伺服器上都運行著Nginx server。Nginx server都監聽虛擬IP 192.168.1.57. Nginx背後有一些web app叢集,已經配置成upstream. 為了防止Nginx自己成為單點瓶頸,這裡採用了雙Nginx server的方式。每個Server都是Ubuntu 12.04. 假定我的第一台Ubuntu server物理IP地址是192.168.1.56,已經安裝了Nginx server,現在安裝Keepalived,後面稱這台為master server.[plain] apt-get install keepalived   另外一台Ubuntu server物理IP是192.168.1.59, 也安裝Nginx server和Keapalived. 後面稱這台為backup server. Nginx的安裝以及配置不是本文關注內容,請參考我的其他文章。現在開始配置master server. 安裝完成keepalived後,通過查看指令碼/etc/init.d/keepalived裡面發現,啟動設定檔的路徑是[plain] CONFIG=/etc/keepalived/keepalived.conf  但是該檔案現在還不存在。所以我建立一個,內容如下:[plain] # Settings for notifications                                                                                                                                                                                           global_defs {      notification_email {          csfreebird@gmail.com     # Email address for notifications                                                                                                                                                         }      notification_email_from keepalived@your_company.com  # The from address for the notifications                                                                                                                         smtp_server 127.0.0.1      smtp_connect_timeout 15  }    # Define the script used to check if haproxy is still working                                                                                                                                                          vrrp_script chk_http_port {      script "/etc/keepalived/check_nginx.sh" # check Nginx is alive or not                                                                                                                                                  interval 2 #                                                                                                                                                                                                           weight 2  }      # Configuation for the virtual interface                                                                                                                                                                               vrrp_instance VI_1 {      interface eth0      state MASTER        # set this to BACKUP on the other machine                                                                                                                                                          priority 101        # set this to 100 on the other machine                                                                                                                                                             virtual_router_id 51        smtp_alert          # Activate email notifications                                                                                                                                                                       authentication {      auth_type PASS      auth_pass 1111      # Set this to some secret phrase                                                                                                                                                               }        # The virtual ip address shared between the two loadbalancers                                                                                                                                                          virtual_ipaddress {      192.168.1.57      }        # Use the script above to check if we should fail over                                                                                                                                                                 track_script {      chk_http_port      }  }  說明:1. smtp_server必須要用127.0.0.12. 自己要建立一個檢查nginx進程的指令碼[plain] /etc/keepalived/check_nginx.sh  內容如下:[plain] !/bin/bash    # try to start nginx if nginx process is dead                                                                      # shutdonw keepalived process if start nginx failed                                           pid=`ps -C nginx --no-header |wc -l`  if [ $pid -eq 0 ];then      service nginx start      sleep 3      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then          service keepalived stop      fi  fi  3. 修改nginx的所有server配置,將server_name都改為虛擬IP[plain] server_name  192.168.1.57;   4. 注意,這裡的虛擬IP不是用修改/etc/network/interfaces的方式,而是在keepalived設定檔中直接設定,要想判斷是否成功,直接ping 就行了,ifconfig是看不到的。[plain] ping 192.168.1.57  PING 192.168.1.57 (192.168.1.57) 56(84) bytes of data.  64 bytes from 192.168.1.57: icmp_req=1 ttl=64 time=0.024 ms  64 bytes from 192.168.1.57: icmp_req=2 ttl=64 time=0.020 ms   對192.168.1.59做相同的配置,略有變化的是:[plain] vrrp_instance VI_1 {      interface eth0      state BACKUP  // changed      priority 100  // changed  通過輪流關閉master和backup,證明keepalived已經有效工作了。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.