这里有新鲜出炉的 Nginx 开发从入门到精通,程序狗速度看过来!
Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
这篇文章主要介绍了详解基于 Centos7+Nginx+Tomcat8 的负载均衡服务器的搭建,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
由于工作的需求,在使用中,需要搭建负载均衡,研究了 Apache+Tomat 负载均衡的方案,并且通过检索相关的文章,进行了比较发现,Apache 负载负载均衡在使用的效率上,远远不如 Nginx 的效率高,因此决定使用 Nginx 来进行服务的搭建。最初 YUM 安装了 Nginx,但是不知道什么原因,Nginx 的服务可以正常启动,静态页面也可以正常访问,但是就是无法正常的搭建虚拟主机和负载均衡。对引没有深究原因,决定把他卸载,然后手动安装。
手动安装好 Nginx 后,一切正常,虚拟主机,负载均衡的配置全部没有任何问题。顺利启用,具体的配置文件如下:
在 conf 的 nginx.conf 的文件中加入了:include vhost/*.conf; 以引入 vhost 目录下的所有的. conf 文件,为了以后配置起来简单,当然如果需要的话,也可以一个一个添加。
因为做负载的服务为 API 服务,在这里 conf 文件的名字就叫做 api.xxx.com.conf,打开文件的配置如下:
在此没有使用 IP 轮询的方式,而使用的是 usstream 的方式,具体这几个方式有什么不同,大家可以百度或 google 一下相关的介绍。需要注意的是 proxy_pass, 在此配置的为 upstream 的名字,其它的不允许使用,如果直接配置 IP 地址,则不会实现负载均衡。
其中 weight 表示的权重,数越大,权重越高,分配到的机会越大, backup 表示的是热备服务器,即在前两个负载都出现问题的时候,热备服务器就会自动承担这些访问。
至此 Nginx 负载均衡配置器配置完成,但是因为涉及到负载之后,若是普通的网址,在访问的时候,就会再现 Session 丢失的情况,因此这个时候,就要处理 session 丢失的问题,要处理此问题,有多个解决方案,一个是使用 Cookies 代理,另外 一个实现 Session 的共享,在此使用的是 Session 的共享,在实现共享,需要在 Tomcat 进行相关的配置,要实现这个需求,在此配置的 Session 的共享服务器为 Redis 内存服务,主要是为了保证数据的高效读取与存储,在使用 Redis 进行 Session 共享,必须要添加以下几个名:
这个几个包,支持 Tomcat8 没有任何问题,其它版本的具体支持情况如何,没有进行相关的测试。
然后修改 Tomcat 中的配置文件:
在此看到的 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 的不是这个的讨论范围。
如果需要请查看
详解 CentOS7.0 安装与配置 Tomcat-7
centos7 安装 nginx 的两种方法介绍
详解在 Redis 在 Centos7 上的安装部署
来源: http://www.phperz.com/article/17/0704/336160.html