我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 运维优化 > 阿里云linux下Nginx整合Tomcat实现负载均衡集群
总共48087条微博

动态微博

查看: 3115|回复: 1

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

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2015-09-09 21:03:25 |只看该作者 |倒序浏览
    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 (三者的安装这里不做介绍、假设都已经安装好)

    二、架构图


    说明:
    1、这里选择三台服务器、每台服务器安装一个tomcat。
    2、所有的代码都存放在内容服务器上,内容服务器提供文件共享,集群机通过cifs方式映射为web目录,这样便于统一管理和即时同步。(如何使用NFS以后将做一篇教程实现)


    三、整合Nginx和Tomcat
    由于本身就是一台服务器、所以这里选择纵向集群、使用一台服务器安装Nginx和2台Tomcat。
    (下面的配置如果没有安装过Nginx和Tomcat、请自行补脑)
    1、cd  /usr/local/nginx/conf  切换到conf目录下。
    2、mkdir balance  #新建负载均衡目录、目的是为了区分
    3、vi upstream.conf  加入一下代码:
    1. upstream love {
    2.      server localhost:8082 weight=1  max_fails=2 fail_timeout=30s;
    3.      server localhost:8083 weight=1  max_fails=2 fail_timeout=30s;
    4. }
    复制代码
    4、vi  vhost.conf  
    加入一下代码:
    1. server {
    2.         listen       80;
    3.         server_name  love.52itstyle.com;
    4.         charset utf8;
    5.         location / {
    6.              proxy_next_upstream http_502  http_504 error timeout invalid_header;
    7.              proxy_set_header        Host $host;
    8.              proxy_set_header        X-Real-IP $remote_addr; #获取真实IP
    9.              proxy_set_header        X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip
    10.              proxy_pass      http://love;
    11.         }
    12.         location ~ .*\.(jsp|action|do)?$ {
    13.              proxy_set_header        Host $host;
    14.              proxy_set_header        X-Real-IP $remote_addr; #获取真实IP
    15.              proxy_set_header        X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip
    16.              proxy_pass      http://love;
    17.         }
    18.         location ~ /purge(/.*) {
    19.             #设置只允许指定的IP或IP段才可以清除URL缓存。
    20.             #allow   192.168.1.66;
    21.             #deny    all;
    22.             proxy_cache_purge  cache $host$1$is_args$args;
    23.             error_page 405 =200 /purge$1;
    24.         }
    25.         location ~ .*.(css|png|gif|jpg|js)$
    26.         {
    27.             proxy_pass      http://love;
    28.             proxy_cache cache;
    29.             add_header Nginx-Cache $upstream_cache_status;
    30.             proxy_set_header Accept-Encoding 'gzip';
    31.             expires 30d;
    32.         }
    33.       
    34.     }
    复制代码
    5、把以上2个文件导入nginx.conf

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

    9.     sendfile        on;
    10.     keepalive_timeout  65;
    11.    
    12.     include balance/upstream.conf;
    13.     include balance/vhost.conf;

    14. }
    复制代码

    重启 Nginx  ./nginx -s reload

    访问  http://love.52itstyle.com
    大家看网站标题会在我爱你和I Love You之间切换、说明负载时配置成功,不是JS实现的哈。






    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    33

    主题

    1

    听众

    409

    金钱

    四袋长老

    该用户从未签到

    沙发
    发表于 2016-11-02 15:27:57 |只看该作者
    真心不错,点赞,好好学习啦
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表