1. 程式人生 > >使用nginx配置mysql負載均衡

使用nginx配置mysql負載均衡

這段時間初步瞭解了一點nginx,主要時因為在公司上班我老大要我配置使用,果然工作還是非常有助於學習的。

關於nginx的安裝我就不多說了,網上一搜一大把

需要注意的是,nginx在1.9版本之前是隻能配置http協議的,不接受tcp協議的代理,所以nginx最常見的功能是伺服器的負載均衡配置,大致流程如下:

以TONCAT 的web伺服器舉例:

Nginx的作用主要就是分發請求,減少單個Tomcat的壓力,從而達到提高伺服器承載請求的能力(也就是能夠處理高併發的情況伺服器不會癱瘓)

使用Nginx配置mysql負載均衡與上述差不多,只不過TOMCAT將不再連線同一個資料庫伺服器,而是連線nginx,nginx分發請求給不同的資料庫伺服器。

需要注意的是,這種情況下,我為了保證TOMCAT拿到的資料是正確的,需要保證不同資料庫之間的資料是同步的,我這次應用中使用的是mysql自帶的同步功能,設定為主主同步(實際上就是多個主從同步),這裡暫時不做過多介紹,我將另起一篇博文介紹mysql的主主同步配置

配置了mysql負載均衡後的拓撲圖大致如下:

mysql負載均衡的配置也是十分簡單:

在nginx.conf文字最後一行新增下述程式碼即可:

stream {
    server {
       listen 3306;
       proxy_pass db;    
    }
    upstream db {
       server 192.168.18.130:3305;
       server 192.168.18.129:3305;
    }

}

需要說明的是,上述配置中監聽了3306埠,即3306埠將被nginx佔用,而mysql的預設使用埠為3306,這將導致mysql無法啟動,所以需要將mysql的埠號改為其他埠(本文中將其設定成3305,這將會在mysq主主同步的博文中說明),proxy_pass即為代理地址,關於nginx的優化還有許多內容,在日後的學習中將會逐步更新

程式碼需要在nginx1.9版本以上才支援,如果時1.9版本以下,載入配置檔案時會報錯說無法識別stream。