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
(2) SELinux配置将httpd网络连接关闭,所以很自然将其启用即可:
1 setsebool -P httpd_can_network_connect 1
(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端口
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