本人做过的APP项目 后端数据处理 用的是 Nginx+Tomcat+主从mysql (云服务),,本人还是比较喜欢用Nginx的;
Nginx的缺点是:
1、Nginx仅能支持http、和Email协议,这样就在适用范围上面小些,这个是它的缺点。 2、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。不支持Session的直接保持,但能通过ip_hash来解决。一般项目用haproxy 很大原因Nginx不支持tcp代理 只是七层的(不支持url ,现在Nginx 1.9弥补了这一缺憾……
Nginx 挂掉一般项目断掉 此处加上keepalive 实现热备是比较好的………………
Nginx 1.9.0:
The
ngx_stream_core_module
module is available since version 1.9.0. This module is not built by default, it should be enabled with the--with-stream
configuration parameter.ngx_stream_core_module 这个模块在1.90版本后将被启用。但是并不会默认安装,需要在编译时通过指定 --with-stream 参数来激活这个模块。
其他改进包括:
- Change: 删除过时的 aio 和 rtsig 事件处理方法
- Feature: 可在 upstream 块中使用 "zone" 指令
- Feature: 流模块,支持 TCP 代理和负载均衡
- Feature: ngx_http_memcached_module 支持字节范围
- Feature: Windows 版本支持使用共享内存,带随机化地址空间布局.
- Feature: "error_log" 指令可在 mail 和 server 级别
- Bugfix: the "proxy_protocol" parameter of the "listen" directive did not work if not specified in the first "listen" directive for a listen socket.
使用Haproxy的负载均衡解决tomcat,etcd和MySQL的单点故障实现高可用,并且使用keepalived实现haproxy的热备,解决haproxy的单点故障而实现整体的高可用。MySQL数据库使用双主相互复制的结构,两个数据库的数据是一致的。然后通过keepalived做热备,当一台数据库挂掉的时候,可以自动将访问切换到另外一台上,这样避免了一主多从的结构下,当主节点挂了,需要人为修改访问IP到从节点。