Nginx+Tomcat多實例負載均衡

業務需求css

一、在一臺服務器上建立3個Tomcat實例html

二、Nginx服務器負責調度Tomcat服務器java

三、它的域名是:tomcat.zjzd.cnlinux


一、IP地址規劃nginx

172.16.30.1     Nginxweb

172.16.30.2     Tomcatapache

172.16.30.254   Windowsvim

172.16.30.2 Tomcat瀏覽器

二、安裝JDK並配置環境緩存

#/etc/init.d/iptables stop
#setenforce 0
#wget http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz    //也能夠經過百度下載
#mv jdk-7u79-linux-x64.tar.gz jdk1.7.0_79.tar.gz
#tar xf jdk1.7.0_79.tar.gz
#mkdir /usr/java/
#mv jdk1.7.0_79 /usr/java/
#vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_79
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
#source /etc/profile
#echo $JAVA_HOME
#java -version

三、搭建tomcat多實例

(1)搭建第一個tomcat實例

#wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-6/v6.0.48/bin/apache-tomcat-6.0.48.tar.gz
#tar xf apache-tomcat-6.48.tar.gz
#mv apache-tomcat-6.48 /usr/local/tomcat1
#cp /usr/local/tomcat1/conf/server.xml /usr/local/tomcat1/conf/server.xml.bak
#vim /usr/local/tomcat1/conf/server.xml
<Context path="/" docBase="/data/webapps/www1" reloadable="true"/>
#mkdir -p /data/webapps/www1
#cd /data/webapss/www1/
#vim index.jsp
<html>
<body>
<h1>Tomcat 1 jsp test page</h1>
<%=new java.util.Date()%>
</body>
</html>
#/usr/local/tomcat1/bin/startup.sh
#ps -ef | grep tomcat

(2)搭建第二個tomcat實例

#cp -a /usr/local/tomcat1 /usr/local/tomcat2
#cp -a /data/webapps/www1 /data/webapps/www2
#vim /usr/local/tomcat2/conf/server.xml
<Context path="/" docBase="/data/webapps/www2" reloadable="true"/>
#vim /data/webapps/www2/index.jsp
<html>
<body>
<h1>Tomcat 2 jsp test page</h1>
<%=new java.util.Date()%>
</body>
</html>
#sed -i 's/8005/8006/g;s/8009/8010/g;s/8080/8081/g' /usr/local/tomcat2/conf/server.xml
#/usr/local/tomcat2/bin/startup.sh
#ps -ef | grep tomcat

(3)搭建第三個tomcat實例

#cp -a /usr/local/tomcat1 /usr/local/tomcat3
#cp -a /data/webapps/www1 /data/webapps/www3
#vim /usr/local/tomcat3/conf/server.xml
<Context path="/" docBase="/data/webapps/www3" reloadable="true"/>
#vim /data/webapps/www3/index.jsp
<html>
<body>
<h1>Tomcat 3 jsp test page</h1>
<%=new java.util.Date()%>
</body>
</html>
#sed -i 's/8005/8007/g;s/8009/8011/g;s/8080/8082/g' /usr/local/tomcat3/conf/server.xml
#/usr/local/tomcat3/bin/startup.sh
#ps -ef | grep tomcat
#netstat -tunlp | grep java           
tcp        0      0 :::8080                     :::*                        LISTEN      5926/java                
tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      5926/java                     
tcp        0      0 :::8009                     :::*                        LISTEN      5926/java

注:

http端口:8080 能夠經過web頁面直接訪問(nginx+tomcata整合)

shutdown端口:8005  主要負責啓動關閉.

ajp端口:8009 主要負責經過ajp均衡(經常使用於apache和tomcat整合)


測試:http://172.16.30.2:8080  http://172.16.30.2:8081  http://172.16.30.2:8082

172.16.30.1 Nginx

四、配置Nginx負載均衡

(1)安裝Nginx

#/etc/init.d/iptables stop
#setenforce 0
#useradd www
#yum install pcre pcre-devel openssl openssl-devel
#wget http://nginx.org/download/nginx-1.10.2.tar.gz
#tar -xf nginx-1.10.2.tar.gz
#cd nginx-1.10.2.tar.gz
#./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-pcre
#make && make install
#/usr/local/nginx/sbin/nginx -t
#/usr/local/nginx/sbin/nginx 
#netstat -tunlp | grep 80

(2)配置主配置文件

#cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
#vim /usr/local/nginx/conf/nginx.conf
worker_processes  1;
error_log  logs/error.log;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
    include domains/*;     //虛擬主機目錄
}

(3)配置負載均衡虛擬主機配置文件

#mkdir /usr/local/nginx/conf/domains
#vim  /usr/local/nginx/conf/domains/tomcat.zjzd.cn
upstream tomcat_web {
         server 172.16.30.2:8080 weight=1 max_fails=2 fail_timeout=30s;
         server 172.16.30.2:8081 weight=1 max_fails=2 fail_timeout=30s;
         server 172.16.30.2:8082 weight=1 max_fails=2 fail_timeout=30s;
}
server
  {
    listen       80;
    server_name tomcat.zjzd.cn;
location /
    {
         proxy_next_upstream http_502 http_504 error timeout invalid_header
         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_pass http://tomcat_web;
         index  index.jsp index.html;
    }
}
#/usr/local/nginx/sbin/nginx -t
#/usr/local/nginx/sbin/nginx -s reload

(4)測試

172.16.30.254 Windows

首先找到C:\Windows\System32\drivers\etc\hosts文件,而後右擊選擇"Edit with notepad++"添加172.16.30.1 tomcat.zjzd.cn,並經過瀏覽器訪問進行測試


http://tomcat.zjzd.cn    //平均調度這三個實例

wKioL1g9PBqAsEYIAAAQC32gpr8838.png

圖1.1

wKioL1g9PBuCAwCRAAAQO_oqHwk793.png

圖1.2

wKiom1g9PBugvaP1AAAQbZDFFyA974.png

圖1.3

五、配置Nginx動靜分離

#vim  /usr/local/nginx/conf/domains/tomcat.zjzd.cn
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
    {
    root /data/webapps/www;
    #expires定義用戶瀏覽器緩存的時間爲3天,若是靜態頁面不常更新,能夠設置更長,這樣能夠節省帶寬和緩解服務器的壓力
    expires      3d;
    }
#mkdir -p /data/webapps/www
#vim /data/webapps/www/index.html
this s a static page!
#cd /data/webapps/www
#wget http://www.baidu.com/img/bd_logo1.png
#mv bd_logo1.png log.png
#/usr/local/nginx/sbin/nginx -t
#/usr/local/nginx/sbin/nginx -s reload


測試:http://tomcat.zjzd.cn/index.html http://tomcat.zjzd.cn/log.png

wKioL1g9OYfikx3YAAALrJU23ZA158.png

圖2

wKiom1g9OYfwJr8kAADASW6htno102.jpg

圖3.1

wKioL1g9OYjBxmNoAADAMpUnGcU185.jpg

圖3.2

注:須要對圖3.1和圖3.2說明的是,當瀏覽器第一次請求log.png圖片時會返回200的狀態碼,表明是從遠程服務器上請求的,第二次請求log.png時會返回304的狀態碼,表明請求的是從本地服務器上緩存的內容。在nginx配置文件中設置的靜態內容過時時間爲3天。當log.png文件失效時,例如替換log.png文件時。當再次刷新瀏覽器,會請求新的內容,可是新的內容不會正常顯示。

wKiom1g9OYiAPLzvAABGSV7ls3w942.png

圖4

注:當停掉172.16.30.2全部的Tomcat服務時,靜態內容會正常訪問,可是動態內容則不會正常訪問,由於作了動靜分離,因此纔會產生這種結果。

相關文章
相關標籤/搜索