- 概述
通常情況下,一個Tomcat站點由于可能出現(xiàn)單點故障及無法應付過多客戶復雜多樣的請求等問題,不能單獨應用于生產(chǎn)環(huán)境下,所以需要一套更可靠的解決方案來完善web站點架構(gòu)。
nginx是一款優(yōu)秀的http服務器軟件,它能夠支持多達50000個并發(fā)連接數(shù)的響應,擁有強大的靜態(tài)資源處理能力,運行穩(wěn)定,并且內(nèi)存,CPU等系統(tǒng)資源消耗非常低。目前有很多大型網(wǎng)站都應用nginx作為后端網(wǎng)站程序的反向代理及負載均衡。
本案例我們將已nginx作為負載均衡器,反向代理,tomcat作為節(jié)點服務器。
- 案例環(huán)境
主機 | IP地址 |
---|---|
nginx服務器 | 192.168.177.132 |
tomcat服務器1 | 192.168.177.145 |
tomcat服務器2 | 192.168.177.135 |
tomcat服務器
安裝jdk(1.8版本)
# tar xf apache-tomcat-8.5.23.tar.gz /opt # tar xf jdk-8u144-linux-x64.tar.gz /opt //解壓安裝包
# mv apache-tomcat-8.5.23/ /usr/local/tomcat8 # mv jdk1.8.0_144/ /usr/local/Java //便于管理
# vim /etc/profile //設置環(huán)境變量 export JAVA_HOME=/usr/local/java export JRE_HOME=/usr/local/java/jre export PATH=$PATH:/usr/local/java/bin export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib # source /etc/profile
# java -version //查看java版本信息 java version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-b12) OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
安裝tomcat
# ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup # ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown //放在/usr/bin下便于識別命令
# tomcatup //開啟服務 # netstat -anpt | grep 8080 //查看tomcat端口是否開啟 # http://192.168.177.145:8080/ //測試默認測試頁是否正常顯示(節(jié)點) # vim /usr/local/tomcat8/webapps/ROOT/index.jsp //修改默認網(wǎng)頁內(nèi)容(站點) <h1>this is 145!!!</h1>
==注==:兩臺tomcat服務器配置完全一樣
nginx服務器
手工編譯安裝
# tar zxvf nginx-1.12.0.tar.gz -C /opt # yum install pcre-devel zlib-devel gcc gcc-c++ -y //安裝環(huán)境包 # useradd -M -s /sbin/nologin nginx //創(chuàng)建管理nginx的用戶 # cd /opt/nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx //指定運行的用戶 --group=nginx //指定運行的組 --with-http_stub_status_module //啟用統(tǒng)計狀態(tài) # make && make install # ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ //讓系統(tǒng)識別命令 # nginx -t //驗證語法
編寫便于service管理的腳本
# cd /etc/init.d/ vim nginx #!/bin/bash # chkconfig: - 99 20 # description: Nginx Service Control Script PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) $PROG ;; stop) kill -s QUIT $(cat $PIDF) ;; restart) $0 stop $0 start ;; reload) kill -s HUP $(cat $PIDF) ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac exit 0 # chmod +x /etc/init.d/nginx //執(zhí)行權(quán)限 # chkconfig --add nginx # chkconfig --level 35 nginx on # service nginx stop # netstat -ntap | grep 80 # service nginx start # netstat -ntap | grep 80
修改配置文件
# vim /usr/local/nginx/conf/nginx.conf #keepalive_timeout 0; keepalive_timeout 65; #gzip on; 添加: upstream tomcat_server { #添加 server 192.168.177.145:8080 weight=1; //權(quán)重相同,頁面會反復在以下兩個頁面間來回切換 server 192.168.177.135:8080 weight=1; } server { listen 80; .....省略 location / { # root html; # index index.html index.htm; proxy_pass http://tomcat_server; //添加一行 ,把nginx的默認站點通過 proxy_pass方法代理到設定好的tomcat_server負載均衡服務器上 } # service nginx restart //啟用nginx服務//