一、准备工作

  1. nginx1.14

    nginx1.14下载链接

  2. tomcat8

    tomcat8下载链接

  3. windows系统

二、实现目标

访问http://localhost地址时, 将请求轮询到tomcat1tomcat2服务器上, 实现负载均衡, 并通过proxy_connect_timeout 1;配置, 实现其中一台服务器宕机能快速切换到另一台服务器上面, 从而不影响使用

  1. 第一次、第二次请求到tomcat2服务器

  2. 第三次请求到tomcat1服务器, 说明负载均衡生效

  3. 停掉tomcat2, 再次请求, 请求自动分发到tomcat1, 开启tomcat2, 轮询请求再次生效

三、实现

  1. 下载nginx和tomcat, 复制一份tomcat作为tomcat2服务器

  2. 分别修改tomcat1、tomcat2的server.xml配置文件

tomcat2一样, 对应修改为28005, 28080, 28009

为了区分tomcat1、tomcat2, 修改F:\test_nginx_tomcat\tomcat1\webapps\ROOT目录下的index.jsp文件内容

  1. 分别启动tomcat1、tomcat2, /bin目录下startup.bat命令, 访问http://localhost:18080http://localhost:28080, 查看是否启动成功

  1. 到目前为止两台tomcat服务器已经准备就绪了, 但是还没配置nginx, 所以此时是访问不了http://localhost的, 如:

  2. OK, 现在配置nginx, 其实就是修改nginx.conf文件

worker_processes  1;#工作进程的个数,一般与计算机的cpu核数一致

events {
worker_connections 1024;#单个进程最大连接数(最大连接数=连接数*进程数)
} http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream;#默认文件类型 sendfile on;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 keepalive_timeout 65; #长连接超时时间,单位是秒 gzip on;#启用Gizp压缩 #服务器的集群
upstream test.nginx.com { #服务器集群名字
server 127.0.0.1:18080 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。
server 127.0.0.1:28080 weight=2;
} #当前的Nginx的配置
server {
listen 80;#监听80端口,可以改成其他端口
server_name localhost;############## 当前服务的域名 location / {
proxy_pass http://test.nginx.com;
proxy_redirect default;
proxy_connect_timeout 3;
proxy_read_timeout 1;
proxy_send_timeout 1;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

这是参考别人的配置, 最重要的是下面中的内容

  • upstream: 指定服务器集群, 我们开启了tomcat1、tomcat2, 定义2个server即可
  • weight: 权重, tomcat2是1的两倍, 后面测试发现, 基本上tomcat1和tomcat2的请求次数比例为1:2
  • server: 监听localhost:80的所有请求, 并将请求根据upstream配置的集群规则进行分发, 注意, proxy_pass的test.nginx.com必须跟upstream的test.nginx.com一致
	    proxy_connect_timeout 3; # 当其中一台服务器宕机后, 请求连接的超时时间, 设为3s, 可以看到tomcat2宕机后, 当轮询到tomcat2服务器时, 响应会有3s的延时, 3s后自动将请求转到tomcat1服务器, 实现了集群的高可用, 同理, 开启tomcat2后, nginx恢复正常的轮询请求
proxy_read_timeout 1;
proxy_send_timeout 1;
  1. 保存配置, 启动nginx, 双击启动

浏览器请求http://localhost, 不断刷新、停掉任意一台服务器, 可以看到文章实现目标中的效果

四、文章参考

https://blog.csdn.net/wang379275614/article/details/47778201

谢谢

最新文章

  1. Hadoop阅读笔记(二)——利用MapReduce求平均数和去重
  2. Debug - 支持浏览器和 Node 平台的全端调试工具
  3. bestcoder Round #7 前三题题解
  4. GitHub Pages 搭建流程-基于jekyll-bootstrap
  5. openresty(nginx)、lua、drizzle调研
  6. [BZOJ2423][HAOI2010]最长公共子序列
  7. Spring的循环依赖问题
  8. 真机调试时提示: could not change executable permissions on the application
  9. Sublime Text 2使用心得
  10. Android 6.0 闪光灯的使用
  11. Bootstrap之表格
  12. 安德鲁斯Selector简介
  13. Redis哈希相关命令
  14. Attribute注解
  15. [编织消息框架][netty源码分析]6 ChannelPipeline 实现类DefaultChannelPipeline职责与实现
  16. Android 7.0 Power 按键处理流程
  17. The POM for ... is missing, no dependency information available
  18. Nhibernate系列学习之(一) ORM and Nhibernate入门实例解析
  19. 8.Django缓存和信号
  20. [20181204]低版本toad 9.6直连与ora-12505.txt

热门文章

  1. 移动端适配之二:visual viewport、layout viewport和ideal viewport介绍
  2. MSSQL2008 数据压缩方法
  3. Jmeter里面的时间单位
  4. java方法重写规则 重载
  5. 2019-7-22-WPF-如何判断两个-LinearGradientBrush-相等
  6. QT,QLabel添加超链接
  7. C++:for范围循环特点--自我理解
  8. F4NNIU 整理的 docker-compose 几个常用命令
  9. sql函数的使用——转换函数
  10. 《VIM教程》笔记