nginx实现反向代理并实现web集群

nginx实现反向代理并实现web集群插图

  6、原因是SELinux配置将httpd网络连接关闭,解决方案如下:

SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控 制的实现,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。大部分使用 SELinux 的人使用的都是SELinux就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或 Gentoo。它们都是在内核中启用SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。

 

(1)使用以下指令查看selinux配置:

1 getsebool httpd_can_network_connect 2 #httpd_can_network_connect --> off

nginx实现反向代理并实现web集群插图1

(2) SELinux配置将httpd网络连接关闭,所以很自然将其启用即可:

1 setsebool -P httpd_can_network_connect 1 

 nginx实现反向代理并实现web集群插图2

 

 (3)再次访问,即可正常访问:访问界面当然是tomcat的首页面,这里不进行展示

 

 二、实现web集群

1、准备环境

准备一台nginx:建议选择性能比较强悍的主机作为nginx主机

准备N台tomcat主机:

192.168.81.131部署tomcat,并开启8080端口

192.168.81.132部署tomcat,并开启8080端口

··········

如果只有一个主机,可以通过修改tomcat端口实现,比如8081

具体修改tomcat配置文件

/tomcathome/conf/server.xml

同时别忘了开启防火墙,并开通8080端口和80端口

 nginx实现反向代理并实现web集群插图3

2、在nginx中集群配置

在路径/etc/nginx/conf.d下:

 1 #配置反代第一步:建议upstream的名称为weba,即跟配置文件名称一致或者跟网站的域名一致  2 upstream weba{  3 #由于我的ECS只有一台所以tomcat跟nginx在同一台主机上  4 #如果有多台的话,这里填写局域网的内部IP地址  5 server 192.168.81.131:8080;  6 server 192.168.81.132:8080;  7 }  8 server {  9 listen 80; 10 #配置反向代理第二步 11 #修改servername的值,servername既是用户的访问路径 12 #此处也可以写:server_name 192.168.81.132 13  server_name www.weba.com; 14 15 location / { 16 #配置反向代理第三步 17 #注意:一定要和upstream名称一致否则无法将请求反代 18 proxy_pass http://weba; 19 #proxy_buffer_size 64k; 20 #proxy_buffers 32 32k; 21 #proxy_busy_buffers_size 128k; 22 root /usr/share/nginx/html; 23  index index.html index.htm; 24  } 25 }

 

三、web集群的负载均衡

 所有的集群,都要解决2个基本问题,即:负载均衡和容错

1、策略

  • 轮询:是nginx的一个默认策略,配置如下:
1 server 192.168.81.131:8080; 2 server 192.168.81.132:8080;

那么回按照轮询来访问,如果某一台机器比较陈旧比较慢,会导致整体请求下降

  • 权重
1 server 192.168.81.131:8080 weight=4; 2 server 192.168.81.132:8080 weight=1;

这时,131服务器将会负担整体访问量的80%

  • IP的hash值:加入集群的有3太tomcat主机,将客户的某一个IP经过hash运算生成一个N ,然后N/3求余,如果余数为0则将他的请求分给第一台主机,以此类推,如果余数为2,则分给第三台主机。配置如下:
1  ip_hash; 2 server 192.168.81.131:8080 weight=4; 3 server 192.168.81.132:8080 weight=1;

  • url的hash值:将被访问的url经过hash运算,然后给到某一台tomcat主机上。配置如下:
1 hash $request_uri 2 server 192.168.81.131:8080 weight=4; 3 server 192.168.81.132:8080 weight=1;

  • fair策略:哪一台主机响应速度快,就把请求给他;

 

比较:IP的hash可以解决session共享的问题,但是url的hash无法解决,另外权重、轮询等策略也无法解决session共享问题。

原文链接:https://www.cnblogs.com/nsywBlog/p/14794931.html

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享