Linux環境搭建Nginx+Tomcat負載均衡叢集
Tomcat伺服器是一個免費的開放原始碼的web應用伺服器,屬於輕量級應用伺服器,是開發和除錯JSP程式的首選。由於Tomcat處理靜態HTML的能力運不及Apache或者Nginx,所以Tomcat通常是作為一個Servlet和JSP容器,單獨執行在後端。
- Nginx伺服器能支援高達50000個併發連線數的響應,擁有強大的靜態資源處理能力,執行穩定,並且記憶體、CPU等系統資源消耗非常低.
通常情況下,一個Tomcat站點由於可能出現單點故障及無法應付過多客戶複雜請求等問題,不能單獨應用於生產環境下,目前很多大型網站都應用Nginx伺服器作為後端網站程式的反向代理及負載均衡器,簡單來說就是Nginx作為負載均衡器,響應客戶端的請求,Tomcat作為應用伺服器的負載叢集,處理客戶端的請求,也就是說Nginx將訪問請求轉發給後端伺服器池的伺服器來處理。網站拓撲圖如圖所示:
案例環境:
主機作業系統IP地址主要軟體 Nginx伺服器RedHat7.3 x86_64192.168.113.151nginx-1.12.0.tar.gzTomcat伺服器1CentOS7.4 x86_64192.168.113.129jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gzTomcat伺服器2CentOS7.4 x86_64192.168.113.150jdk-8u91-linux-x64.tar.gz / apache-tomcat-8.5.16.tar.gz
- Tomcat1 server配置
1.啟動主機後關閉防火牆
systemctl disable firewalld.service //禁用防火牆服務 systemctl stop firewalld.service //關閉防火牆服務
2.安裝JDK,配置Java環境
(1).解壓jdk軟體至/opt目錄下,並將解壓後生成的jdk資料夾移到/usr/local/下,改名為java。
tar zxvf jdk-7u65-linux-x64.gz -C /opt mv jdk1.7.0_65/ /usr/local/java
(2).在/etc/profile.d/下建立java.sh指令碼。
[root@centos7-1 ~]# vim /etc/profile.d/java.sh export JAVA_HOME=/usr/local/java //設定Java根目錄 export PATH=$PATH:$JAVA_HOME/bin //在PATH環境變數中新增Java根目錄下的bin/子目錄
(3).將java.sh指令碼匯入到環境變數,使其生效
source /etc/profile.d/java.sh
(4).執行java-version命令檢視java版本是否和之前安裝的一致。
[root@centos7-1 ~]# java -version openjdk 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)
3.安裝配置Tomcat
(1).解壓apache-tomcat-8.5.16.tar.gz包至/opt目錄,並將解壓後生成的資料夾移動到/usr/local/下,改名為tomcat8。
tar zxvf apache-tomcat-8.5.16.tar.gz -C /opt/ mv apache-tomcat-8.5.16/ /usr/local/tomcat8
(2).啟動Tomcat
[root@centos7-1 ~]# /usr/local/tomcat8/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat8 Using CATALINA_HOME: /usr/local/tomcat8 Using CATALINA_TMPDIR: /usr/local/tomcat8/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar Tomcat started.
Tomcat預設執行在8080埠,執行netstat命令檢視8080埠監聽的資訊。
[root@centos7-1 ~]# netstat -ntap | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 1583/java
(3).開啟瀏覽器訪問測試http://192.168.113.129:8080/, 如果出現x下面的介面,則表示Tomcat已經配置啟動成功。
4.建立Java的web站點
(1).在根目錄下建立一個web目錄,並在裡面建立一個webapp1目錄,用於存放網站檔案。
[root@centos7-1 ~]# mkdir -pv /web/webapp1 mkdir: 已建立目錄 "/web" mkdir: 已建立目錄 "/web/webapp1"
(2).在webapp1目錄下建立一個index.jsp的測試頁面。
[root@centos7-1 ~]# vim /web/webapp1/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> //註釋 <html> <head> <title>JSP test1 page</title> //測試頁標題 </head> <body> <% out.println("Welcome to test site,);%> //測試頁主體內容 </body> </html>
(3).修改Tomcat的server.xml檔案。
定義一個虛擬主機,並將網站檔案路徑指向已經建立的/web/webapp1,在host段增加context段。
[root@centos7-1 ~]# vim /usr/local/tomcat8/conf/server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp1" path="" reloadable="false"> </Context>
- docBase:web應用的文件基準目錄
- reloadable: 設定監視“類”是否變化
- path="": 設定預設“類
(4).關閉Tomcat,再重新啟動。
/usr/local/tomcat8/bin/shutdown.sh //關閉Tomcat /usr/local/tomcat7/bin/startup.sh //重啟Tomcat
(5).透過瀏覽器訪問http://192.168.113.129:8080/, 出現下面的介面,說明Tomcat站點配置成功並且能夠執行JSP了。
- Tomcat2 server配置
- Tomcat2 server配置方法基本同Tomcat1,其中包括:
1.啟動主機後關閉防火牆。
2.安裝JDK,配置Java環境,版本與Tomcat1 server一致。
3.安裝配置Tomcat,版本與Tomcat1 server一致。
4.建立/web/webapp1目錄,修改Tomcat配置檔案server.xml檔案,將網站檔案目錄更改到/web/webapp1/路徑下。
5.在/web/webapp1/路徑下建立index.jsp,為了區別將測試頁index.jsp的內容更改如下:
[root@localhost ~]# vim /web/webapp1/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> //註釋 <html> <head> <title>JSP test2 page</title> //測試頁標題 </head> <body> <% out.println("Welcome to test site,);%> //測試頁主體內容 </body> </html>
6.啟動tomcat,瀏覽器訪問http://192.168.113.150:8080/, 出現下面的介面,說明Tomcat站點配置成功並且能夠執行JSP了。
- Nginx伺服器配置
- 在Nginx伺服器192.168.113.151上安裝Nginx,反向代理兩個Tomcat站點,並實現負載均衡。
- 1.關閉防火牆
systemctl disable firewalld.service systemctl stop firewalld.service
- 2.安裝支援軟體
yum install gcc gcc-c++ make pcre pcre-devel zlib-devel openssl-devel -y
- 3.解壓並安裝Nginx
useradd -s /bin/false www //建立執行使用者www,強制禁止登陸系統shell環境 tar zxvf nginx-1.12.0.tar.gz -C /opt //解壓nginx軟體至/opt目錄下 cd /opt/nginx-1.12.0/ //切換到解壓後的nginx資料夾目錄下 ./configure \ //配置nginx的具體選項 --prefix=/usr/local/nginx \ --user=www \ --group=www \ --with-file-aio \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-http_flv_module \ --with-http_ssl_module
- --prefix=/usr/l,ocal/nginx:指定nginx安裝路徑
- --user=www,--group=www:指定執行的使用者和組
- --with-file-aio:啟用檔案修改支援
- --with-http_stub_status_module:啟用狀態統計
- --with-http_gzip_static_module:啟用gzip靜態壓縮
- --with-http_flv_module:啟用flv模組,提供尋求記憶體使用基於時間的偏移量檔案
- --with-http_ssl_module:啟用ssl模組
-
加q 群:834962734, 可獲取一份Java架構進階技術學習資源。(高併發+Spring原始碼+JVM原理解析+分散式架構+微服務架構+多執行緒併發原理等...這些成為架構師必備的內容)以及Java進階學習路線圖。
4.配置nginx.conf
vim /usr/local/nginx/conf/nginx.conf
(1).在http{...}中加入以下程式碼,設定負載均衡的伺服器列表,weight參數列示權值,權值越高被分配到的機率越大。為了使測試效果明顯,把權重設定為一樣。
upstream tomcat_server { server 192.168.113.129:8080 weight=1; server 192.168.113.150:8080 weight=1; } //配置後端服務池tomcat_server,以提供響應資料
(2).在http{...} - server{...} - location /{...}中加入一行“proxy_pass ” 。
location / { root html; index index.html index.htm; proxy_pass ; //配置將訪問請求轉發給後端伺服器池的伺服器處理 }
利用以上方式,把Nginx的預設站點透過proxy_pass方法代理到了設定好的tomcat_server負載均衡伺服器組上。
5.測試nginx配置檔案是否正確。
[root@RedHat7-1 ~]# /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
6.啟動Nginx服務並檢視其埠
[root@RedHat7-1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ //建立nginx主程式的軟連結,方便呼叫nginx命令 [root@RedHat7-1 ~]# nginx //啟動nginx服務 [root@RedHat7-1 ~]# netstat -ntap | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17819/nginx: master [root@RedHat7-1 ~]# killall -1 nginx //重啟nginx服務
- 測試負載均衡效果
1.開啟瀏覽器訪問http://192.168.113.151/.
2.不斷重新整理瀏覽器測試,可以看到由於權重相同,頁面會反覆在以下兩個頁面切換。
第一次訪問,出現test1的測試頁面,重新整理後,第二次訪問出現test2的測試頁面,這說明負載均衡集搭建成功,已經可以在兩個tomcat server站點間進行切換了。
真實環境中,伺服器叢集站點的內容相同,這裡是為了測試負載均衡集的效果而建立2個不同的測試頁面。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545684/viewspace-2286133/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Redis儲存Nginx+Tomcat負載均衡叢集的SessionRedisNginxTomcat負載Session
- 負載均衡叢集負載
- Linux環境下Nginx及負載均衡LinuxNginx負載
- Nginx+Tomcat部署負載均衡NginxTomcat負載
- dubbo叢集和負載均衡負載
- nginx+tomcat實現負載均衡NginxTomcat負載
- 負載均衡環境搭建實戰之apache和tomcat負載ApacheTomcat
- Nginx+Tomcat實現負載均衡、動靜分離叢集部署NginxTomcat負載
- 【環境搭建】RocketMQ叢集搭建MQ
- orleans叢集及負載均衡實現負載
- haproxy(單機)+mysql叢集負載均衡MySql負載
- Zookeeper 叢集環境搭建
- linux搭建LVS+keepalive+nginx實現叢集高效能負載均衡配置詳解LinuxNginx負載
- Linux 環境下搭建Hadoop叢集(全分佈)LinuxHadoop
- 3.RabbitMQ高階叢集搭建(Haproxy負載均衡、Keepalived高可用)MQ負載
- kubernetes叢集內排程與負載均衡負載
- Haproxy+Keepalived高可用負載均衡叢集負載
- 負載均衡 - MQTT Broker 叢集詳解(一)負載MQQT
- es 5.5.3叢集環境搭建
- 叢集,lvs負載均衡的四種工作模式負載模式
- Redis叢集環境搭建實踐Redis
- 12. Redis叢集環境搭建Redis
- LNMP 分散式叢集(一):Nginx+PHP平臺搭建與負載均衡配置LNMP分散式NginxPHP負載
- docker初體驗:docker部署nginx負載均衡叢集DockerNginx負載
- LVS+Keepalive 實現負載均衡高可用叢集負載
- 在 kubernetes 環境中實現 gRPC 負載均衡RPC負載
- k8s——搭建叢集環境K8S
- Mac 環境下 Redis 叢集的搭建MacRedis
- 高可用叢集環境搭建-留檔
- Linux LVS 負載均衡Linux負載
- Linux環境快速搭建elasticsearch6.5.4叢集和Head外掛LinuxElasticsearch
- mysql負載均衡搭建(haproxy)MySql負載
- 粘性會話負載均衡 - MQTT Broker 叢集詳解(二)會話負載MQQT
- centos7下配置nginx反向代理負載均衡叢集CentOSNginx負載
- 叢集、負載均衡、分散式的區別與聯絡負載分散式
- ZooKeeper 系列(二)—— Zookeeper單機環境和叢集環境搭建
- Nginx+Tomcat負載均衡,動靜分離群集部署解析NginxTomcat負載
- 搭建網路負載均衡(叢集nlb)和WDS映像檔案安裝win7負載Win7