CentOS 7通过Nginx反向代理实现多Tomcat负载均衡,centosnginx


系统环境: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的安装

使用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 shutdownquit — graceful shutdownreload — reloading the configuration filereopen — 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 119.29.81.95:8081 weight=2;
        server 119.29.81.95:8082 weight=2;
        server 119.29.81.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通过反向代理实现负载均衡就已经完成啦。

相关内容