nginx+中怎么实现集群负载均衡

这篇文章将为大家详细讲解有关nginx+中怎么实现集群负载均衡,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一,配置nginx 
安装nginx包 

    a.安装pcre 

    tar zxvf pcre-7.2.tar.gz 

    cd pcre 

./configure  --prefix = /pcre 

Make;make install 

b,安装nginx 

tar zxvf nginx-0.6.32.tar.gz 

cd nginx-0.6.32 

./configure  --prefix=/nginx –with-pcre=/pcre  --with-http_rewrite_module 

Make;make install 

3, 修改配置文件 

Vi /nginx/conf/nginx.conf 

#用户组 

user nobody nobody;                  

#cpu个数,可以按照实际服务器来计算 

worker_processes  8;                 

worker_rlimit_nofile 51200;          

events { 

    use epoll; 

#连接数 

    worker_connections  8192 ;       

http { 

    include       mime.types; 

    default_type  application/octet-stream; 

    server_names_hash_bucket_size 128; 

#    access_log  off; 

#    access_log  logs/access.log; 

#缓存的时间,(可以根据不同文件设置不同时间) 

#   expires           2h;       

    tcp_nodelay on; 

    keepalive_timeout  30;       

    gzip  on; 

    gzip_min_length  10; 

    gzip_buffers     4 8k; 

    gzip_http_version 1.1; 

    gzip_types       text/plain application/x-javascript text/css text/html application/xml; 

        sendfile         on; 

        tcp_nopush       on; 

        reset_timedout_connection  on; 

     client_max_body_size 30m;  

#设定负载均衡列表        

upstream  backend            

{                       

server   172.23.254.2:8080;    

server   172.23.254.3:8080; 

#设定虚拟主机 

server { 

        listen       80; 

        server_name  www.abc.com; 

#对 / 所有做负载均衡(本机nginx采用完全转发,所有请求都转发到后端的tomcat集群) 

       location / {        

        root /web/www ; 

       index index.jsp index.htm index.html; 

            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; 

       proxy_pass  http://backend;    

       } 

主要在配置proxy与upstream 

Upstream具有负载均衡能力,可以自动判断下面的机器,并且自动踢出不能正常提供服务的机器。 

4,启动程序 

/nginx/sbin/nginx 

5,编写启动脚本 

Vi nginx.sh 

#!/bin/sh 

CWD=`pwd` 


case $1 in 
        start) 
                /nginx/sbin/nginx; 
                        ;; 
        stop) 
                kill -2 `ps -ef|grep "/nginx/sbin/nginx"|grep -v "grep"|awk '{print $2}' ` 
                        ;; 
        restart) 
                cd "$CMD" 
                $0 stop 
                $0 start 
        ;; 
        *) 
        echo $"Usage: $0 {start|stop|restart}" 
        exit 1 
esac 
exit 0 

    二,配置tomcat 

1,  下载tomcat5.59 

tar zxvf tomcat5.59 

        2,修改配置文件 

            a,配置数据源 

            b,优化tomcat最大并发数 

                    <Connector port="8080" maxHttpHeaderSize="8192" 

               maxThreads="2048" minSpareThreads="100" maxSpareThreads="200" 

               enableLookups="false" redirectPort="8443" acceptCount="500" 

               connectionTimeout="20000" disableUploadTimeout="true" /> 

            c,添加虚拟主机 

(注,主转发的虚拟主机必须用localhost,否则nginx不能通过内网ip转发,而只有通过域名转发 

            d,测试 

                打开http://ip:8080 

                页面能访问则正常 

2,  其他的tomcat服务器也用同样的配置 

三,做tomcat集群 

    两台机器 172.23.254.2  172.23.254.3 

    做集群需要修改的文件配置有三个地方 

    1,修改conf/server.xml配置文件 
        a. 找到Engine标签,加入属性 jvmRoute="worker1" 

b.找到Cluster标签,去掉注释,同时修改tcpListenAddress为本机ip 172.23.254.2 (注:这一段Cluster必须放在hosts里面) 

2,  修改应用的web.xml 

修改web应用里面WEB-INF目录下的web.xml文件,加入标签 

<distributable/> 

直接加在</web-app>之前就可以了 

这个是加入tomcat的session复制的,做tomcat集群必须需要这一步,否则用户的session就无法正常使用。 

3,  开启防火墙 

这两个tomcat之间必须开启防火墙信任。 

分别启动两个tomcat,查看每一个tomcat是否都启动了8080端口以及4001端口 

再用netstat –an 查看链接情况 

tcp        0      0 172.23.254.2:43320      172.23.254.3:4001       ESTABLISHED 

tcp        0      0 172.23.254.2:46544      172.23.254.3:4001       TIME_WAIT   

tcp        0      0 172.23.254.2:40118      172.23.254.3:4001       ESTABLISHED 

tcp        0      0 172.23.254.2:4001       172.23.254.3:48804      ESTABLISHED 

tcp        0      0 172.23.254.2:4001       172.23.254.3:34254      ESTABLISHED 

如果两台机器的4001端口分别建立了连接,则说明集群配置成功,可以进行session复制。 
 

关于nginx+中怎么实现集群负载均衡就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。