nginx+keepalived實現服務器高可用及負載均衡

1.準備好兩臺服務器,每臺服務器都安裝nginx和keepalivednginx

 Nginx的安裝
    1. 下載nginx
      官網:http://nginx.org/
    2. 上傳並解壓nginx
      tar -zxvf nginx-1.8.1.tar.gz -C /usr/local/src
    3. 編譯nginx
      #進入到nginx源碼目錄
      cd /usr/local/src/nginx-1.8.1
 
      #檢查安裝環境,並指定未來要安裝的路徑
      ./configure --prefix=/usr/local/nginx
 
      #缺包報錯 ./configure: error: C compiler cc is not found
 
      #使用YUM安裝缺乏的包
      yum -y install gcc pcre-devel openssl openssl-devel
 
      #編譯安裝
      make && make install
 
      安裝完後測試是否正常:
        /usr/local/nginx/sbin/nginx
      查看端口是否有ngnix進程監聽
      netstat -ntlp | grep 80shell

   keepalived安裝
  1.下載keepalived官網:http://keepalived.org
  2.將keepalived解壓到/usr/local/src目錄下
    tar -zxvf keepalived-1.2.19.tar.gz -C /usr/local/src
  3.進入到/usr/local/src/keepalived-1.2.19目錄
    cd /usr/local/src/keepalived-1.2.19
  4.開始configure
    ./configure --prefix=/usr/local/keepalived
  5.#編譯並安裝
    make && make install
  6. 將keepalived添加到系統服務中
    拷貝執行文件
      cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
    將init.d文件拷貝到etc下,加入開機啓動項
      cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
    將keepalived文件拷貝到etc下
      cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    建立keepalived文件夾
      mkdir -p /etc/keepalived
    將keepalived配置文件拷貝到etc下
      cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
    添加可執行權限
      chmod +x /etc/init.d/keepalived
 
    ##以上全部命令一次性執行:
      cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
      cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
      cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
      mkdir -p /etc/keepalived
      cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
      chmod +x /etc/init.d/keepalived
      chkconfig --add keepalived
      chkconfig keepalived on
 
    添加keepalived到開機啓動
      chkconfig --add keepalived
      chkconfig keepalived ontomcat

 

2.nginx配置負載均衡服務器

  找到nginx.conf配置文件編輯,在http這個節下面配置一個叫upstream的,後面的名字能夠隨意取,可是要和location下的proxy_pass http://後的保持一致網絡

http {
  upstream tomcats {
  server 192.168.122.168:8080 weight=2;#weight表示多少個
  server 192.168.122.169:8080 weight=1;
  }location ~ .*\.(jsp|do|action) {
  proxy_pass http://tomcats; #tomcats是後面的tomcat服務器組的邏輯組號
}}

 

 

 

 

 

3.利用keepalived實現高可靠(HA)負載均衡

 1.keepalived虛擬IP,jsp

  修改配置文件: /etc/keepalived/keepalived.conf測試

#MASTER節點spa

global_defs {
}
vrrp_instance VI_1 {
state MASTER #指定A節點爲主節點 備用節點上設置爲BACKUP便可
interface eth0 #綁定虛擬IP的網絡接口
virtual_router_id 51 #VRRP組名,兩個節點的設置必須同樣,以指明各個節點屬於同一VRRP組
priority 100 #主節點的優先級(1-254之間),備用節點必須比主節點優先級低
advert_int 1 #組播信息發送間隔,兩個節點設置必須同樣
authentication { #設置驗證信息,兩個節點必須一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定虛擬IP, 兩個節點設置必須同樣
192.168.122.60/24 #若是兩個nginx的ip分別是192.168.122.61,,...62,則此處的虛擬ip跟它倆同一個網段便可
}
}router

 

 

 

 

 

 

 

 

 

 

#BACKUP節點

 

global_defs {
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.33.60/24
}
}

  

 

 

 

 

 

 

 

 

 

#分別啓動兩臺機器上的keepalived

service keepalived start

測試:

殺掉master上的keepalived進程,你會發現,在slave機器上的eth0網卡多了一個ip地址

查看ip地址的命令:  ip addr

 

實質是在搶佔192.168.122.168/24配置的ip

 

 4.  配置keepalived心跳檢查

原理:

Keepalived並不跟nginx耦合,它倆徹底不是一家人

可是keepalived提供一個機制:讓用戶自定義一個shell腳本去檢測用戶本身的程序,返回狀態給keepalived就能夠了

#MASTER節點

global_defs {
}
  #進程在就返回0不在就返回1
vrrp_script chk_health {
script "[[ `ps -ef | grep nginx | grep -v grep | wc -l` -ge 2 ]] && exit 0 || exit 1"
interval 1 #每隔1秒執行上述的腳本,去檢查用戶的程序ngnix
weight -2
}
 
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 1
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
 
track_script {
chk_health
}
 
virtual_ipaddress {
10.0.0.10/24
}
 
notify_master "/usr/local/keepalived/sbin/notify.sh master"
notify_backup "/usr/local/keepalived/sbin/notify.sh backup"
notify_fault "/usr/local/keepalived/sbin/notify.sh fault"
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#添加切換通知腳本

vi /usr/local/keepalived/sbin/notify.sh

 

 

 

#添加執行權限

chmod +x /usr/local/keepalived/sbin/notify.sh

 

#BACKUP節點

 

 

 

 

#在第二臺機器上添加notify.sh腳本

#分別在兩臺機器上啓動keepalived

service keepalived start

chkconfig keepalived on

 

最後訪問虛擬ip的資源路徑,如:192.168.122.60:8080/helloworld  

相關文章
相關標籤/搜索