CentOS 7通過Nginx反向代理實現多Tomcat負載均衡

系統環境:CentOS 7.3 64位 + JDK 1.8

軟件版本:Nginx 1.8.1,Tomcat 8

前言:本人一直對Nginx挺感興趣的,之前也通過網上的許多文章學習Nginx,但是沒有多大成效,而且加上前段時間比較忙,所以暫停對Nginx的學習,不過最近相對沒那麼忙了,而且想起之前我們項目經理對我說的一句話,問我知不知道Nginx,然後我跟他說了我之前學習Nginx的事情,但是他推薦我去看官方的英文文檔,不過也有道理,這個東西既然是那家公司出的,那麼肯定他官方的文檔裏面記載着所有的一切,雖然我高考時英語就只有50多分,滿分是150分,即使看起來很吃力,我也還是堅持的看了一個下午,但是收穫確實非常大,真的比起之前在網上看的許多文章收穫多得很多很多。看懂後自己也使用了Nginx的反向代理實現了多個Tomcat的負載均衡,因此有了這篇文章,希望能對有需要的人帶來幫助吧!

推薦:Nginx官方文檔

一、JDK的安裝

JDK安裝的方法有很多種,這裏就不一一列舉了,簡單的說一下我個人採取的方式。

首先通過官方下載Linux使用的JDK版本,這裏使用的爲jdk-8u162-linux-x64.tar.gz

然後在通過以下命令在CentOS中創建文件夾,並將下載好的JDK上傳到該文件夾中並解壓。

[root@VM_134_196_centos /]# cd /usr
[root@VM_134_196_centos usr]# mkdir java
[root@VM_134_196_centos usr]# cd java
[root@VM_134_196_centos java]# tar -zxvf jdk-8u162-linux-x64.tar.gz 
解壓完成後再通過以下命令配置JDK環境變量

[root@VM_134_196_centos java]# vim /etc/profile
在文件中添加以下JDK的環境變量

#################################
#JDK環境變量配置
#################################
export JAVA_HOME=/usr/java/jdk1.8.0_162
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
配置完成後使用以下命令讓修改生效以及檢測是否配置成功

[root@VM_134_196_centos java]# source /etc/profile
[root@VM_134_196_centos java]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
若成功輸出JDK的版本號信息,則證明JDK的配置已經完成了。

至此我們的第一步就OK了!

二、Tomcat的安裝

Tomcat的安裝相對比較簡單,只需要通過官方下載Linux版本的Tomcat再上傳到服務器並解壓即可。

這裏使用的Tomcat版本爲apache-tomcat-8.5.24.tar.gz,下載完成後通過通過以下命令在CentOS中創建文件夾,並將下載好的Tomcat上傳至該文件夾進行解壓,由於用到多個tomcat,所以解壓後再修改tomcat的文件夾名以及端口號等。

創建文件夾

[root@VM_134_196_centos /]# cd usr
[root@VM_134_196_centos usr]# mkdir tomcat
解壓Tomcat

[root@VM_134_196_centos usr]# cd tomcat/
[root@VM_134_196_centos tomcat]# tar -zxvf apache-tomcat-8.5.24.tar.gz 
修改Tomcat文件名
[root@VM_134_196_centos tomcat]# mv apache-tomcat-8.5.24 apache-tomcat-8.5.24-1
修改Tomcat配置文件

[root@VM_134_196_centos tomcat]# vim apache-tomcat-8.5.24-1/conf/server.xml 

配置文件所需修改的端口號如下圖,保持各個Tomcat對應的端口號不一樣即可




爲了體現出各個Tomcat的區別,順便修改一下各個tomcat的index.jsp文件用於區分tomcat

[root@VM_134_196_centos tomcat]# vim apache-tomcat-8.5.24-1/webapps/ROOT/index.jsp 


最後各個tomcat都通過以下命令去啓動

[root@VM_134_196_centos tomcat]# cd apache-tomcat-8.5.24-1/bin/
[root@VM_134_196_centos bin]# ./startup.sh 
再通過訪問服務器測試各個Tomcat是否啓動成功,我本人裝了3個Tomcat,2個Tomcat 8以及1個Tomcat 7,Tomcat 7只是用於測試使用。

[root@VM_134_196_centos tomcat]# ls
apache-tomcat-7.0.82-1  apache-tomcat-7.0.82.tar.gz  apache-tomcat-8.5.24-1  apache-tomcat-8.5.24-2  apache-tomcat-8.5.24.tar.gz



至此,Tomcat的安裝也完成了!

三、Nginx的安裝

首先安裝所需環境

1、gcc

[root@VM_134_196_centos /]# yum install gcc-c++
2、PCRE pcre-devel

[root@VM_134_196_centos /]# yum install -y pcre pcre-devel
3、zlib

[root@VM_134_196_centos /]# yum install -y zlib zlib-devel
4、OpenSSL

[root@VM_134_196_centos /]# yum install -y openssl openssl-devel

使用wget命令下載Nginx以及解壓Nginx

[root@VM_134_196_centos /]# cd home
[root@VM_134_196_centos home]# wget -c https://nginx.org/download/nginx-1.8.1.tar.gz
[root@VM_134_196_centos home]# tar -zxvf nginx-1.8.1.tar.gz
配置,這裏使用的是默認配置,當然也可以自己配置,具體配置信息可查看Nginx安裝配置

[root@VM_134_196_centos home]# cd nginx-1.8.1/
[root@VM_134_196_centos nginx-1.8.1]# ./configure 
編譯安裝

[root@VM_134_196_centos nginx-1.8.1]# make
[root@VM_134_196_centos nginx-1.8.1]# make install
Nginx的默認安裝路徑是/usr/local/nginx,當然也可以通過以下指令查看nginx位置

[root@VM_134_196_centos nginx-1.8.1]# whereis nginx
nginx: /usr/local/nginx
[root@VM_134_196_centos nginx-1.8.1]# cd /usr/local/nginx
Nginx的常用指令有

  • nginx
  • stop — fast shutdown
  • quit — graceful shutdown
  • reload — reloading the configuration file
  • reopen — reopening the log files

nginx:啓動;

stop:查出nginx進程號再通過kill -9將進程關閉;

quit:等待任務處理完畢後再關閉nginx進程;

reload:重啓nginx;

reopen:重啓日誌文件。

詳情可查看官方文檔Beginner’s Guide

測試Ngxin是否安裝成功,先進入sbin文件夾對Nginx進行啓動

[root@VM_134_196_centos nginx]# cd sbin/
[root@VM_134_196_centos sbin]# ./nginx 
然後直接訪問服務器IP,若出現以下信息則說明到這裏我們的Nginx就安裝成功了!


四、配置Nginx完成反向代理、負載均衡

修改Nginx配置文件

[root@VM_134_196_centos sbin]# vim ../conf/nginx.conf

最終配置文件爲

#user  nobody;

events {
    # 各工程最大連接數
    worker_connections 1024;
}

http {
    # upstream 各服務器地址以及權重,權重越大代表訪問率越大
    upstream alie.com {
        server xxx.xx.xx.95:8081 weight=2;
        server xxx.xx.xx.95:8082 weight=2;
        server xxx.xx.xx.95:8083 weight=1;
    }

    server {
        # 端口默認80
        # 配置域名,由於沒有域名,因此使用localhost
        server_name localhost;

        location / {
            # 反向代理,這裏的地址與上面配置的upstream需一致,實現負載均衡
            proxy_pass http://alie.com;
            proxy_redirect default;
        }

    }

}
最後重啓Nginx並進行訪問測試

[root@VM_134_196_centos sbin]# ./nginx -s reload
直接訪問服務器的80端口,Nginx便會通過反向代理將請求轉發至配置好的服務器集羣中,通過不斷刷新可發現權重爲2的兩個服務器被訪問到的次數是比權重爲1的多的。




至此,使用Nginx通過反向代理實現負載均衡就已經完成啦。


本文到此就已經結束啦,希望能對有需要的人帶來幫助,同時也歡迎大家加以指正,共同學習,當然Nginx還有許多很強大的地方,例如靜動分離等。

最後也還是推薦大家可以通過官方文檔進行學習,即使自認爲英語很差的,其實從事這一行,英語水平都是在不知不覺中進步的。

最後感謝大家的觀看,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章