设为首页 收藏本站
查看: 577|回复: 0

[经验分享] nginx双机高可用及Tomcat集群负载均衡

[复制链接]

尚未签到

发表于 2016-12-26 11:16:58 | 显示全部楼层 |阅读模式
nginx双机高可用及Tomcat集群负载均衡

********试验环境及常用命令********************
---》试验机器
192.188.32.83 tomcat1
192.188.32.55 tomcat2

---》nginx linux下安装
参考 http://limaoyuan.iyunv.com/blog/904352

注意:其实把pcre-devel-7.8-3.1.el6.i686.rpm(在cd安装盘上找)安装过去就能正确编译。
---》tomcat 安装(略)

---》启动关闭tomcat服务器
/usr/local/apache-tomcat-6.0.32/bin/startup.sh
/usr/local/apache-tomcat-6.0.32/bin/shutdown.sh
---》配置nginx文件
vi /usr/local/nginx/conf/nginx.conf
---》启动nginx
/usr/local/nginx/sbin/nginx
---》关闭nginx
关闭nginx
[iyunv@LinuxTest sbin]# ps -ef |grep nginx
root      3462     1  0 13:07 ?        00:00:00 nginx: master process ./nginx
nobody    3463  3462  0 13:07 ?        00:00:00 nginx: worker process
root      3467 31523  0 13:08 pts/1    00:00:00 grep nginx
[iyunv@LinuxTest sbin]# kill 3462

******单nginx 配置tomcat集群(单机)负载均衡************
参考:http://ari.iyunv.com/blog/833153

******单nginx 配置tomcat集群(多机器)负载均衡**********
---》分别在两台试验机器上Tomcat web服务器
  分别修改两套tomcat的ROOT/index.html ,在<body>中加入
<h2>from tomcat1: 192.188.32.83</h2>  
<h2>from tomcat2: 192.188.32.85</h2>
便于观察。

---》在192.188.32.83上部署nginx ,配置参考

#user  nobody;
user root root;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue   
    use epoll;
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

   upstream tomcat {
        server 192.188.32.83:8080;
        server 192.188.32.55:8080;
    }

    server {
        listen       80;
        server_name  192.188.32.83;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
      root   html;
      index  index.html index.htm;
      proxy_pass   http://tomcat;
      proxy_redirect    off;
      proxy_set_header   Host $host;
      proxy_set_header   X-Real-IP $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
      client_max_body_size   10m;
      client_body_buffer_size   128k;
      proxy_connect_timeout   90;
      proxy_send_timeout   90;
      proxy_read_timeout   90;
      proxy_buffer_size   4k;
      proxy_buffers   4 32k;
      proxy_busy_buffers_size   64k;
      proxy_temp_file_write_size  64k;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

---》测试
测试一:启动 nginx\tomcat1\tomcat2
访问http://192.188.32.83/ 观察,会轮询83和85两台服务器。
测试二:关闭 tomcat1
访问http://192.188.32.83/ 观察,能正常访问85web服务器。
测试三:启动tomcat1
访问http://192.188.32.83/ 观察,会轮询83和85两台服务器。
测试四:关闭tomcat2 结果参考上述步骤

******双机nginx 配置tomcat集群(多机器)负载均衡**********
单nginx 配置tomcat集群(单机)负载均衡、单nginx 配置tomcat集群(多机器)负载均衡
缺陷是高度依赖负载均衡服务器,负载均衡服务器故障会导致整个网络无法访问,所以考虑把负载均衡服务器也做成双机高可用。

--》方案
采用 linux虚拟ip(ip漂移技术)实现Nginx双机高可用。下述为虚拟ip阐述了ip虚拟技术:

通常情况下,两台服务器都具有一块以上的网卡,每块网卡都应该有一个IP地址,同时,还应该有一个漂移IP地址,该地址为工作IP地址。因此,最简单的主从方式下,双机系统要占用3个网络地址。
在分配IP地址时,要分清工作IP地址和主机自由地址。如在主从方式、单网卡的情况下,主机一地址为200.10.10.1,主机二的地址为200.10.10.2,工作地址为200.10.10.3,正常情况下,工作主机的自由地址是被工作地址取代的(若主机一在工作,主机一得地址由200.10.10.1变为200.10.10.3)。在发生主机切换的情况下,主机一的地址恢复为200.10.10.1,而主机二的地址会由200.10.10.2变为200.10.10.3,这就是地址漂移。

网卡上增加一个IP:
/sbin/ifconfig eth0:1 192.168.3.104 netmask 255.255.255.0
/sbin/route add -host 192.168.3.104 dev eth0:1
删除网卡的第二个IP地址:
ip addr del 192.168.0.1 dev eth0

---》分别给两台服务器配置虚拟ip
两台机器的虚拟ip定为 192.188.32.81

***32.83添加虚拟ip
/sbin/ifconfig eth1:1 192.188.32.81 netmask 255.255.255.0
/sbin/route add -host 192.188.32.81 dev eth1:1

***32.85添加虚拟ip
/sbin/ifconfig eth0:1 192.188.32.81 netmask 255.255.255.0
/sbin/route add -host 192.188.32.81 dev eth0:1

--》分别安装nginx和tomcat

---》nginx配置参考

#user  nobody;
user root root;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue   
    use epoll;
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

   upstream tomcat {
        server 192.188.32.83:8080;
        server 192.188.32.55:8080;
    }

    server {
        listen       80;
#####需要修改的地方###
        server_name  192.188.32.81;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
      root   html;
      index  index.html index.htm;
      proxy_pass   http://tomcat;
      proxy_redirect    off;
      proxy_set_header   Host $host;
      proxy_set_header   X-Real-IP $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
      client_max_body_size   10m;
      client_body_buffer_size   128k;
      proxy_connect_timeout   90;
      proxy_send_timeout   90;
      proxy_read_timeout   90;
      proxy_buffer_size   4k;
      proxy_buffers   4 32k;
      proxy_busy_buffers_size   64k;
      proxy_temp_file_write_size  64k;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

---》测试
测试1:启动两台tomcat、nginx,访问 http://192.188.32.81/,结果能正常访问;
测试2:关闭某一台nginx,访问 http://192.188.32.81/,结果能正常访问;
(可以关闭nginx,或删除虚拟ip模拟服务器故障情况)

**删除83上的虚拟ip
ip addr del 192.188.32.81 dev eth1
**删除55上的虚拟ip
ip addr del 192.188.32.81 dev eth0

参考:
http://limaoyuan.iyunv.com/blog/904352
http://ari.iyunv.com/blog/833153
http://www.cnblogs.com/xiaogangqq123/archive/2011/03/04/1971002.html
http://www.php100.com/html/program/nginx/2013/0905/5525.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-319662-1-1.html 上篇帖子: nginx: [emerg] bind() to 0.0.0.0:8100 failed (98: Address already in use) 下篇帖子: nginx和squid 2.5的gzip压缩问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表