Ubuntu+Nginx+Tomcat+Memcached負載均衡

(一):Ubuntu中Nginx的安裝與配置
1.1 安裝Nginx
(1)在線安裝
$sudo apt-get install nginx
Nginx的版本是1.2.1
ubuntu安裝Nginx之後的文件結構大致爲:
所有的配置文件都在/etc/nginx下,並且每個虛擬主機已經安排在了/etc/nginx/sites-available下
啓動程序文件在/usr/sbin/nginx
日誌放在了/var/log/nginx中,分別是access.log和error.log
並已經在/etc/init.d/下創建了啓動腳本nginx
默認的虛擬主機的目錄設置在了/usr/share/nginx/www
(2)源代碼安裝
下載地址:http://nginx.org/download/
我這裏下載的是 nginx-1.3.9.tar.gz,安裝過程很簡單,如下:
./configure make
makeinstallnginx/usr/local/nginxconfnginx.confnginxsbinnginx1./configuresudoaptgetupdate2./configure:error:Ccompilerccisnotfoundsudoaptgetinstallgcc3./configure:error:theHTTPrewritemodulerequiresthePCRElibrary.sudoaptgetinstalllibpcre3libpcre3devsudoaptgetinstallopenssllibssldev4sudo:make:commandnotfoundsudoaptgetinstallbuildessentialsudoaptgetinstallmake1.2Nginx1 sudo /etc/init.d/nginx start
(2)源代碼安裝的啓動過程
cd/usr/local/nginx sbin/nginx
重啓:sudo /usr/local/nginx/sbin/nginx -s reload
然後就可以訪問了,http://localhost/ , 一切正常!如果不能訪問,先不要繼續,看看是什麼原因,
解決之後再繼續。
如果你的機器同時安裝了Apache,那上面的訪問方式就不能使用了,而且nginx都可能啓動不了,這是
因爲它們都是用了80這個端口。我們這裏將nginx的端口修改爲8080,
這裏主要修改nginx的配置文件nginx.conf,將一下這一行
listen 80;
修改爲
listen 8080;
然後就可以訪問了,http://localhost:8080/
1.3 Nginx配置
1.3.1 源碼編譯安裝配置
見附件;
1.3.2 在線安裝配置
Nginx的配置文件是/etc/nginx/nginx.conf,其中設置了一些必要的參數,我們發現其中這樣的語句:
include /etc/nginx/sites-enabled/*
可以看出/etc/nginx/sites-enabled/default文件也是一個核心的配置文件,其中包含了主要的配置信息,
如服務器跟目錄、服務器名稱、location信息和server信息。
對於源代碼安裝的nginx,配置文件爲/usr/local/nginx/conf/nginx.conf。
下面主要說明location的匹配規則:
(1)= 前綴的指令嚴格匹配這個查詢。如果找到,停止搜索。
(2)剩下的常規字符串,最長的匹配優先使用。如果這個匹配使用 ^~ 前綴,搜索停止。
(3)正則表達式,按配置文件裏的順序,第一個匹配的被使用。
(4)如果第三步產生匹配,則使用這個結果。否則使用第二步的匹配結果。
在location中可以使用常規字符串和正則表達式。
如果使用正則表達式,你必須使用以下規則:
(1)~* 前綴選擇不區分大小寫的匹配
(2)~ 選擇區分大小寫的匹配
例子:
location = / {
    # 只匹配 / 查詢。
    [ configuration A ]
}
  location / {
    # 匹配任何查詢,因爲所有請求都以 / 開頭。
# 但是正則表達式規則和長的塊規則將被優先和查詢匹配。
    [ configuration B ]
  }
  location ^~ /images/ {
    # 匹配任何以 /images/ 開頭的任何查詢並且停止搜索。
# 任何正則表達式將不會被測試。
    [ configuration C ]
  }
  location ~* .(gif|jpg|jpeg)$ {
# 匹配任何以 gif、jpg 或 jpeg 結尾的請求。
# 然而所有 /images/ 目錄的請求將使用 Configuration C。
   [ configuration D ]
  }
這裏你還要對正則表達式有一定的瞭解!!!

1.4 nginx的upstream目前支持的5種方式的分配
1、輪詢(默認)
每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
2、weight
指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4、fair(第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream backserver {
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器,後端服務器爲緩存時比較有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
在需要使用負載均衡的server中增加
proxy_pass http://backserver/ ;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示單前的server暫時不參與負載)
server 127.0.0.1:8080 weight=2; (weight 默認爲1.weight越大,負載的權重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup機器down或者忙的時候,請求backup機器)
}
max_fails :允許請求失敗的次數默認爲1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤。

(二):安裝Tomcat+配置memcached實現session共享
2.1 Tomcat要支持memcached管理Session,需要調用一些jar庫文件:見附件。
安裝memcached
Memcached官網:http://memcached.org/
安裝memcached需要先安裝libevent,libevent官網:http://libevent.org/
本次安裝版本:(附件中提供的版本爲memcached-1.4.24.tar.gz和libevent-2.0.20-stable.tar.gz)
memcached-1.4.20.tar.gz
libevent-2.0.21-stable.tar.gz
2.1安裝livevent
查看是否已安裝:# rpm qa ” grep libevent
如果已安裝且版本低於1.3,則先通過:

rpm -e libevent –nodeps 進行卸載。

tar zxvf libevent-2.0.20-stable.tar.gz

cd libevent-2.0.20-stable

sudo ./configure –prefix=/usr/local/libevent-2.0.20-stable #prefix指定安裝路徑

sudo make

sudo make install

安裝完成後,到prefix指定的目錄下,看看是否存在libevent-2.0.20-stable目錄,如下圖所示。

2.2安裝Memcached

tar zxvf memcached-1.4.20.tar.gz

cd memcached-1.4.20

sudo ./configure –prefix=/usr/local/memcached-1.4.24 –with-libevent=/usr/local/libevent-2.0.20-stable

sudo make

sudo make install

2.2.1檢查看裝情況
安裝完成後,到prefix指定的目錄下查看是否有memcached-1.4.20目錄,如下圖所示。

2.2.2查看memcached和libevent版本信息
首先定位到Memcached的bin目錄下:

cd /usr/local/memcached-1.4.24/bin

執行命令:

sudo ./memcached -i

2.2.3啓動memcached

sudo /usr/local/memcached-1.4.24/bin/memcached -d -v -p 12000 -m 125 -u cc

解釋:-d表示以守護進程方式運行memcached;-v表示輸出浸膏和錯誤信息;-p指定監聽的端口號;-m指定能使用的最大內存,單位MB;-u指定運行memcached的賬戶,非root用戶。
使用# ps -ef ” grep memcached查看進程。

關注基本選項: 說明
-p 監聽的TCP端口 (缺省: 11211)
-d 以守護進程方式運行memcached
-u 運行memcached的賬戶,非root用戶
-m 最大的內存使用,單位是MB,缺省是 64 MB
-c 軟連接數量,缺省是1024(最大併發連接數)
-v 輸出警告和錯誤信息
-vv 打印客戶端的請求和返回信息
-h 打印幫助信息
-i 打印memcached和libevent的版權信息

2.2 爲Tomcat配置memcached
配置文件目錄:tomcat\conf\context.xml
修改每臺tomcat的conf目錄下得context.xml文件或者server.xml文件,在其中加入如下任意一段代碼(注意:當使用多臺tomcat時,一定要使用non-sticky模式):
A:使用默認的sticky session,kryo序列化方式,memcached緩存
1.
2. …
3.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章