nginx負載均衡單點解決方案

2021-08-21 16:33:20 字數 3871 閱讀 6681

nginx有很強**功能,但是一台nginx就形成了單點,現在使用keepalived來解決這個問題,keepalived的故障轉移時間很短.nginx+keepalived雙機實現nginx反向**服務的高可用,一台nginx掛掉之後不影響應用也不影響內網訪問外網。

keepalived它是乙個基於vrrp協議來實現的web服務高可用方案,可以利用其來避免單點故障。乙個web服務至少會有2臺伺服器執行keepalived,一台為主伺服器(master),一台為備份伺服器(backup),但是對外表現為乙個虛擬ip,主伺服器會傳送特定的訊息給備份伺服器,當備份伺服器收不到這個訊息的時候,即主伺服器宕機的時候,備份伺服器就會接管虛擬ip,繼續提供服務,從而保證了高可用性。

nginx的安裝在我之前的部落格中已經寫過,這裡就不再贅述。

然後就是安裝keepalived​

命令:wget​ 

​進入解壓後的檔案中cd  /root/keepalived-1.2.19。如圖有乙個configure的可執行檔案​

在/usr/local檔案下新建keepalived資料夾

mkdir /usr/local/keepalived​

​接著執行./configure  --prefix=/usr/local/keepalived

這裡用nginx來負載均衡不用lvs來負載所以不用管這一行。

make&&make install​ 來安裝完後/usr/local/keepalived下生成四個資料夾代表安裝成功。

這是/usr/local/keepalived資料夾的目錄結構

安裝完以後執行以下命令以方便以後管理

mkdir /etc/​keepalived

cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/

cp /usr/local/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/

啟動keepalived:service keepalived start

keepalived 雙主配置

​主:真實ip192.168.110.134   vip192.168.110.80

備:​真實ip192.168.110.135   vip192.168.110.90

主:vrrp_instance vi_1 {

state master      // 定義為主伺服器

inte***ce eth0       //vip繫結的網絡卡

virtual_router_id 51   //虛擬路由的id,主從必須一致

priority 100      //優先順序,隨機值但是主伺服器的一定比從伺服器的大

advert_int 1

authentication {

auth_type pass

auth_pass 1111

virtual_ipaddress {

192.168.110.80         //繫結的虛擬ip

vrrp_instance vi_2 {

state backup         //定義為從伺服器

inte***ce eth0        //vip繫結的網絡卡

virtual_router_id 52  //虛擬路由的id,主從必須一致

priority 90       //優先順序,隨機值但是主伺服器的一定比從伺服器的大

advert_int 1

authentication {

auth_type pass

auth_pass 1111

virtual_ipaddress{

192.168.110.90      //繫結vip

​配置玩重啟keepalived:service keepalived restart

​ip  addr 檢視

備:​​vrrp_instance vi_1 {

state backup

inte***ce eth0

virtual_router_id 51

priority 90

advert_int 1

authentication {

auth_type pass

auth_pass 1111

virtual_ipaddress {

192.168.110.80

vrrp_instance vi_2 {

state master

inte***ce eth0

virtual_router_id 52

priority 100

advert_int 1

authentication {

auth_type pass

auth_pass 1111

virtual_ipaddress{

192.168.110.90

測試:​主伺服器正常工作時,為了方便區別驗證

主伺服器關機或者服務程序死掉立馬切換備伺服器,切換時間人感覺不出來。

負載均衡:

​nginx 的 upstream預設是以輪詢的方式實現負載均衡,這種方式中,每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。另外一種方式是ip_hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。 

​每個主伺服器如下配置

vi /etc/nginx/nginx.conf

​upstream test {

server 127.0.0.1 down; //本地伺服器不參與負載

server 192.168.110.136:80 weight=5; //後台伺服器

server 192.168.110.137:80 weight=5;//後台伺服器

配置非常詳細文章:

負載均衡解決方案

某 隨著知名度的提高,使用者訪問量日漸增多,近段時間以來,由於訪問量的激增,服務不可用的情況時有發生。針對這種狀況,結合實際情況,設計了一套解決方案。技術實現 1 負載均衡。2臺同樣配置的linux伺服器,核心支援lvs,配置keepalived工具,即可實現負載 一旦其後的真實伺服器出現故障,ke...

負載均衡 session解決方案

一 使用資料庫存放session 此種方案把session資訊儲存到資料庫表,這樣實現不同應用伺服器間session資訊的共享。適合併發量不大的 優點 實現簡單 缺點 由於資料庫伺服器相對於應用伺服器更難擴充套件且資源更為寶貴,在高併發的web應用中,最大的效能瓶頸通常在於資料庫伺服器。因此如果將 ...

aspx頁面中標題單點解決方案

web頁面標題的單點處理技巧 目前存在的問題 一 整個 中aspx頁面標題通常沒有統一的存放位置,針對每個頁面要麼把頁面標題直接硬編碼在頁面的aspx檔案中,要麼通過aspx.cs動態寫進去 1.1中還要加入額外的標題控制項,2.0中可以使用page.title屬性 而整個站點如果網頁很多的話,這種...