nginx负载均衡tomcat和配置ssl
tomcat
组件功能
engine
负责处理connector接收到的用户请求,将请求交给对应的host处理,engine有一个默认的虚拟主机,所有host都不匹配时,交给默认处理
host
代表虚拟主机,应和域名相匹配的。可以部署一个或多个webapp,每个webapp对应一个context(和context path)
参数解释
host 表示一个虚拟主机
name 指定主机名
appBase 应用程序基本目录,相对于变量CATALINA_HOME而言;也可写绝对路径
unpackWARs 如果为 true,则 tomcat 会自动将 WAR 文件解压,否则不解压,直接从 WAR 文件中运行应用程序
context
定义一个应用程序,是一个最内层的容器类组件(不能再嵌套)。配置该项的主要目的是指定对应的webapp根目录,其还能为 webapp 指定额外的属性
connector
在某个指定端口上侦听用户请求,并交给engine处理,从engine出获得回应并会用户
service
将 connector 关联至 engine,一个service内只能有一个engine,可以有多个connector
server
表示一个运行于jvm中的实例
valve
阀门,拦截请求并在将其转至对应的 webapp 前进行某种处理操作,
可以用于任何容器中,比如记录日志(access log valve)、基于 IP 做访
问控制(remote address filter valve)。
logger
日志记录器,用于记录组件内部的状态信息,可以用于除 context 外
的任何容器中。
realm
可以用于任意容器类的组件中,关联一个用户认证库,实现认证和
授权。可以关联的认证库有两种:UserDatabaseRealm、MemoryRealm
和 JDBCRealm。
UserDatabaseRealm
使用 JNDI 自定义的用户认证库。
工作流程
用户发送请求到 WEB 服务器,该请求会被正在监听的 Connector 连接器接收,并把该请求交给 Service 下的 Engine 来处理,并等待 Engine 处理的结果。Engine 获得请求后会根据请求的主机信息来匹配相应的 Host 主机,Host 主机会根据请求的路径匹配对应的 Context,Context web 应用匹配上之后就构建 request、response 请求对象,调用指定的Servlet 来处理请求。请求处理完成后会将 response 对象返回给 Host 主机,Host 主机将response 对象返回给 Engine 引擎,Engine 再将 response 对象返回给 Connector 链接器,最后 Connector 连接器将 response 返回给浏览器。
nginx负载均衡tomcat
环境
Nginx 服务器 | CentOS 7.5 x86_64 | 192.168.111.3 | nginx1.14 |
---|---|---|---|
Tomcat 服务器 1 | CentOS 7.5 x86_64 | 192.168.111.4 | jdk tomcat8 |
Tomcat 服务器 2 | CentOS 7.5 x86_64 | 192.168.111.5 | jdk tomcat8 |
各软件安装步骤,可以参考笔者其他文章
- 修改tomcat配置文件
tomcat1
#mkdir /web/webapp -p
[root@localhost conf]# vim /usr/local/tomcat8/conf/server.xml
147 <Host name="192.168.111.4" appBase="/web"
148 unpackWARs="true" autoDeploy="true">
149 <Context docBase="webapp" path="" reloadable="false"></Context>
150 </Host>
#添加如上
[root@localhost conf]# vim /web/webapp/index.jsp
#测试页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test page</title>
</head>
<body>
<%out.println("Welcome to test site,http://www.qiao.com");%>
</body>
</html>
[root@localhost conf]# sh /usr/local/tomcat8/bin/startup.sh
tomcat2与1几乎相同
#mkdir /web/webapp -p
[root@localhost conf]# vim /usr/local/tomcat8/conf/server.xml
147 <Host name="192.168.111.5" appBase="/web"
148 unpackWARs="true" autoDeploy="true">
149 <Context docBase="webapp" path="" reloadable="false"></Context>
150 </Host>
#添加如上
[root@localhost conf]# vim /web/webapp/index.jsp
#测试页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test page</title>
</head>
<body>
<%out.println("Welcome to test site,http://www.ying.com");%>
</body>
</html>
[root@localhost conf]# sh /usr/local/tomcat8/bin/startup.sh
- 修改nginx配置文件
http{
...
34 upstream tomcat_server {
#调用upstrem模块,tomcat_server为负载均衡群集的名称
35 server 192.168.111.4:8080 weight=1;
36 server 192.168.111.5:8080 weight=1;
37 }
...
}
server{
...
53 location ~ \.jsp${
55 }
54 proxy_pass http://tomcat_server;
...
}
客户端访问192.168.111.3/index.jsp进行验证
nginx负载均衡算法
轮询
根据weight的值分配到后端服务器,若后端服务器死机,自动剔除,weight值越大,给其分配的请求越多
least_conn
最小连接调度(Least-Connection Scheduling)算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况
ip_hash
每个用户按照访问IP的哈希结果分配,使来自同一个 IP 的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的 session 共享问题。
fair
根据访问页面的大小和后端服务器的响应时间判断负载情况,选择负载较轻的机器进行分流,种策略具有很强的自适应性,但是实际的网络环境往往不是那么简单,因此要慎用。编译时需要添加upstrem_fair模块
URL_hash
按访问的 URL 的哈希结果来分配请求,使每个 URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx 本身不支持 url_hash,如果需要这种调度算法,则必须安装 Nginx 的 hash 软件包。
nginx负载均衡调度的状态
http{
...
34 upstream tomcat_server {
35 ...
36 server 192.168.111.5:8080 weight=1 [down;backup;max_fails;fail_timeout];
37 }
...
down:当前机器退出该负载均衡群集
backup:预留的备份机器。当其他所有的非 backup 机器出现故障或者忙的时候,才会请求backup 机器,因此这台机器的访问压力最低。
max_fails:允许最大请求后端服务器失败的次数,默认为1,超过最大次数时,反回返回 proxy_next_upstream模块定义的错误。
fail_timeout:请求失败超时时间,在经历了max_fails 次失败后,暂停服务的时间。max_fails和 fail_timeout 可以一起使用。
配置tomcat的ssl加密
[root@localhost ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat8/keystore
#使用keytool工具生成加密用到的私钥和证书文件
#-genkeypair:生成密钥对;-alias指定要处理条目的别名;-keyalg指定使用的签名算法;-keystore指定密钥库名称
[root@localhost ~]# vim /usr/local/tomcat8/conf/server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/local/tomcat8/keystore" keystorePass="123456">
</Connector>
[root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
客户端浏览器输入“https://192.168.111.4:8443”进行访问
nginx负载均衡tomcat和配置ssl的更多相关文章
- centos7+nginx负载均衡Tomcat服务
接着上一篇:www.cnblogs.com/lkun/p/8252815.html 我们在上一篇在一台centos7服务器上部署了两个nginx,接下来我们使用一个nginx实现tomcat的负载均衡 ...
- Nginx记录-nginx 负载均衡5种配置方式(转载)
nginx 负载均衡5种配置方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成 ...
- nginx 负载均衡5种配置方式
nginx 负载均衡5种配置方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成正比, ...
- nginx负载均衡之入门配置
先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况.那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上 ...
- 干货 | Nginx负载均衡原理及配置实例
一个执着于技术的公众号 Nginx系列导读 给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 完全卸载nginx的详细步骤 Nginx 配置文件详解 理解正向代理与反向代理的区别 ...
- Nginx负载均衡的详细配置及使用案例详解.
感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. 技术无止境, 我们仍需努力! 1,话不多说, ...
- [项目构建 十三]babasport Nginx负载均衡的详细配置及使用案例详解.
在这里再次说明下, 这个项目是从网上 找到的一套学习资料, 自己在 空闲时间学习了这些东西. 这里面的code当然会有很多不完善的地方, 但是确实也能学到很多新东西.感谢看过这一些列博文和评论的小伙伴 ...
- nginx负载均衡二:配置
配置方法一(可用): upstream tomcatserver1 { server ; server 192.168.70.172; server 192.168.70.173 down; serv ...
- httpd或Nginx负载均衡tomcat
实验环境:CentOS7 #两台tomcat的基本配置如下: [root@webapps localhost]#setenforce 0 [root@webapps localhost]#iptabl ...
随机推荐
- linux下dmesg命令详解
前言: 有时候想查看一下开机启动信息,可以通过这个命令查询. 1,命令格式 功能说明:显示开机信息. 语 法:dmesg [-cn][-s <缓冲区大小>] 补充说明:kern ...
- Centos 6.* / 7.*下通过yum安装php7
查看 centos 版本 # cat /etc/centos-release 删除之前的 php 版本 # yum remove php* php-common rpm 安装 Php7 相应的 yum ...
- JAVA的FileOutput/InputStream使用实例
在JAVA中,要读写文件,要使用Stream这个东西. Stream简单来说,可以看做在程序和文件之间打开了一个管道,然后把数据通过这个管道输送到文件或程序中去. FileOutput/InputSt ...
- fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory
VS2010编译 DirectShow一些项目时遇到 错误:fatal error C1083: 无法打开包括文件:“qedit.h”: No such file or directory 解决方法: ...
- log4j配置文件的手动加载与配置初始化
一. 本地项目: 初始化log4j的日志配置,指定到src目录下(建议用2) //1. 本地项目-属性文件配置 PropertyConfigurator.configu ...
- QQ、邮箱、手机号 正则验证
邮箱:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/ 手机号:/^(((13[0-9]{1})|(15[0-9]{1 ...
- quartz在web.xml的配置
第一步:下载所需的Jar包 commons-beanutils.ja.commons-collections.jar.commons-logging.jar.commons-digester.jar. ...
- ajax跨域请求解决方案 CORS和JSONP
什么是跨域: 只要协议.域名.端口有任何一个不同,都会被当成不同的域.而由于浏览器的同源策略(同源策略:域名.协议.端口均相同),浏览器之间要隔离不同域的内容,禁止互相操作,不能执行其他网站的js.所 ...
- 2-2 groovy基础知识-理论介绍
- 2014蓝桥杯B组初赛试题《奇怪的分式》
题目描述: 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png) ...