Nginx+Tomcat搭建负载均衡集群详细步骤

前言

没配置之前,我认为是个非常麻烦的事情,但是最终弄下来觉得其实还挺简单的,那么接下来我就通过用Nginx+两个tomcat来搭建一个简单的负载均衡服务器集群

tomcat的配置

1.解压两份tomcat,后缀分别为1和2
Nginx+Tomcat搭建负载均衡集群详细步骤_第1张图片
2.在环境变量中配置一下
Nginx+Tomcat搭建负载均衡集群详细步骤_第2张图片
Nginx+Tomcat搭建负载均衡集群详细步骤_第3张图片
3.修改两个tomcat的bat文件,这个很重要,我看很多博主都没有写清楚,导致我在搭建的时候踩了坑,要想本地启动两个tomcat服务器,那么它们的CATALINA_HOMECARALINA_BASE应该是各自自己的,除了环境变量要改,.bat也要改而且是所有的名称都要替换成在环境变量配置的一样例如tomcat1的CATALINA_HOME全部改查CATALINA_HOME_1
Nginx+Tomcat搭建负载均衡集群详细步骤_第4张图片
不要憨憨的一个一个改,直接全文搜索替换就好了
两个tomcat都要改:
Nginx+Tomcat搭建负载均衡集群详细步骤_第5张图片
4.修改Tomcat的端口号,在conf下的server.xml文件
为了区别我的端口号为18080 和 28080
要修改三个地方:
Nginx+Tomcat搭建负载均衡集群详细步骤_第6张图片
在这里插入图片描述
在这里插入图片描述

5.为了表示这两个tomcat的区别,我们可以打开tomcat主页面的index.jsp文件,给标题加个单词:
Nginx+Tomcat搭建负载均衡集群详细步骤_第7张图片
Nginx+Tomcat搭建负载均衡集群详细步骤_第8张图片
在这里插入图片描述
6.启动两个tomcat,看初始化页面是否可以正常访问到
Nginx+Tomcat搭建负载均衡集群详细步骤_第9张图片
Nginx+Tomcat搭建负载均衡集群详细步骤_第10张图片
OK,下面我们就对nginx进行配置

Nginx的配置

有需要安装包的可以去我的公众号:松鼠技术站
回复:nginx

1.打开:
Nginx+Tomcat搭建负载均衡集群详细步骤_第11张图片
2.然后进行配置【后面我会附上配置的源文件】:
Nginx+Tomcat搭建负载均衡集群详细步骤_第12张图片
3.启动nginx进行测试:
刷新后访问了不同的tomcat,且比重是1:2
Nginx+Tomcat搭建负载均衡集群详细步骤_第13张图片
Nginx+Tomcat搭建负载均衡集群详细步骤_第14张图片
4.配置文件:

#Nginx所用用户和组.window下不指定
#user  nobody;

#工作的子进程数量(通常等于CPU数量或者两倍于CPU)
worker_processes  1;

#错误日志存放路径
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#指定pid存放路径
#pid        logs/nginx.pid;


events {
     
	#允许最大连接数
    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 netitcast.com{
     
			#根据ip计算将请求分配给后端tomcat
			#同一机器在多网的情况下,路由切换,ip可能不同
			#ip_hash;
			server 127.0.0.1:18080 weight=1;#weight代表权重,权重越大,分配的访问量越多
			server 127.0.0.1:28080 weight=2;
			
			
		}

    server {
     
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
     
			proxy_pass http://netitcast.com;
			proxy_redirect default;
            #root   html;
            #index  index.html index.htm;
        }

        #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;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
     
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
     
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
     
        #    deny  all;
        #}
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
     
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
     
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
     
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
     
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

补充几个状态参数

前面我们在配置文件中写了这么个东西,它有一个权重weight配置,如果不配置的话,nginx默认做轮询,ip_hash的作用是会让相同的客户端ip请求相同的服务器,这里我在本地做测试访问,只有一个客户端,所以将它注释了,看有的文章说配置它可以解决session不共享的问题,这个我没有论证过,感兴趣的可以试一下。

	upstream netitcast.com{
     
			#根据ip计算将请求分配给后端tomcat
			#同一机器在多网的情况下,路由切换,ip可能不同
			#ip_hash;
			server 127.0.0.1:18080 weight=1;//weight代表权重,权重越大,分配的访问量越多
			server 127.0.0.1:28080 weight=2;	
		}

除上述之外,还有几个参数:

参数 作用
down 表示当前的server暂时不参与负载均衡
backup 预留的备份机器,当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器(我认为就是候补机),因此这台机器的压力最轻
max_files 允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误
fail_timeout 在经历了max_files次失败后,暂停服务的时间。max_files可以和fail_timeout一起使用
	upstream netitcast.com{
     
			ip_hash;
			server 127.0.0.1:18080 weight=1 max_fails=2 fail_timeout=2;
			server 127.0.0.1:28080 weight=2 backup;	
			server 127.0.0.1:38080 weight=3 dpwn;	
		}

如果文章对你有帮助,不要忘了给我点个赞吼( ̄▽ ̄)~
欢迎关注我的微信公众号:松鼠技术站

你可能感兴趣的:(Nginx,nginx,java,tomcat,集群)