Nginx+tomcat 负载均衡
一、系统版本
Nginx使用版本、tomcat使用版本:
|
Nginx:nginx-1.10.2.tar.gz Java :Java version: 1.8.0_60, vendor: Oracle Corporation Tomcat:apache-tomcat-7.0.52.tar.gz apache-tomcat-7.0.52.tar.gz |
二、nginx安装
1.安装依赖模块
pcre、zlib、openssl、md5 /sha1(如果系统中没有安装相应模块,需要按照下列方式安装)
|
为依赖而安装: nginx-all-modules noarch 1.10.2-1.el6 epel 7.7 k nginx-mod-http-geoip x86_64 1.10.2-1.el6 epel 14 k nginx-mod-http-image-filter x86_64 1.10.2-1.el6 epel 16 k nginx-mod-http-perl x86_64 1.10.2-1.el6 epel 26 k nginx-mod-http-xslt-filter x86_64 1.10.2-1.el6 epel 16 k nginx-mod-mail x86_64 1.10.2-1.el6 epel 43 k nginx-mod-stream |
2.安装nginx模块(1.)
|
yum install -y nginx |
3.安装tomcat
|
从官网上直接解压下载后的tomcat,我使用了两个版本的tomcat分别装在不同机器上。 在一台服务器(192.168.7.40)上: 解压:tar zxvf apache-tomcat-7.0.52.tar.gz 启动:进入apache-tomcat-7.0.52/bin/startup.sh启动 在一台服务器(192.168.7.221)上: 解压:tar zxvf apache-tomcat-7.0.63.tar.gz 启动:进入apache-tomcat-7.0.63/bin/startup.sh启动 在浏览器中输入: http://192.168.7.221:8080/ 可以看到版本为7.0.52的界面 |
三、配置
当前用到的功能Nginx的功能请求转发与负载均衡。
- 请求转发
在conf目录下有一个nginx.conf文件,有如下配置:
|
user root; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf;
events { worker_connections 1024; }
http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048;
include /etc/nginx/mime.types; default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; } |
通过该配置文件我们可以找到默认的配置文件的路径在/etc/nginx/conf.d/*.conf;
通过vim /etc/nginx/conf.d/default.conf得到如下配置:
|
# # The default server #
server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html;
# Load configuration files for the default server block. include /etc/nginx/default.d/*.conf;
location / { proxy_pass http://192.168.7.221:8080; }
error_page 404 /404.html; location = /40x.html { }
error_page 500 502 503 504 /50x.html; location = /50x.html { }
} |
配置介绍:
listen 80;表示监听80端口.
server_name localhost; 表示转到本地,这里指Nginx的文件夹里。
location / 表示匹配的路径, 斜杠代表匹配所有的请求。
root html; 静态文件的路径,其实就是指 /usr/share/nginx/html这个路径。
index 指当没有指定主页时,默认的指定文件。
开启7.221上面的tomcat之后通过访问192.168.7.201就能访问到http://192.168.7.221:8080;
当然请求转发还有一些高级的用法在这了我就不介绍了,可以参考第四章常见问题2.
- 负载均衡
负载均衡功能故名思议将请求按照不同的权重来转发,效果如下:

详细配置
|
# # The default server # upstream dis{ server 192.168.7.40:8080; server 192.168.7.221:8080; }
server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html;
# Load configuration files for the default server block. include /etc/nginx/default.d/*.conf;
location / { proxy_pass http://dis; }
error_page 404 /404.html; location = /40x.html { }
error_page 500 502 503 504 /50x.html; location = /50x.html { } } |
开启7.221、7.40上面的tomcat之后通过访问192.168.7.201就能相互访问到http://192.168.7.221:8080; http://192.168.7.40:8080;
四、常见问题
1.nginx配置完毕之后添加请求分发功能,但是访问nginx对应的机器之后失效并未出现请求转发
查看nginx错误日志:tail -n 100 /var/log/nginx/error.log
2017/02/09 17:24:43 [crit] 11025#0: *1 connect() to 192.168.7.221:8080 failed (13: Permission denied) while connecting to upstream,
client: 192.168.7.40, server: _, request: "GET / HTTP/1.1", upstream: "http://192.168.7.221:8080/", host: "192.168.7.221"
问题原因:
已确认本地防火墙已关闭,后经过一番查询之后,是因为Selinux。
SeLinux是2.6版本的Linux系统内核中提供的强制访问控制(MAC)系统。算是内置的安全系统,防火墙什么的应该算是外配的。
So:解决方法
1.关闭SeLinux
1.临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2.修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
3.执行下面的命令
setsebool -P httpd_can_Network_connect 1
2.参考博客文章
http://blog.csdn.net/kooalle_cln/article/details/49591493
3.nginx的其他功能包括fair策略、session共享、动静分离在这也不过多的讲,可以参考
http://www.cnblogs.com/jalja/p/6118782.html
4. tomcat中的appBase 和docBase的区别
http://blog.csdn.net/liuxuejin/article/details/9104055
Nginx+tomcat 负载均衡的更多相关文章
- nginx+tomcat负载均衡
最近练习nginx+tomcat负载均衡.根据一些资料整理了大体思路,最终实现了1个nginx+2个tomcat负载均衡. 安装JDK 1>进入安装目录,给所有用户添加可执行的权限 #chmod ...
- linux+nginx+tomcat负载均衡,实现session同步
linux+nginx+tomcat负载均衡,实现session同步 花了一个上午的时间研究nginx+tomcat的负载均衡测试,集群环境搭建比较顺利,但是session同步的问题折腾了几个小时才搞 ...
- Nginx + Tomcat 负载均衡配置详解
Nginx常用操作指南一.Nginx 与 Tomcat 安装.配置及优化1. 检查和安装依赖项 yum -y install gcc pcre pcre-devel zlib zlib-devel o ...
- Nginx+Tomcat负载均衡、动静分离群集
Nginx+Tomcat负载均衡.动静分离群集 目录 Nginx+Tomcat负载均衡.动静分离群集 一.Tomcat 1. Tomcat简介 2. Tomcat重要目录 二.Nginx负载均衡原理 ...
- Linux下Nginx+Tomcat负载均衡和动静分离配置要点
本文使用的Linux发行版:CentOS6.7 下载地址:https://wiki.centos.org/Download 一.安装Nginx 下载源:wget http://nginx.org/pa ...
- Nginx+tomcat负载均衡时静态页面报404
百度到的问题解决BLOG http://os.51cto.com/art/201204/326843.htm nginx+2台tomcat负载均衡,应用程序已部署,单独访问tomcat时,可以访问到所 ...
- nginx+tomcat负载均衡策略
測试环境均为本地,測试软件为: nginx-1.6.0,apache-tomcat-7.0.42-1.apache-tomcat-7.0.42-2.apache-tomcat-7.0.42-3 利用n ...
- nginx+tomcat负载均衡和session复制
本文介绍下传统的tomcat负载均衡和session复制. session复制是基于JVM内存的,当然在当今的互联网大数据时代,有更好的替代方案,如将session数据保存在Redis中. 1.安装n ...
- nginx+tomcat负载均衡实验
导言: 本次实验,tomcat就直接使用录原生的主页,只是简单修改主页识别主机,nginx也是直接在欢迎页上面修改的,直接实现负载均衡. 主机1:192.168.100.156 nginx+tomca ...
- Nginx+tomcat负载均衡配置
Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下: 1.JAVA JDK ...
随机推荐
- [并查集] 1118. Birds in Forest (25)
1118. Birds in Forest (25) Some scientists took pictures of thousands of birds in a forest. Assume t ...
- CAS (1) —— Mac下配置CAS到Tomcat(服务端)
CAS (1) -- Mac下配置CAS到Tomcat(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-clie ...
- 软工网络15团队作业8——Beta阶段敏捷冲刺(Day6)
提供当天站立式会议照片一张 每个人的工作 1.讨论项目每个成员的昨天进展 赵铭: 数据库整理. 吴慧婷:我的世界界面完成部分. 陈敏: 我的世界功能--学习情况功能完成. 吴雅娟:我的世界功能--学习 ...
- 【转】SQL SERVER 中 sp_rename 用法
因需求变更要改表的列名,平常都是跑到Enterprise manager中选取服务器->数据库->表,然后修改表,这样太麻烦了,查了一下,可以用script搞定,代码如下: EXEC sp ...
- [转帖]USB-C和Thunderbolt 3连接线你搞懂了吗?---没搞明白.
USB-C和Thunderbolt 3连接线你搞懂了吗? 2018年11月25日 07:30 6318 次阅读 稿源:威锋网 3 条评论 按照计算行业的风潮,USB Type-C 将会是下一代主流的接 ...
- Flyway学习笔记
Flyway做为database migration开源工具,功能上像是git.svn这种代码版本控制.google搜索database migration,或者针对性更强些搜索database mi ...
- SGU438_The Glorious Karlutka River =)
好题,有一些人在河的一边,想通过河里的某些点跳到对岸去.每个点最多只能承受一定数量的人,每人跳跃一次需要消耗一个时间.求所有人都过河的最短时间. 看网上说是用了什么动态流的神奇东东.其实就是最大流吧, ...
- CF235C_Cyclical Quest
很好的一个自动机的题目. 给原串,和若干个询问串.求原串里有多少个不同子串可以通过询问串循环移动得到. 有点类似求两个串的lcs,但是灵活一点. 首先我们把询问串长度扩大一倍,去掉最后一个字符.因为最 ...
- DAY2-Python学习笔记
1.迭代器:可以直接作用于for循环的对象统称为可迭代对象:Iterable,使用isinstance()判断一个对象是否是Iterable对象: >>> from collecti ...
- Executors提供的四种线程池和自定义线程池
JAVA并发编程——EXECUTORS 线程池的思想是一种对象池的思想,开放一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理.当有线程任务时,从池中取一个,执行完毕,对象 ...