因为工做的需求,在使用中,须要搭建负载均衡,研究了Apache+Tomat负载均衡的方案,而且经过检索相关的文章,进行了比较发现,Apache负载负载均衡在使用的效率上,远远不如Nginx的效率高,所以决定使用Nginx来进行服务的搭建。最初YUM安装了Nginx,可是不知道什么缘由,Nginx的服务能够正常启动,静态页面也能够正常访问,可是就是没法正常的搭建虚拟主机和负载均衡。对引没有深究缘由,决定把他卸载,而后手动安装。nginx
手动安装好Nginx后,一切正常,虚拟主机,负载均衡的配置所有没有任何问题。顺利启用,具体的配置文件以下:api
在conf的nginx.conf的文件中加入了:include vhost/*.conf; 以引入vhost目录下的全部的.conf文件,为了之后配置起来简单,固然若是须要的话,也能够一个一个添加。tomcat
由于作负载的服务为API服务,在这里conf文件的名字就叫作api.xxx.com.conf,打开文件的配置以下:服务器
在此没有使用IP轮询的方式,而使用的是usstream 的方式,具体这几个方式有什么不一样,你们能够百度或google一下相关的介绍。须要注意的是proxy_pass,在此配置的为upstream 的名字,其它的不容许使用,若是直接配置IP地址,则不会实现负载均衡。session
其中 weight表示的权重,数越大,权重越高,分配到的机会越大, backup表示的是热备服务器,即在前两个负载都出现问题的时候,热备服务器就会自动承担这些访问。负载均衡
至此Nginx负载均衡配置器配置完成,可是由于涉及到负载以后,如果普通的网址,在访问的时候,就会再现Session丢失的状况,所以这个时候,就要处理session 丢失的问题,要处理此问题,有多个解决方案,一个是使用Cookies代理,另外 一个实现Session的共享,在此使用的是Session的共享,在实现共享,须要在Tomcat进行相关的配置,要实现这个需求,在此配置的Session的共享服务器为Redis内存服务,主要是为了保证数据的高效读取与存储,在使用Redis进行Session共享,必需要添加如下几个名:测试
这个几个包,支持Tomcat8没有任何问题,其它版本的具体支持状况如何,没有进行相关的测试。google
而后修改Tomcat中的配置文件:spa
在此看到的10.0.0.x的地址,所有是内网完成的, 外网不通,只有负责负载的服务器才直接链接的外网。代理
在这个时候,能够顺利启动tomcat服务器,与Nginx服务器了,可是在此以前,必需要先启动Nginx服务器,不然Tomcat可能会出现启动失败的状况。Nginx服务能够顺利启动
三处配置以下:
nginx.conf中添加的引用内容
include vhost/*.conf;
负载均衡配置:
upstream api.xxx.com {
server 10.0.0.12:8080 weight=5;
server 10.0.0.15:8081 weight=5 ;
server 10.0.0.16:8080 weight=5 backup;
}
server {
listen 80;
server_name api.xxx.com;
location /
{
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://api.xxx.com;
}
}
Tomcat配置
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" /> <Manager className="com.radiadesign.catalina.session.RedisSessionManager" host="10.0.0.16" port="10000" database="0" maxInactiveInterval="60" />
关于怎么安装Tomcat,Nginx,Redis的不是这个的讨论范围。