nginx+tomcat負載均衡實現session共享

Nginx+tomcat 負載均衡

一、環境介紹

1.本次實驗共3臺虛擬機(rhel6.2-64)

     192.168.232.147(nginx)

     192.168.232.154(tomcat)

     192.168.232.155(tomcat)

2.安裝並配置JDK

3.配置相關環境變量(profile,hosts)

4.準備好一個web項目,以便用於測試是否負載均衡,本次實驗用一以前寫的權限管理的模塊

二、安裝配置tomcat

1.在192.168.232.154,192.168.232.155機器安裝tomcat

2.下載一個linux版本的apache-tomcat-7.0.64.tar.gz解壓即可用

3.在<Host>標籤裏添加

<Context  path="" docBase="/root/webapps/permission" reloadable="false"/>

4.創建/root/webapps目錄,然後把permission這個web項目放到該目錄下,啓動tomcat,訪問

http://192.168.232.154:8080/ , http://192.168.232.154:8080/ 可以訪問到permission項目的首頁。

這裏可以放任意的web項目,我好久沒寫WEB項目了,所以手頭上沒有現存的web項目可用,所以隨便找了4年前寫的權限管理的web項目就拿來用了。


三、安裝配置Nginx

1.下載nginx-1.2.6.tar.gz 並解壓放到指定的目錄下

2.確保nginx編譯所具備的運行環境

3.安裝pcre-devel openssl openssl-devel

(1)配置本地yum,使得yum安裝時能找到安裝包

(2)安裝:yum -y install pcre-devel openssl openssl-devel

4.創建www用戶:useradd www

5.準備編譯安裝環境

./configure --user=www --group=www --prefix=/usr/local/nginx  --with-http_stub_status_module --with-http_ssl_module

6.編譯安裝,進到nginx解壓的根目錄:cd /root/app/nginx-1.2.6

make && make install

7.檢查nginx安裝是否成功

[root@storm1 nginx-1.2.6]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

8.訪問nginx默認主頁:http://192.168.232.147:80/,可以看到nginx歡迎主頁面

到此Nginx安裝完畢


四、配置nginx+tomcat集成,其實只需配置nginx,tomcat不用動

1.進到安裝指定的目錄:/usr/local/nginx,把nginx.conf簡單的改成如下

user  www www;
worker_processes  1;
pid     /usr/local/nginx/logs/nginx.pid;
events {
    use epoll;
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    include     /usr/local/nginx/conf/proxy.conf;
    sendfile        on;
    tcp_nopush      on;
    keepalive_timeout  65;
    log_format  $upstream_addr  $status $request_time   $time_local     $remote_user    $http_user_agent;
    upstream panguoyuan.com {
      server  192.168.232.154:8080;
      server  192.168.232.155:8080;
                }

        server{
            listen 80;
            server_name panguoyuan.com;
            location / {
                proxy_pass         http://panguoyuan.com;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            }
        }
}

2.在192.168.232.147機器上的hosts如下

[root@storm1 conf]# cat /etc/hosts
192.168.232.147 storm1
192.168.232.154 storm2
192.168.232.155 storm3
192.168.232.147 panguoyuan.com

3.啓動服務並驗證負載均衡

分別在192.168.232.154,192.168.232.155機器把tomcat服務啓動

在192.168.232.147把nginx服務啓動:/usr/local/nginx/sbin/nginx

到此爲止,nginx+tomcat負載均衡安裝配置結束

用瀏覽器訪問:panguoyuan.com,然後分別在192.168.147的/usr/local/nginx/logs/access.log 和192.168.232.154,192.168.232.155機器上的/root/app/apache-tomcat-7.0.64/logs目錄下的localhost_access_log.2015-09-04.txt文件裏都會記錄有響應客戶端的訪問日誌。


一臺機器多實例的改進方案

在從性能和資源的利用率角度來分析,企業應用部署都不會在一臺服務器上只部署一個實例,一般至少都兩個實例以上進行部署,所以下面我在192.168.232.154和192.168.232.155上分別啓動兩個實例。

1.把上面的apache-tomcat-7.0.64重命名爲tomcat1,再把tomcat1複製一份命名爲tomcat2

2.在tomcat2中的server.xml的相關端口修改如下信息

(1)8005---->9005

(2)8080---->9090

(3)8009---->9009

保存退出,然後把tomcat1,tomcat2都啓動,從以下圖可看出6個端口都已經開啓了


(4)另一臺機器也重複做同樣的操作

3.修改/usr/local/nginx/conf/nginx.conf

 upstream panguoyuan.com {
      server  192.168.232.154:8080;
      server  192.168.232.154:9090;
      server  192.168.232.155:8080;
      server  192.168.232.155:9090;
   }

4.重啓nginx,訪問panguoyuan.com,然後分別到4個tomcat下查看localhost_access_log.2015-09-04.txt日誌,都可以看到有訪問的日誌信息。



session共享

一、安裝memcached

1.下載安裝包

 wget http://www.monkey.org/~provos/libevent-1.3.tar.gz

 wget http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz

2.在安裝memcached之前必須先安裝libevent

(1)tar -zxvf libevent-1.3.tar.gz

(2)進到libevent-1.3

      ./configure --prefix=/usr

      make && make install

測試libevent是否安裝成功

[root@storm3 libevent-1.3]#  ls -al /usr/lib | grep libevent
lrwxrwxrwx   1 root root     21 Sep  5 02:06 libevent-1.3.so.1 -> libevent-1.3.so.1.0.3
-rwxr-xr-x   1 root root 313551 Sep  5 02:06 libevent-1.3.so.1.0.3
-rw-r--r--   1 root root 502116 Sep  5 02:06 libevent.a
-rwxr-xr-x   1 root root    805 Sep  5 02:06 libevent.la
lrwxrwxrwx   1 root root     21 Sep  5 02:06 libevent.so -> libevent-1.3.so.1.0.3

3.安裝memcached

# tar -xzvf memcached-1.2.2.tar.gz
# cd memcached-1.2.2
# ./configure --with-libevent=/usr
# make
# make install

4.檢查memcached是否安裝成功

[root@storm3 memcached-1.2.2]#  ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 142620 Sep  5 02:12 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 153737 Sep  5 02:12 /usr/local/bin/memcached-debug

5.啓動memcached服務

/usr/local/bin/memcached -d -m 10 -u root -l 192.168.232.155 -p 12000 -c 256 -P /tmp/memcached.pid

6.啓動memcached時報錯並解決

/usr/local/bin/memcached: error while loading shared libraries: libevent-1.3.so.1: cannot open shared object file: No such file or directory

7.解決辦法,執行如下兩個命令

(1)LD_DEBUG=libs memcached -v

(2)ln -s /usr/lib/libevent-1.3.so.1 /usr/lib64/libevent-1.3.so.1

(3)再次啓動

    /usr/local/bin/memcached -d -m 10 -u root -l 192.168.232.155 -p 12000 -c 256 -P /tmp/memcached.pid


8.測試memcached

[root@storm3 memcached-1.2.2]# telnet 192.168.232.155 12000
Trying 192.168.232.155...
Connected to 192.168.232.155.
Escape character is '^]'.
set username 0 0 10
panguoyuan
STORED
get username
VALUE username 0 10
panguoyuan
END

二、向tomcat的lib目錄下添加memcached的依賴包

couchbase-client-1.0.3.jar  memcached-session-manager-1.5.1.jar      msm-kryo-serializer-1.5.1.jar
javolution-5.4.3.1.jar      memcached-session-manager-tc7-1.5.1.jar  msm-xstream-serializer-1.5.1.jar
memcached-2.6.jar           msm-javolution-serializer-1.5.1.jar

三、修改tomcat的content.xml的內容

 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"   
    memcachedNodes="n1:192.168.232.155:12000"   
    requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"   
    sessionBackupAsync="false"   
    sessionBackupTimeout="100"   
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   
    copyCollectionsForSerialization="false" />  

四、啓動tomcat



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