您的位置:首页 > 运维架构 > Tomcat

阿里云linux下Nginx整合Tomcat实现负载均衡集群

2017-02-24 15:40 666 查看
Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)(下面只介绍负载均衡集群)

1、负载均衡集群(Load Balance Cluster)

负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。

负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。

2、负载均衡系统: 负载均衡又有DNS负载均衡(比较常用)、IP负载均衡、反向代理负载均衡等,也就是在集群中有服务器A、B、C,它们都是互不影响,互不相干的,任何一台的机器宕了,都不会影响其他机器的运行,当用户来一个请求,有负载均衡器的算法决定由哪台机器来处理,假如你的算法是采用round算法,有用户a、b、c,那么分别由服务器A、B、C来处理;

3、分布式是指将不同的业务分布在不同的地方。

而集群指的是将几台服务器集中在一起,实现同一业务。

分布式中的每一个节点,都可以做集群。

而集群并不一定就是分布式的。

举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。

而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。

分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。

==========================================================================

以上是对集群 做一个简单的介绍、不要单纯的为了集群而集群、最起码要理解其中的意思。

集群分为横向集群和纵向集群:

纵向意思就是在一台服务器上安装多个web服务(公用内存,CPU), 横向就是多台服务,每台服务器都各自的web服务。大体基本就是这么个意思。

一、安装所需软件

nginx-1.9.4、apache-tomcat-7.0.63、jdk7 (三者的安装这里不做介绍、假设都已经安装好)

二、架构图

| |----------| |

| | | |

| | | |

| |----------| | |---------------|

| Tomcat集群1 | | |

|--------------| | 192.168.0.11 | | |

外网访问 | | | | | |

-------------------------------------->| | | |----------| | |---------------|

| | | | | | 内容服务器

|--------------| | | | | 192.168.0.14

Nginx负载均衡 | |----------| |

192.168.0.10 | Tomcat集群2 |

| 192.168.0.12 |

| | |---------------|

| |----------| | | |

| | | | | |

| | | | | |

| |----------| | |---------------|

| Tomcat集群3 | 数据服务器

| 192.168.0.13 | 192.168.0.15

说明:

1、这里选择三台服务器、每台服务器安装一个tomcat。

2、所有的代码都存放在内容服务器上,内容服务器提供文件共享,集群机通过cifs方式映射为web目录,这样便于统一管理和即时同步。

三、整合Nginx和Tomcat由于本身就是一台服务器、所以这里选择纵向集群、使用一台服务器安装Nginx和2台Tomcat。

(下面的配置如果没有安装过Nginx和Tomcat、请自行补脑)

1、cd /usr/local/nginx/conf 切换到conf目录下。

2、mkdir balance #新建负载均衡目录、目的是为了区分

3、vi upstream.conf 加入一下代码:

upstream love {
server localhost:8082 weight=1 max_fails=2 fail_timeout=30s;
server localhost:8083 weight=1 max_fails=2 fail_timeout=30s;
}

4、vi vhost.conf 加入一下代码:

server {
listen 80;
server_name love.52itstyle.com;
charset utf8;
location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #获取真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #获取代理者的真实ip
proxy_pass http://love; }
location ~ .*\.(jsp|action|do)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #获取真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #获取代理者的真实ip
proxy_pass http://love; }
location ~ /purge(/.*) {
#设置只允许指定的IP或IP段才可以清除URL缓存。
#allow 192.168.1.66;
#deny all;
proxy_cache_purge cache $host$1$is_args$args;
error_page 405 =200 /purge$1;
}
location ~ .*.(css|png|gif|jpg|js)$
{
proxy_pass http://love; proxy_cache cache;
add_header Nginx-Cache $upstream_cache_status;
proxy_set_header Accept-Encoding 'gzip';
expires 30d;
}

}

5、把以上2个文件导入nginx.conf

http {
include mime.types;
default_type application/octet-stream;
include proxy.conf; #一定要指向代理文件
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'"$upstream_cache_status"';

sendfile on;
keepalive_timeout 65;

include balance/upstream.conf;
include balance/vhost.conf;
}

重启 Nginx ./nginx -s reload
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息