nginx学习文档之二 配置负载均衡-windows配置负载均衡

#windows配置负载均衡

nginx+tomcat负载均衡的意思大概如下图:

输入图片说明

所有请求先经过nginx服务器,然后由nginx服务器进行转发,将请求根据配置需要分发给指定的tomcat服务器

##部署两个tomcat 8088和8084

windows下部署两个tomcat的过程参考

一台机器上安装两个tomcat

然后分别给两个tomcat部署一个小应用,只是一个简单的页面index.jsp,表示区分是哪个tomcat下的

8088下的tomcat

输入图片说明

8084下的tomcat

输入图片说明

##配置nginx.conf

实现nginx+tomcat负载均衡实际上只要配置nginx的nginx.conf配置文件就可以了

输入图片说明

在nginx.conf中的http里添加

#服务器的集群  
upstream  myj.com {  #服务器集群名字   
    server    127.0.0.1:18080  weight=1;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。  
    server    127.0.0.1:28080  weight=2;  
}

再将http里的server的location修改成

location / {
        #root   html;
        #index  index.html index.htm;
        proxy_pass http://myj.com/;  
        proxy_set_header   Host    $host;  
    		proxy_set_header   X-Real-IP   $remote_addr;  
    		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
       }

下面是修改过后的nginx.conf文件

#user  nobody;
worker_processes  1;#工作进程的个数,一般与计算机的cpu核数一致

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

#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;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;#长连接超时时间,单位是秒

gzip  on;#启用Gizp压缩

	#服务器的集群  
upstream  myj.com {  #服务器集群名字   
    #Nginx是如何实现负载均衡的,Nginx的upstream目前支持以下几种方式的分配
		#1、轮询(默认)
		#每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
		#2、weight
		#指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
		#2、ip_hash
		#每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
		#3、fair(第三方)
		#按后端服务器的响应时间来分配请求,响应时间短的优先分配。
	 	#4、url_hash(第三方)
		#按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效
    server    127.0.0.1:8088  weight=1;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。  
    server    127.0.0.1:8084  weight=2;  
}
	#当前的Nginx的配置
server {
    listen       80;#监听80端口,可以改成其他端口
    server_name  localhost;#当前服务的域名

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        #root   html;
        #index  index.html index.htm;
        proxy_pass http://myj.com/;  
        proxy_set_header   Host    $host;  
    		proxy_set_header   X-Real-IP   $remote_addr;  
    		proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    		

    }

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

}

主要配置的地方说明

输入图片说明

##重启nginx测试

到nginx的安装目录下执行 nginx -s reload 重启nginx

输入图片说明

然后在浏览器上加上应用名访问:localhost/testNginx

并按f5刷新访问

输入图片说明

输入图片说明

会发现,访问的结果中会8088中的应用,也有8084中的应该用,而且8084被访问到的几率会大一倍,这是因为在nginx.conf中配置服务群,8084的weight要大一些,所以被nginx分发到的请求概率也大一些,而且,当其中一个tomcat服务器停掉之后,比如8084因为某种原因停掉,那么nginx就会把请求都分发到另外一台仍然正常工作的8088中。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值