nginx


nginx

文章插圖
nginx實現tomcat集群的負載均衡有幾種方式:
nginx

文章插圖
一,如果僅是對外提供一個頁面訪問,不用區分單一用戶,僅僅配置nginx負載均衡策略即可 。
nginx負載均衡策略主要分一下四種:
1)、輪詢
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器宕機,能自動剔除 。
2)、ip_hash 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器 。
3)、fair 按后端服務器的響應時間來分配請求,響應時間短的優先分配 。
4)、url_hash 按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效 。
二,如果涉及到用戶session,做一些鑒權緩存、存放臨時信息時,就必須做tomcat的session共享 。
目前可參考到的session共享方式主要分為兩種 。
1)利用tomcat自帶的組播機制,實現session復制 。
對tomcat及應用的若干配置文件進行配置即可實現,網上有很多資料可參考 。但這種方式些弊端,看過一些資料,不建議用session復制的方式 。在實際使用過程中,也發現有存在session莫名失蹤的現象 。
2)利用第三方機制存儲session 。
比較常見的是tomcat集成memcached服務器來存儲session 。實際項目中,我們采用過利用redis實現session存儲,redis高效的存取性能為高效的訪問提供了保障,但是目前redis的集群功能似乎沒有發布,如何解決redis的單點故障需要研究 。
nginx 負載均衡 負責轉發的那臺服務器 配置是否要求比較高:
展開全部


負責負載均衡轉發的服務遠比提供內容的服務要節省資源
相對于提供動態語言服務的服務器來說,只負責負載均衡的nginx服務器配置要求會更低
nginx做負載均衡時,只負責將請求轉發到指定的服務器并將結果返回,并不需要處理很多數據
真正對配置要求高的是運行動態腳本的服務器,它們要進行數據處理,連接數據庫等操作,更加復雜
我用nginx配置webservice負載均衡,怎么弄:
簡單的負載均衡配置 upstream backend { server backend1.example.com weight=5;#weight權重,權重越高發送到此臺服務器的請求概率越大 server backend2.example.com:8080; server backup1.example.com:8080 backup;#backup備份服務器,只有在非backup服務器都不能訪問時才會向此服務器分流
利用nginx實現Redis的負載均衡,應該怎么配置?:
網絡的負載均衡是一種動態均衡技術,通過一些工具實時地分析數據包,掌握網絡中的數據流量狀況,把任務合理均衡地分配出去 。這種技術基于現有網絡結構,提供了一種擴展服務器帶寬和增加服務器吞吐量的廉價有效的方法,加強了網絡數據處理能力,提高了網絡的靈活性和可用性 。以四臺服務器為例實現負載均衡: 安裝配置lvs 1. 安裝前準備: (1)首先說明,lvs并不要求集群中的服務器規格劃一,相反,可以根據服務器的不同配置和負載狀況,調整負載分配策略,充分利用集群環境中的每一臺服務器 。如下表: srv eth0 eth0:0 eth1 eth1:0 vs1 10.0.0.1 10.0.0.2 192.168.10.1 192.168.10.254 vsbak 10.0.0.3 192.168.10.102 real1 192.168.10.100 real2 192.168.10.101 其中,10.0.0.2是允許用戶訪問的ip 。(2)這4臺服務器中,vs1作為虛擬服務器(即負載平衡服務器),負責將用戶的訪問請求轉發到集群內部的real1,real2,然后由real1,real2分別處理 。client為客戶端測試機器,可以為任意操作系統 。(3)所有os為redhat6.2,其中vs1 和vsbak 的核心是2.2.19,而且patch過ipvs的包,所有real server的subnet mask 都是24位,vs1和vsbak 的10.0.0. 網段是24 位 。2.理解lvs中的相關術語 (1) ipvsadm :ipvsadm是lvs的一個用戶界面 。在負載均衡器上編譯、安裝ipvsadm 。(2) 調度算法: lvs的負載均衡器有以下幾種調度規則:round-robin,簡稱rr;weighted round-robin,簡稱wrr;每個新的連接被輪流指派到每個物理服務器 。least-connected,簡稱lc;weighted least-connected,簡稱wlc,每個新的連接被分配到負擔最小的服務器 。(3) persistent client connection,簡稱pcc,(持續的客戶端連接,內核2.2.10版以后才支持) 。所有來自同一個ip的客戶端將一直連接到同一個物理服務器 。超時時間被設置為360秒 。pcc是為https和cookie服務設置的 。在這處調度規則下,第一次連接后,所有以后來自相同客戶端的連接(包括來自其它端口)將會發送到相同的物理服務器 。但這也會帶來一個問題,因為大約有25%的internet 可能具有相同的ip地址 。(4) persistent port connection調度算法:在內核2.2.12版以后,pcc功能已從一個調度算法(你可以選擇不同的調度算法:rr、wrr、lc、wlc、pcc)演變成為了一個開關選項(你可以讓rr、 wrr、lc、wlc具備pcc的屬性) 。在設置時,如果你沒有選擇調度算法時,ipvsadm將默認為wlc算法 。在persistent port connection(ppc)算法下,連接的指派是基于端口的,例如,來自相同終端的80端口與443端口的請求,將被分配到不同的物理服務器上 。不幸的是,如果你需要在的網站上采用cookies時將出問題,因為http是使用80端口,然而cookies需要使用443端口,這種方法下,很可能會出現cookies不正常的情況 。(5)load node feature of linux director:讓load balancer 也可以處理users 請求 。(6)ipvs connection synchronization 。(7)arp problem of lvs/tun and lvs/dr:這個問題只在lvs/dr,lvs/tun 時存在 。3. 配置實例 (1) 需要的軟件包和包的安裝: i. piranha-gui-0.4.12-2*.rpm (gui接口cluster設定工具); ii. piranha-0.4.12-2*.rpm; iii. ipchains-1.3.9-6lp*.rpm (架設nat) 。取得套件或mount到光盤,進入rpms目錄進行安裝: # rpm -uvh piranha* # rpm -uvh ipchains* (2) real server群: 真正提供服務的server(如web server),在nat形式下是以內部虛擬網域的形式,設定如同一般虛擬網域中client端使用網域:192.168.10.0/24 架設方式同一般使用虛擬ip之局域網絡 。a. 設網卡ip real1 :192.168.10.100/24 real2 :192.168.10.101/24 b.每臺server均將default gateway指向192.168.10.254 。192.168.10.254為該網域唯一對外之信道,設定在virtual server上,使該網域進出均需通過virtual server。c.每臺server均開啟httpd功能供web server服務,可以在各real server上放置不同內容之網頁,可由瀏覽器觀察其對各real server讀取網頁的情形 。d.每臺server都開啟rstatd、sshd、rwalld、ruser、rsh、rsync,并且從vserver上面拿到相同的lvs.conf文件 。(3) virtual server: 作用在導引封包的對外主機,專職負責封包的轉送,不提供服務,但因為在nat型式下必須對進出封包進行改寫,所以負擔亦重 。a.ip設置: 對外eth0:ip:10.0.0.1 eth0:0 :10.0.0.2 對內eth1:192.168.10.1 eth1:0 :192.168.10.254 nat形式下僅virtual server有真實ip,real server群則為透過virtual server. b.設定nat功能 # echo 1 >; /proc/sys/net/ipv4/ip_forward # echo 1 >; /proc/sys/net/ipv4/ip_always_defrag # ipchains -p forward masq c.設定piranha 進入x-window中 (也可以直接編輯/etc/lvs.cf ) a).執行面板系統piranha b).設定“整體配置”(global settings) 主lvs服務器主機ip:10.0.0.2,選定網絡地址翻譯(預設) nat路徑名稱: 192.168.10.254,nat 路徑裝置: eth1:0 c).設定虛擬服務器(virtual servers) 添加編輯虛擬服務器部分:(virtual server)名稱:(任意取名);應用:http;協議: tcp;連接:80;地址:10.0..0.2;裝置:eth0:0; 重入時間:180 (預設);服務延時:10 (預設);加載監控工具:ruptime (預設);調度策略:weighted least-connections; 持續性:0 (預設); 持續性屏蔽: 255.255.255.255 (預設); 按下激活:實時服務器部分:(real servers); 添加編輯:名字:(任意取名); 地址: 192.168.10.100; 權重:1 (預設) 按下激活 另一架real server同上,地址:192.168.10.101 。d). 控制/監控(controls/monitoring) 控制:piranha功能的激活與停止,上述內容設定完成后即可按開始鍵激活piranha.監控器:顯示ipvsadm設定之routing table內容 可立即更新或定時更新 。(4)備援主機的設定(ha) 單一virtual server的cluster架構virtual server 負擔較大,提供另一主機擔任備援,可避免virtual server的故障而使對外服務工作終止;備份主機隨時處于預備狀態與virtual server相互偵測 a.備份主機: eth0: ip 10.0.0.3 eth1: ip 192.168.10.102 同樣需安裝piranha,ipvsadm,ipchains等套件 b.開啟nat功能(同上面所述) 。c.在virtual server(10.0.0.2)主機上設定 。a).執行piranha冗余度 ; b).按下“激活冗余度”; 冗余lvs服務器ip: 10.0.0.3;heartbeat間隔(秒數): 2 (預設) 假定在…秒后進入dead狀態: 5 (預設); heartbeat連接埠: 539 (預設) c).按下“套用”; d).至“控制/監控”頁,按下“在當前執行層添加pulse deamon” ,按下“開始”; e).在監控器按下“自動更新”,這樣可由窗口中看到ipvsadm所設定的routing table,并且動態顯示real server聯機情形,若real server故障,該主機亦會從監視窗口中消失 。d.激活備份主機之pulse daemon (執行# /etc/rc.d/init.d/pulse start) 。至此,ha功能已經激活,備份主機及virtual server由pulse daemon定時相互探詢,一但virtual server故障,備份主機立刻激活代替;至virtual server 正常上線后隨即將工作交還virtual server 。lvs測試 經過了上面的配置步驟,現在可以測試lvs了,步驟如下: 1. 分別在vs1,real1,real2上運行/etc/lvs/rc.lvs_dr 。注意,real1,real2上面的/etc/lvs 目錄是vs2輸出的 。如果您的nfs配置沒有成功,也可以把vs1上/etc/lvs/rc.lvs_dr復制到real1,real2上,然后分別運行 。確保real1,real2上面的apache已經啟動并且允許telnet 。2. 測試telnet:從client運行telnet 10.0.0.2,如果登錄后看到如下輸出就說明集群已經開始工作了:(假設以guest用戶身份登錄) [guest@real1 guest]$——說明已經登錄到服務器real1上 。再開啟一個telnet窗口,登錄后會發現系統提示變為: [guest@real2 guest]$——說明已經登錄到服務器real2上 。3. 測試http:從client運行iexplore http://10.0.0.2 因為在real1 和real2 上面的測試頁不同,所以登錄幾次之后,顯示出的頁面也會有所不同,這樣說明real server 已經在正常工作了 。

推薦閱讀