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" />