1. 程式人生 > >nginx負載均衡的一些問題和具體配置

nginx負載均衡的一些問題和具體配置

對於伺服器叢集的搭建,nginx負載均衡是很好的方式:思路如下圖

這裡的session採用了session共享的方式,這樣來避免一些情況下的session丟失。下面我會具體說到。

session丟失:是因為檔案儲存session的方式會把session儲存到當前伺服器中,通過cookie中的sessionID來獲取相應的session,如果第二次請求跟第一次請求不再一個伺服器上那麼session就沒了。

nginx的分配方式:

1.輪詢,也是nginx的預設分配方式

這種方式就會造成我上面說到的session丟失的問題。

輪詢的方式可以通過配置weight的方式來實現權重的控制 權重越高 分配到的機率也就越高。

2.ip_hash

每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,就不會造成session丟失的問題。

3.url_hash

按訪問url的hash結果來分配請求,使同樣的url定向到同一個後端伺服器。

4.fair(需要伺服器支援)

這種分配方式就比較智慧了,根據伺服器的響應時間來分配請求,根據時時的伺服器狀態來職能分配。


明確了上面的問題,session最好放到快取中,最常用的memcache就可以 只要簡單的配置下就ok了。

修改php.ini

session.save_handler = memcache  
session.save_path = "tcp://127.0.0.1:11211" 

把檔案儲存快取快取儲存就可以實現session的貢獻 key是sessionID value就是序列號後的session內容

ps:memcache伺服器要是宕機的話會很尷尬。

==============================================

知道了session的問題,明確了分配方式下面就是具體的配置了:

在http {}配置模組裡新增upstream 在server配置中通過proxy_pass命令來實現代理分配

upstream test {

             #ip_hash;//分配方式,預設為輪詢

             server 192.168.1.111 weight 1;

             server 192.168.1.112;

             server 192.168.1.113;

         }

server {

        listen       80;

        server_name  test;

        location / {

              #設定主機頭和客戶端真實地址,以便伺服器獲取客戶端真實IP

             proxy_set_header Host $host;

             proxy_set_header X-Real-IP $remote_addr;

             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

             #禁用快取

             proxy_buffering off;

             #反向代理的地址

             proxy_pass http://test;     

        }

}

ps:如果不設定proxy_set_header  你獲取到的客戶端地址都變成你代理伺服器的地址了 就尷尬了。。。所以最好都設定一下。

總結:

注意session的問題,選擇合理的分配方式。還要根據公司的流量,pv來看看是不是真的需要應用負載均衡。

每一個伺服器的執行狀態,安裝的環境版本最好都保持一致,否則會有問題,對於DB的讀取,也要做好合理的安排。如果單機的時候mysql的可訪問許可權要是localhost那麼換成叢集以後記得修改,否則就死了......

值得注意的是,如果採用了負載均衡,在佈置程式碼的時候就會很麻煩,所以自動化運維也是很必要的一件事,我看過一篇帖子是美團的自動化運維發展史,每個公司的具體情況都不一樣,所以沒有好的公共的方法可以實現 適合大多數公司的自動化運維。一般都是自己的運維人員開發一套適合公司情況的自動化運維繫統。

目前就想到這麼多,歡迎指正。= =  今天搞一下HHVM,搞好了我會貼出來。。。。(如果不懶的話今天就會貼出來,懶的話就不知道啥時候了:)


相關推薦

nginx負載均衡與反向代理配置

upstream 193.168.81.128{     server localhost:8080 weight=1 max_fails=2 fail_timeout=30s;     server localhost:8081 weight=1 max

nginx負載均衡及主備配置

先負載均衡 nginx的負載均衡有4種模式: 1)、輪詢(預設)       每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。 2)、weight       指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情

Linux下Nginx負載均衡多個tomcat配置

Linux下安裝nginx和安裝多個tomcat的方法這裡不過多介紹,不清楚的可參考:Linux安裝nginx:Linux安裝多個tomcat:當我們伺服器安裝好了nginx,並且安裝了多臺tomcat

nginx負載均衡一些問題具體配置

對於伺服器叢集的搭建,nginx負載均衡是很好的方式:思路如下圖 這裡的session採用了session共享的方式,這樣來避免一些情況下的session丟失。下面我會具體說到。 session丟失:是因為檔案儲存session的方式會把session儲存到當前伺服器中,

基於nginxtengine的tcp反向代理,負載均衡 安裝配置

zip http 端口 arc -s pro 進入 iteye obj 先下載nginx_tcp_proxy_module模塊。 wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/mast

多tomcat服務nginx負載均衡配置 linux 配置多個tomcat

1、nginx服務安裝及配置,詳見:linux 配置之安裝nginx 2、多個tomcat服務安裝及配置,詳見:linux 配置多個tomcat 3、關鍵配置nginx.conf檔案 http { include /etc/nginx/mime.types;

linux 1.3 nginx 負載均衡配置檔案

今日內容 nginx 1.編譯安裝配置完成 /opt/nginx11/html/index.html 這是網頁的首頁檔案 nginx.conf主配置檔案學習 如下 worker_processes 4; nginx工作程序數,根據cpu的核數定義 events { worker_connection

nginx負載均衡配置PHP-FPM

PHP開發基本上都知道兩種執行環境,分別是LNMP和LAMP。區別主要在N和A上,當然從細節上來區分,兩個P也有不一樣的地方。不談之前的淺淡理解,最近一個專案上要配合進行PHP伺服器指向的切換。發現A伺服器上安裝了apache,B伺服器上安裝了nginx,每次請求B伺服器的n

配置nginx負載均衡keepalivednfs磁碟共享

環境說明3臺虛擬機器CentOS 6.5 x86_64,安裝好hengdalnmp.zip (lnmp1.3)主nginx負載均衡器:192.168.223.130  (通過keepalived配置了VIP:192.168.223.160供外使用) 副nginx負載均衡器:1

nginx負載均衡配置

war eal ade remote dock lis upstream doc 配置 http {   upstream docker {       server 192.168.88.106:10001;       server 192.168.88.1

BasePath問題-nginx負載均衡配置

.... class ip地址 htm post 細致 rpo 均衡 css 在配置nginx+tomcat好後。將項目加入到webapps中。發現訪問主頁時,css與js訪問不到,導致主頁布局出錯。細致分析原因後發現css與js的地址是basePath得出的。而bas

nginx負載均衡簡單配置

.org star gin def lis down pes timeout install nginx負載均衡簡單配置準備三臺虛擬機來做這個實驗:172.16.160.99 web服務器172.16.160.103 web服務器172.16.160

Nginx負載均衡配置實例詳解

負載均衡 命令 成功 介紹 nginx 重啟nginx 不能 測試 forward [導讀] 負載均衡是我們大流量網站要做的一個東西,下面我來給大家介紹在Nginx服務器上進行負載均衡配置方法,希望對有需要的同學有所幫助哦。負載均衡先來簡單了解一下什麽是負載均衡,

12.17 Nginx負載均衡 12.18 ssl原理 12.19 生成ssl密鑰對12.20 Nginx配置ssl

12.17 nginx負載均衡 12.18 ssl原理 12.19 生成ssl密鑰對12.20 nginx配置ssl12.17 Nginx負載均衡12.18 ssl原理12.19 生成ssl密鑰對12.20 Nginx配置ssl擴展針對請求的uri來代理 http://ask.apelearn.com/que

Nginx負載均衡、ssl原理、生成ssl密鑰對、Nginx配置ssl

lnmp架構Nginx負載均衡當用戶訪問nginx定制好的域名時,nginx通過轉發到幾臺真實的站點,通過upstream實現[root@centos7 vhost]# vim /usr/local/nginx/conf/vhost/load.confupstream www.tt.com#自定義域名{#

nginx負載均衡mysql主主被動模式基礎架構綜合部署

nginx負載均衡 mysql主從(主主被動互備模式) 1.結構思路 準備用5個虛機,一個虛機安裝nginx來配置負載均衡,兩個虛機做web服務器,另外兩個虛機,安裝mysql,做主主被動配置,每次web只讀取一個mysql服務。 2.具體實施步驟 用vmware最小化安裝5個虛機,我用的是c

linux的Nginx負載均衡、ssl原理、生成ssl密鑰對、Nginx配置ssl介紹

block server u tlsv1 host fda 彈出 配置ssl 重新編譯 openssl Nginx的負載均衡 1. 查找www.qq.com域名對應IP做測試 [root@gary-tao ~]# yum install -y bind-utils /

Nginx負載均衡、ssl原理、生產ssl密鑰對、Nginx配置ssl

基於 location 顯示 工作流程 流程 創建 docs 有效 match 12.17 Nginx負載均衡 Nginx負載均衡即為當代理服務器將自定義的域名解析到多個指定IP時,通過upstream來保證用戶可以通過代理服務器正常訪問各個IP。 編輯配置文件

LNMP(Nginx負載均衡,SSL原理,Nginx配置SSL,生產SSL密鑰對)

orm mage 解碼 web服務 bind 先來 mkdir padding ddr 一、Nginx負載均衡負載均衡:單從字面上的意思來理解就可以解釋N臺服務器平均分擔負載,不會因為某臺服務器負載高宕機而某臺服務器閑置的情況。那麽負載均衡的前提就是要有多臺服務器才能實現,

[轉載]nginx負載均衡+keepalived三主(多主)配置

rtu bucket 次數 with 信息 .gz plain int x86_64 nginx負載均衡+keepalived三主(多主)配置 1.實驗環境,實現目標三臺主機分別配置nginx負載均衡對後端多臺主機做轉發,同時配置keepalived實現HA,保證任意主機出