一般狀況下,一臺Tomcat站點因爲可能出現單點故障及沒法應付過多的客戶複雜多樣的請求等問題,不能單獨應用於生產環境下,因此須要使用負載均衡來解決這些問題。html
Nginx是一個很是優秀的http服務器軟件,它可以支持高達50000個併發鏈接數的響應,擁有強大的靜態資源處理能力,運行穩定,而且內存、CPU等系統資源消耗很是低。目前不少大型網站都應用Nginx服務器做爲後端網站程序的反向代理及負載均衡器,來提高整個站點的負載併發能力。java
開始準備工做,搭建下面的環境,爲了簡化,就不部署共享存儲服務器了,環境以下:
nginx
鏡像能夠到我網盤自行提取:https://pan.baidu.com/s/1YAtbAVRg7wejN3XRl28J1g
提取碼:2f7f web
[root@centos02 ~]# java -version <!--查看JDK是否安裝,若沒有,自行安裝--> 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) [root@centos02 ~]# systemctl stop firewalld <!--關閉防火牆--> [root@centos02 ~]# systemctl disable firewalld <!--禁止防火牆開機自動啓動--> [root@centos02 ~]# mount /dev/cdrom /mnt/ <!--掛載Linux光盤--> mount: /dev/sr0 寫保護,將以只讀方式掛載 [root@centos02 ~]# rm -rf /etc/yum.repos.d/CentOS-* <!--清除系統自帶yum源--> [root@centos02 ~]# tar zxvf /mnt/apache-tomcat-7.0.54.tar.gz -C /usr/src/ <!--解壓縮tomcat軟件包--> [root@centos02 ~]# mv /usr/src/apache-tomcat-7.0.54/ /usr/local/tomcat <!--將tomcat軟件包剪切到/usr/local/tomcat目錄--> [root@centos02 ~]# /usr/local/tomcat/bin/startup.sh <!--啓動tomcat服務-->
客戶端配置和服務器同網段的IP地址測試訪問tomcat是否正常http://192.168.100.20:8080
apache
[root@centos02 ~]# mkdir /var/www <!--建立網站根目錄--> [root@centos02 ~]# vim /var/www/index.jsp <!--編寫網站主頁測試文件--> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>test01</title> </head> <body> <% out.println("www.benet.com!!!");%> </body> </html> [root@centos02 ~]# vim /usr/local/tomcat/conf/server.xml <!--修改tomcat主配置文件發佈網站--> <!--定位到該行,而後添加下面兩行內容--> 126 <Context docBase="/var/www/" path="" reloadable="false"> 127 </Context> <!--docBase:web應用的文檔默認目錄--> <!--path=""設置默認「類」--> <!--reloadable設置監視「類」是否變化--> [root@centos02 ~]# /usr/local/tomcat/bin/shutdown.sh <!--關閉tomcat服務--> [root@centos02 ~]# /usr/local/tomcat/bin/startup.sh <!--啓動tomcat服務-->
客戶端訪問http://192.168.100.20:8080 會發現網站主頁內容已經成爲了咱們自行編寫的內容
至此,192.168.100.20的Tomcat就已經配置完成了,另外一臺Tomcat服務器192.168.100.30的配置和192.168.100.20的配置徹底同樣,將上面的配置在192.168.100.30服務器上配置一遍便可,(我這裏就懶省事直接複製了,嘿嘿)。不過爲了測試的時候能夠看出負載均衡的效果,讓咱們能夠看出每次訪問的服務器都不是同一臺,須要將兩臺tomcat服務器的網站主頁內容設置稱爲不同的內容。實際生產環境中,兩臺Tomcat訪問的必定是使用同一個共享存儲服務器,不論是哪臺服務器向用戶提供服務,用戶接受到的頁面必定是同樣的。vim
[root@centos03 ~]# mkdir /var/www <!--第二臺tomcat服務器上建立網站根目錄--> [root@centos02 ~]# scp /var/www/index.jsp root@192.168.100.30:/var/www/ <!--在第一臺tomcat服務器複製網站主頁測試文件到第二臺tomcat服務器--> The authenticity of host '192.168.100.30 (192.168.100.30)' can't be established. ECDSA key fingerprint is SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I. ECDSA key fingerprint is MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b. Are you sure you want to continue connecting (yes/no)? yes <!--輸入yes--> root@192.168.100.30's password: <!--輸入密碼--> index.jsp 100% 240 59.3KB/s 00:00 <!--上傳完成--> [root@centos03 ~]# cd /var/www/ <!--第二臺tomcat服務器上查看是否複製成功--> [root@centos03 www]# ls index.jsp [root@centos02 ~]# scp -r /usr/local/tomcat/ root@192.168.100.30:/usr/local/tomcat <!--複製tomcat服務全部配置文件到第二臺服務器--> root@192.168.100.30's password: <!--輸入密碼--> [root@centos03 ~]# cd /usr/local/tomcat/ <!--查看是否複製成功--> [root@centos03 tomcat]# ls bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work [root@centos03 ~]# vim /var/www/index.jsp <!--修改第二臺tomcat服務器的網站主頁測試文件--> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>test02</title> </head> <body> <% out.println("www.accp.com!!!");%> </body> </html> [root@centos03 ~]# /usr/local/tomcat/bin/startup.sh <!--啓動tomcat服務-->
客戶端訪問第二臺tomcat服務器http://192.168.100.30:8080
後端
[root@centos01 ~]# groupadd nginx <!--建立管理Nginx的用戶--> [root@centos01 ~]# useradd -M -s /sbin/nologin -g nginx nginx <!--建立管理Nginx的組--> [root@centos01 ~]# mount /dev/cdrom /mnt/ <!--掛載操做系統盤--> mount: /dev/sr0 寫保護,將以只讀方式掛載 [root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-* <!--清除系統自帶yum源--> [root@centos01 ~]# yum -y install pcre-devel zlib-devel openssl-devel <!--安裝Nginx依賴軟件--> [root@centos01 ~]# mount /dev/cdrom /mnt/ <!--切換Linux光盤--> mount: /dev/sr0 寫保護,將以只讀方式掛載 [root@centos01 ~]# tar zxvf /mnt/nginx-1.6.0.tar.gz -C /usr/src/ <!--解壓縮Nginx軟件包--> [root@centos01 ~]# cd /usr/src/nginx-1.6.0/ <!--進入nginx目錄--> [root@centos01 nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-file-aio --with-http_ssl_module --with-http_flv_module <!--配置Nginx--> [root@centos01 nginx-1.6.0]# make && make install <!--編輯及安裝Nginx--> [root@centos01 ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ <!--優化Nginx執行命令--> [root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf <!--修改Nginx主配置文件 --> 34 upstream tomcat_server { <!--添加此行--> 35 server 192.168.100.20:8080 weight=1; <!--添加此行--> <!--weight參數表示權重,權重越高,表示被分配到的機率越大。 <!--爲了測試效果明顯,這裏將權重設置爲同樣--> 36 server 192.168.100.30:8080 weight=1; <!--添加此行--> 37 } 38 server { 39 listen 80; <!--監聽端口號--> 40 server_name www.benet.com; <!--監聽域名--> 41 charset utf-8; <!--默認支持字符集--> 42 location / { 43 root html; 44 proxy_pass http://tomcat_server; <!--定位到該{ }中,寫入該行,「http://」後面的名字要和上面添加的upstream項後面的 名字一致,纔可實現調度--> 45 index index.html index.htm; 46 } [root@centos01 ~]# nginx -t <!--檢查Nginx主配置文件是否錯誤--> 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 [root@centos01 ~]# nginx <!--啓動Nginx服務--> [root@centos01 ~]# netstat -anptu | grep nginx <!--查看Nginx服務運行狀態--> tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4186/nginx: master
[root@centos01 ~]# umount /mnt/ <!--卸載光盤--> [root@centos01 ~]# mount /dev/cdrom /mnt/ <!--切換操做系統光盤--> mount: /dev/sr0 寫保護,將以只讀方式掛載 [root@centos01 ~]# yum -y install bind bind-chroot bind-utils <!--安裝DNS依賴軟件--> [root@centos01 ~]# echo "" > /etc/named.conf <!--清空主配置文件--> [root@centos01 ~]# vim /etc/named.conf <!--編輯主配置文件--> options { listen-on port 53 { any; }; directory "/var/named"; }; zone benet.com IN { type master; file "benet.com.zone"; }; [root@centos01 ~]# named-checkconf -z /etc/named.conf <!--檢查主配置文件是否錯誤--> [root@centos01 ~]# vim /var/named/benet.com.zone <!--編寫benet.com的正向解析區域配置文件--> $TTL 86400 @ SOA benet.com. root.benet.com.( 2019113001 1H 15M 1W 1D ) @ NS centos01.benet.com. centos01 A 192.168.100.10 www A 192.168.100.10 [root@centos01 ~]# named-checkzone benet.com /var/named/benet.com.zone <!--檢查正向解析區域配置文件是否錯誤--> zone benet.com/IN: loaded serial 2019113001 OK [root@centos01 ~]# chmod +x /var/named/benet.com.zone <!--添加執行權限--> [root@centos01 ~]# chown named:named /var/named/benet.com.zone<!--修改屬主屬組--> [root@centos01 ~]# systemctl start named <!--啓動named服務--> [root@centos01 ~]# systemctl enable named <!--設置開機自動啓動-->
客戶端添加DNS地址
centos
客戶端第一次訪問www.benet.com
tomcat
刷新一下網頁第二次訪問將會看到以下主頁內容:
能夠看到,咱們訪問的是Nginx服務器,真正處理訪問請求的是Tomcat服務器,並且每次訪問請求都是不一樣的Tomcat服務器來處理,效果也就顯而易見了。實際工做中兩個主頁內容是同樣的,我這裏只是想讓你們更好的看出效果因此設置 成爲了避免同樣的內容。服務器
—————— 本文至此結束,感謝閱讀 ——————