nginx負載均衡高可用_第1頁
nginx負載均衡高可用_第2頁
nginx負載均衡高可用_第3頁
nginx負載均衡高可用_第4頁
nginx負載均衡高可用_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1 nginx負載均衡高可用1.1 什么是負載均衡高可用nginx作為負載均衡器,所有請求都到了nginx,可見nginx處于非常重點的位置,如果nginx服務器宕機后端web服務將無法提供服務,影響嚴重。為了屏蔽負載均衡服務器的宕機,需要建立一個備份機。主服務器和備份機上都運行高可用(High Availability)監(jiān)控程序,通過傳送諸如“I am alive”這樣的信息來監(jiān)控對方的運行狀況。當備份機不能在一定的時間內收到這樣的信息時,它就接管主服務器的服務IP并繼續(xù)提供負載均衡服務;當備份管理器又從主管理器收到“I am alive”這樣的信息時,它就釋放服務IP地址,這樣的主服務器就

2、開始再次提供負載均衡服務。1.2 keepalived+nginx實現主備1.2.1 什么是keepalivedkeepalived是集群管理中保證集群高可用的一個服務軟件,用來防止單點故障。 Keepalived的作用是檢測web服務器的狀態(tài),如果有一臺web服務器死機,或工作出現故障,Keepalived將檢測到,并將有故障的web服務器從系統中剔除,當web服務器工作正常后Keepalived自動將web服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web服務器。1.2.2 keepalived工作原理keepalived是以VRRP協議為實現基

3、礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議。虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(VIP = Virtual IP Address,虛擬IP地址,該路由器所在局域網內其他機器的默認路由為該vip),master會發(fā)組播,當backup收不到VRRP包時就認為master宕掉了,這時就需要根據VRRP的優(yōu)先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。k

4、eepalived主要有三個模塊,分別是core、check和VRRP。core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。VRRP模塊是來實現VRRP協議的。 詳細參考:Keepalived權威指南中文.pdf1.2.3 keepalived+nginx實現主備過程 初始狀態(tài)nginx負載均衡服務器(主)keepalivednginx負載均衡服務器(備)keepalived心跳tomat服務器群 主機宕機nginx負載均衡服務器(主)keepalivednginx負載均衡服務

5、器(備)keepalived心跳tomat服務器群 主機恢復nginx負載均衡服務器(主)keepalivednginx負載均衡服務器(備)keepalived心跳tomat服務器群1.2.4 高可用環(huán)境1.2.5 安裝keepalived分別在主備nginx上安裝keepalived,參考“安裝手冊”進行安裝:1.2.6 配置keepalived 主nginx修改主nginx下/etc/keepalived/keepalived.conf文件! Configuration File for keepalived#全局配置global_defs notificati

6、on_email #指定keepalived在發(fā)生切換時需要發(fā)送email到的對象,一行一個 XXXXXX.com notification_email_from XXXXXX.com #指定發(fā)件人 #smtp_server XXX #指定smtp服務器地址 #smtp_connect_timeout 30 #指定smtp連接超時時間 router_id LVS_DEVEL #運行keepalived機器的一個標識vrrp_instance VI_1 state MASTER #標示狀態(tài)為MASTER 備份機為BACKUP interface eth0 #設置實例綁定的網卡 virtual_r

7、outer_id 51 #同一實例下virtual_router_id必須相同 priority 100 #MASTER權重要高于BACKUP 比如BACKUP為99 advert_int 1 #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒 authentication #設置認證 auth_type PASS #主從服務器驗證方式 auth_pass 8888 virtual_ipaddress #設置vip 00 #可以多個虛擬IP,換行即可 備nginx修改備nginx下/etc/keepalived/keepalived

8、.conf文件配置備nginx時需要注意:需要修改state為BACKUP , priority比MASTER低,virtual_router_id和master的值一致! Configuration File for keepalived#全局配置global_defs notification_email #指定keepalived在發(fā)生切換時需要發(fā)送email到的對象,一行一個 XXXXXX.com notification_email_from #指定發(fā)件人 #smtp_server XXX #指定smtp服務器地址 #smtp_connect_timeout 30 #指定smtp連接

9、超時時間 router_id LVS_DEVEL #運行keepalived機器的一個標識vrrp_instance VI_1 state BACKUP #標示狀態(tài)為MASTER 備份機為BACKUP interface eth0 #設置實例綁定的網卡 virtual_router_id 51 #同一實例下virtual_router_id必須相同 priority 99 #MASTER權重要高于BACKUP 比如BACKUP為99 advert_int 1 #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒 authentication #設置認證 auth_type P

10、ASS #主從服務器驗證方式 auth_pass 8888 virtual_ipaddress #設置vip 00 #可以多個虛擬IP,換行即可 1.2.7 測試主備nginx都啟動keepalived及nginx。service keepalived start./nginx 初始狀態(tài)查看主nginx的eth0設置:vip綁定在主nginx的eth0上。查看備nginx的eth0設置:vip沒有綁定在備nginx的eth0上。訪問,可以訪問。 主機宕機將主nginx的keepalived停止或將主nginx關機(相當于模擬宕機),查看主

11、nginx的eth0:eth0沒有綁定vip注意這里模擬的是停止 keepalived進程沒有模擬宕機,所以還要將nginx進程也停止表示主nginx服務無法提供。查看備nginx的eth0:vip已經漂移到備nginx。訪問,可以訪問。 主機恢復將主nginx的keepalived和nginx都啟動。查看主nginx的eth0:查看備nginx的eth0:vip漂移到主nginx。查看備nginx的eth0:eth0沒有綁定vip訪問:,正常訪問。注意:主nginx恢復時一定要將nginx也啟動(通常nginx啟動要加在開機啟動中),否則即使vip漂移到主nginx也無法訪問。

12、1.2.8 解決nginx進程和keepalived不同時存在問題 問題描述keepalived是通過檢測keepalived進程是否存在判斷服務器是否宕機,如果keepalived進程在但是nginx進程不在了那么keepalived是不會做主備切換,所以我們需要寫個腳本來監(jiān)控nginx進程是否存在,如果nginx不存在就將keepalived進程殺掉。 nginx進程檢測腳本在主nginx上需要編寫nginx進程檢測腳本(check_nginx.sh),判斷nginx進程是否存在,如果nginx不存在就將keepalived進程殺掉,check_nginx.sh

13、內容如下:#!/bin/bash# 如果進程中沒有nginx則將keepalived進程kill掉A=ps -C nginx -no-header |wc -l # 查看是否有 nginx進程 把值賦給變量A if $A -eq 0 ;then # 如果沒有進程值得為 零 service keepalived stop # 則結束 keepalived 進程fi將check_nginx.sh拷貝至/etc/keepalived下,腳本測試:將nginx停止,將keepalived啟動,執(zhí)行腳本:sh /etc/keepalived/check_nginx.sh從執(zhí)行可以看出自動將keepali

14、ved進程kill掉了。 修改keepalived.conf修改主nginx的keepalived.conf,添加腳本定義檢測:注意下邊紅色標識地方:#全局配置global_defs notification_email #指定keepalived在發(fā)生切換時需要發(fā)送email到的對象,一行一個 XXXXXX.com notification_email_from miaoruntu #指定發(fā)件人 #smtp_server XXX #指定smtp服務器地址 #smtp_connect_timeout 30 #指定smtp連接超時時間 router_id LVS_DEVEL #運行

15、keepalived機器的一個標識vrrp_script check_nginx script "/etc/keepalived/check_nginx.sh" #監(jiān)控腳本 interval 2 #時間間隔,2秒 weight 2 #權重vrrp_instance VI_1 state MASTER #標示狀態(tài)為MASTER 備份機為BACKUP interface eth0 #設置實例綁定的網卡 virtual_router_id 51 #同一實例下virtual_router_id必須相同 priority 100 #MASTER權重要高于BACKUP 比如BACKUP為99 advert_int 1 #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒 authentication #設置認證 auth_type PASS #主從服務器驗證方式 auth_pass 8888 trac

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論