Nginx实现tomcat集群负载均衡(单机集群)

原文链接:Nginx实现tomcat集群负载均衡(单机集群)
**前言:对于负载均衡原理了解很久,一直没有记载实现过程,今日便将其实现过程以及原理记载下来,予以分享讨论学习。

一:背景

先来谈谈集群负载均衡的业务背景,在做项目上线的一段过程中,亲身经历了这样,‘大家先停一下更新一个版本。’,又过10分钟再停下来,‘大家暂停一下…’,如此在关闭的那段时间内,写入的数据如何处理?客户正在使用突然挂断怎么处理?那么针对此便是用到单机的集群部署实现。其次,随着业务数量的增加,也可以将不同的访问分配给不同的服务器来处理。

二:基本简介说明

1、什么是tomcat集群?
答:利用nginx对请求进行分流,将请求分配给不同的tomcat去处理,减少每个tomcat的负载量,提高服务器的响应速度。

2、什么是Nginx的正向反向代理?

答:关于Nginx的代理分为正向代理、反向代理、透明代理、

正向代理:客户端C(customer)、代理服务器A(agent)、服务器端S(server)、

代理服务器A 来代替客户端C 来访问服务器端S,并将最终结果转发给客户端C,(类似于中间商)站在客户的角度,这里的代理服务器A代表的为自己,这个过程是正向,所以叫正向代理。

反向代理:客户端C(customer)、代理服务器A(agent)、服务器端S(server)

客户端C直接访问代理服务器A,并由代理服务器A决定分配访问那个服务器端S,并将最后的访问处理结果准发给客户端A,在这里站在客户的角度,代理服务器A代理的服务器端S,这个过程是反向的,所以叫反向代理。

3、什么是负载均衡?

答:所谓负载均衡就是将一批可以提供相同服务的服务器组成一个服务器集合,每台服务器都可以单独向外部提供相同的服务,通过某种负载分担技术,按照用户指定的负载均衡策略将外部请求分配到服务器集合中的具体的某一台来进行处理的技术。以此来提高并发、增加吞吐量、提高处理能力、增加服务可用性。

推荐一篇关于Nginx代理的详解博客地址:http://bbs.51cto.com/thread-967852-1.html

三、实现过程步骤(多tomcat)

首先已经确保服务器内已经安装Java/Nginx

jdk安装命令: yum -y install java-1.8.0-openjdk*

1、在服务器上部署两台tomcat

例如:tomcatA:127.0.0.1:8080、tomcatA:127.0.0.1:8081(端口我们随意分配)

移步链接:tomcat修改默认端口(多tomcat启动)

这里我们需要建两个文件目录tomcatA,tomcatB
分别解压两个tomcat文件,只需要修改第二个tomcat端口。

[root@study-01 /usr/local/tomcat9-02/bin]# cd ../conf/
[root@study-01 /usr/local/tomcat9-02/conf]# vim server.xml
# 第一个端口,Server port节点端口
<Server port="9005" shutdown="SHUTDOWN">

# 第二个端口,Connector port节点端口,也即是Tomcat访问端口
<Connector port="9080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />

# 第三个端口,Connector port节点端口
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
[root@study-01 /usr/local/tomcat9-02/conf]# 
2、修改端口欢迎界面(区分)

进入tonmcat根目录下

[root@VM_0_8_centos apache-tomcat-8.5.38]# cd webapps/ROOT/
[root@VM_0_8_centos ROOT]# vi index.jsp修改两个h2内的欢迎语,便与区分。
<div id="congrats" class="curved container">
<h2>this is testTomcatone ------端口########8080!</h2>
<div>

3、开启服务器端口防火墙

如果为centos系统


[root@VM_0_8_centos ROOT]# firewall-cmd --zone=public --add-port=80/tcp --permanent

success

[root@VM_0_8_centos ROOT]# firewall-cmd --reload

success

若为linux操作系统移步:参照前两步骤

4、启动两个tomcat

[root@VM_0_8_centos apache-tomcat-8.5.38]# cd bin
[root@VM_0_8_centos bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/testTomcatone/apache-tomcat-8.5.38
Using CATALINA_HOME: /usr/local/testTomcatone/apache-tomcat-8.5.38
Using CATALINA_TMPDIR: /usr/local/testTomcatone/apache-tomcat-8.5.38/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/testTomcatone/apache-tomcat-8.5.38/bin/bootstrap.jar:/usr/local/testTomcatone/apache-tomcat-8.5.38/bin/tomcat-juli.jar
Tomcat started.

成功截图如下:

tomcatA tomcatB

三、Nginx的配置代理

linux安装nginx请移步:Linux下安装Nginx详细步骤(ububtu+centos)

nginx配置

以上为基本配置信息,接下来需要配置tomcat代理。

2、在service节点下加入监听地址

server {
        listen       80;
        server_name 148.70.242.160; #监听地址
        location / {
            proxy_pass http://tomcatTest; #这tomcatTest为上实例名称
            index  index.html index.htm;
        }
   }

负载均衡已经初步配置完毕,upstream 根据轮询的方式进行负载均衡,每一个请求转发至不同的后端服务器端。

3、指定轮询权重几率

upstream tomcatTest  {
server    192.168.85.131:8080  weight=1;
server    192.168.85.131:8081  weight=2;#数字越大,访问比重与越大
}

4、其他说明

upstream还能够为每一个设备设置状态值,这些状态值的含义分别例如以下:

down 表示单前的server临时不參与负载.

weight 默觉得1.weight越大,负载的权重就越大。

max_fails :同意请求失败的次数默觉得1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.

fail_timeout : max_fails次失败后。暂停的时间。

backup: 其他全部的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

upstream bakend{  #定义负载均衡设备的Ip及设备状态       
ip_hash;server 10.0.0.11:9090 down;
server 10.0.0.11:8080 weight=2;
server 10.0.0.11:6060;
server 10.0.0.11:7070 backup;
}

到这里单机的集群部署已经完成,以前感觉部署集群提供负载均衡很牛,现在看来其实也挺简单的。

面向开发过程,记录学习之路。

 **

发布了87 篇原创文章 · 获赞 47 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_42685333/article/details/89462050
今日推荐