Nginx反向代理实现多Tomcat负载均衡 (1)

教程:https://www.cnblogs.com/auguse/articles/13951019.html

一、新建虚拟机

二、Centos7更换镜像源

1.备份(针对所有CentOS可用,备份文件在当前路径下)

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2.安装wget

yum install -y wget

3.下载CentOS 7的repo文件

本人使用的阿里云第二个地址

1.阿里云源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

#或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

2.网易云源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo

4.更新镜像源

1.#清除缓存
yum clean all

2.#生成缓存
yum makecache

3.更新yum源,等待更新完毕即可。(执行加载完后会卡顿一会)
yum -y update

4.yum clean all

5. yum makecache

三、JDK1.8安装

1.上传文件

上传文件至tmp目录下

2.解压

1.进入tmp,解压到opt目录下。
--注意版本,别傻乎乎直接复制

cd /tmp

tar -zxvf jdk-8u211-linux-x64.tar.gz -C /opt

2.进入opt目录将jdk改名
cd /opt

mv jdk1.8.0_211 jdk1.8

3.配置环境变量

1.进入文件
vi /etc/profile

2.将下面的内容添加在末尾
# JAVA_HOME
export JAVA_HOME=/opt/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin

3.执行命令使配置生效
source /etc/profile

4.检测安装是否成功
java

javac

java -version

四、Tomcat8安装

由于是负载均衡,暂时安装2个Tomcat8

1.上传文件

上传至tmp目录下

2.解压

1.进入tmp目录,解压至opt目录下
cd /tmp

tar -zxvf apache-tomcat-8.5.55.tar.gz -C /opt

2.进入opt目录,改名改为tomcat1
cd /opt

mv apache-tomcat-8.5.55 tomcat1

3.启动tomcat
/opt/tomcat1/bin/startup.sh

3.开放8080端口

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp

# 开放8080端口
firewall-cmd --permanent --add-port=8080/tcp

#更新防火墙规则
firewall-cmd --reload

4.访问

别傻乎乎复制,注意自己的ip和端口
http://172.16.6.117:8080/

5.安装第2个Tomcat

复制tomcat

1.进入opt目录,复制tomcat1并重命名为tomcat2
cd /opt

cp -r tomcat1 tomcat2

修改第2个tomcat配置文件

需要注意的是多台tomcat配置在同一个机器上避免冲突,需要修改端口

1.进入server.xml
vi /opt/tomcat2/conf/server.xml

修改tomcat端口1

修改tomcat端口2

修改tomcat端口3

启动

/opt/tomcat2/bin/startup.sh

开放8081端口

# 查询端口是否开放
firewall-cmd --query-port=8081/tcp

# 开放8081端口
firewall-cmd --permanent --add-port=8081/tcp

#更新防火墙规则
firewall-cmd --reload

访问

http://172.16.6.117:8081/

6.修改各个Tomcat的index.jsp

为了体现出各个Tomcat的区别,顺便修改一下各个tomcat的index.jsp文件用于区分tomcat

进入第1个Tomcat,找到h1标签
vi /opt/tomcat1/webapps/ROOT/index.jsp

修改index1

再次访问第1个tomcat就发现不一样了

修改index1效果

进入第2个tomcat修改,与上面步骤一样
vi /opt/tomcat2/webapps/ROOT/index.jsp

7.设置Tomcat开机自启

1.先给文件拥有者给 执行权限 x
chmod +x /etc/rc.d/rc.local

2.进入rc.local 
vi /etc/rc.d/rc.local
    
3.在touch开头的下一行,写上需要开机启动的命令

export JAVA_HOME=/opt/jdk1.8
/opt/tomcat1/bin/startup.sh start
/opt/tomcat2/bin/startup.sh start

五、Nginx安装

1.添加 yum 源

Nginx 不在默认的 yum 源中,可以使用 epel 或者官网的 yum 源,本例使用官网的 yum 源。

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装完 yum 源之后,可以查看一下。

yum repolist

下面是安装成功的显示信息

已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.aliyun.com
源标识                                                                                  源名称                                                                           状态
base/7/x86_64                                                                           CentOS-7 - Base                                                                  10,070
extras/7/x86_64                                                                         CentOS-7 - Extras                                                                   413
mysql-connectors-community/x86_64                                                       MySQL Connectors Community                                                          175
mysql-tools-community/x86_64                                                            MySQL Tools Community                                                               120
mysql56-community/x86_64                                                                MySQL 5.6 Community Server                                                          564
nginx/x86_64                                                                            nginx repo                                                                          206
updates/7/x86_64                                                                        CentOS-7 - Updates                                                                1,134
repolist: 12,682

2.安装

yum install nginx

3.配置 Nginx 服务

本次执行启动服务和设置开机启动命令

1.启动服务
systemctl start nginx

2.设置开机启动
systemctl enable nginx

3.重启
systemctl restart nginx

4.停止服务
sudo systemctl stop nginx

5.重新加载,因为一般重新配置之后,不希望重启服务,这时可以使用重新加载。
sudo systemctl reload nginx

4.打开防火墙端口

默认 CentOS7 使用的防火墙 firewalld 是关闭 http 服务的(打开 80 端口)。

firewall-cmd --zone=public --permanent --add-service=http


firewall-cmd --reload

打开之后,可以查看一下防火墙打开的所有的服务

firewall-cmd --list-service

出现下面结果可以看到,系统已经打开了 http 服务。
ssh dhcpv6-client http

Nginx 是一个很方便的反向代理,需要指出的是 CentOS 7 的 SELinux,使用反向代理需要打开网络访问权限。打开网络权限之后,反向代理可以使用了。Nginx安装文件默认在/etc/nginx目录下。

setsebool -P httpd_can_network_connect on 

5.访问

直接访问服务器IP,若出现以下信息则说明到这里我们的Nginx就安装成功了!

注意自己的ip
http://172.16.6.117/

nginx安装

六、配置Nginx完成反向代理、负载均衡

1.修改配置文件

修改Nginx配置文件,注意特别注意:里面的内容全部删除,更换为下面的内容。

vi /etc/nginx/nginx.conf

注意下面的ip,每个人都不一样,别傻乎乎直接复制

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    # 各工程最大连接数
    worker_connections 1024;
}

http {
    # upstream 各服务器地址以及权重,权重越大代表访问率越大
    upstream alie.com {
        server 172.16.6.117:8081 weight=1;
        server 172.16.6.117:8080 weight=1;
    }

    server {
        # 端口默认80
        # 配置域名,由于没有域名,因此使用localhost
        server_name localhost;

        location / {
            # 反向代理,这里的地址与上面配置的upstream需一致,实现负载均衡
            proxy_pass http://alie.com;
            proxy_redirect default;
        }

    }

}

2.重启

重启Nginx并进行访问测试

systemctl reload nginx

3.访问

直接访问服务器的80端口,Nginx便会通过反向代理将请求转发至配置好的服务器集群中,通过不断刷新即可发现可以访问不同的tomcat。

http://172.16.6.117/

七、redis安装

1.下载fedora的epel仓库

yum install epel-release

2.安装redis数据库

在centos7.3默认安装readis后配置文件在/etc/目录下

yum install redis

3.常见命令介绍

本次执行启动服务和设置开机自启命令

1.启动服务
systemctl start redis 

2.设置开机自启动
systemctl enable redis 

3.停止服务
systemctl stop redis

4.重启服务
systemctl restart redis

5.查看服务状态
systemctl status redis

6.查看redis进程
ps -ef | grep redis

7.查看端口
netstat -lnp|grep 6379

4.修改redis配置文件

vi /etc/redis.conf

修改配置文件redis.conf 大概在55行左右。修改bind 后面的ip为 0.0.0.0 即可

修改redis配置文件

八、配置tomcat session redis同步

1.上传jar包

通过TomcatClusterRedisSessionManager,这种方式支持redis3.0的集群方式,下载tomcat-cluster-redis-session-manager.zip包,注意:在github要下载最新版的包

将下面4个jar包上传到tomcat1/lib和tomcat1/lib下,直接覆盖原来的jar包

1

2.配置context.xml

先关闭Tomcat

关闭第1个
/opt/tomcat1/bin/shutdown.sh

关闭第2个
/opt/tomcat2/bin/shutdown.sh

分别配置2个tomcat的context.xml

vi /opt/tomcat1/conf/context.xml

vi /opt/tomcat2/conf/context.xml

将下面的内容放在<Context>标签里面配置,参考下图中的位置

<Valve className ="tomcat.request.session.redis.SessionHandlerValve"/>
        <Manager className ="tomcat.request.session.redis.SessionManager"/>
   host="127.0.0.1"
   port="6379"
   password=""     # 如果设置了密码则在这里配置上
   database="0"     # redis默认16个database 第一个是0 最后一个是15
   maxInactiveInterval="60" />

配置context.xml

3.配置web.xml

配置会话到期时间

分别配置2个tomcat的web.xml

进入下面文件后,输入命令:/session进行搜索

vi /opt/tomcat1/conf/web.xml

vi /opt/tomcat2/conf/web.xml

将会话到期时间30改为60

配置会话到期时间

4.启动tomcat

/opt/tomcat1/bin/startup.sh

/opt/tomcat2/bin/startup.sh

5.测试,增加文件

在tomcat1/webapps/ROOT和tomcat2/webapps/ROOT新建文件session.jsp,然后将下面内容粘贴进去。注意内容上下都要修改

vi tomcat1/webapps/ROOT/session.jsp
<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>tomcat-1</title>
    </head>
    <body>
        <h1><font color="red">Session serviced by tomcat</font></h1>
        <table aligh="center" border="1">
        <tr>
            <td>Session ID</td>
            <td><%=session.getId() %></td>
                <% session.setAttribute("abc","abc");%>
            </tr>
            <tr>
            <td>Created on</td>
            <td><%= session.getCreationTime() %></td>
            </tr>
        </table>
    tomcat-1
    </body>
<html>
vi tomcat2/webapps/ROOT/session.jsp
<%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>tomcat-2</title>
    </head>
    <body>
        <h1><font color="red">Session serviced by tomcat</font></h1>
        <table aligh="center" border="1">
        <tr>
            <td>Session ID</td>
            <td><%=session.getId() %></td>
                <% session.setAttribute("abc","abc");%>
            </tr>
            <tr>
            <td>Created on</td>
            <td><%= session.getCreationTime() %></td>
            </tr>
        </table>
    tomcat-2
    </body>
<html>

6.访问

http://172.16.6.117/session.jsp

tomcat-1节点与tomcat-2节点配置相同,测试,我们每次强刷他的sessionID都是一致的,所以我们认为他的session会话保持已经完成,你们也可以选择换个客户端的IP地址来测试

测试1

测试2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zerobyte_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值