業務需求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 //平均調度這三個實例
圖1.1
圖1.2
圖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
圖2
圖3.1
圖3.2
注:須要對圖3.1和圖3.2說明的是,當瀏覽器第一次請求log.png圖片時會返回200的狀態碼,表明是從遠程服務器上請求的,第二次請求log.png時會返回304的狀態碼,表明請求的是從本地服務器上緩存的內容。在nginx配置文件中設置的靜態內容過時時間爲3天。當log.png文件失效時,例如替換log.png文件時。當再次刷新瀏覽器,會請求新的內容,可是新的內容不會正常顯示。
圖4
注:當停掉172.16.30.2全部的Tomcat服務時,靜態內容會正常訪問,可是動態內容則不會正常訪問,由於作了動靜分離,因此纔會產生這種結果。