根据真实生产环境 总结。

硬件:共计5台服务器  1台负载windows、2台业务windows、2台数据库linux
业务:运行两个程序,两个数据库
具体:63服务器安装 Nginx 做负载 ;61和62服务器各安装6个Tomcat  跑业务1和业务2 ;59和60各跑一个数据库;
备注:Nginx最好安装在Linux服务器上,因为软件开发公司原因,这里选择安装到windows服务器上

63服务器上nginx开两个端口 8001、8011 ,每个端口都是一个集群接口
8001对应6个tomcat(分布在61、62两台机器上)
8011对应6个tomcat(分布在61、62两台机器上)

红色跑的服务1、蓝色跑的服务2;两数据库互相独立,没有负载设置。
服务1和服务2  各由6个tomcat支撑。

OK,现在我们可以开始配置Nginx来实现负载均衡了,其实非常的简单,只需要配置好Nginx的配置文件即可

修改nginx.conf
#nginx命令
#nginx -t text          configuration file
#nginx -s stop        quick exit
#nginx -s quit        graceful quit
#nginx -s reloadchanging configuration, starting a new worker, quitting an old worker gracefully
#nginx -s reopenreopening log files
#运行用户
#user  nobody;
#工作进程,根据硬件调整,大于等于cpu核数
worker_processes  16;
#映射目录
include       D:/nginx/conflist/*.conf;      集群具体配置放在这里
#等待事件
events {
    #每个进程最大连接数(最大连接=连接数x进程数)
    worker_connections  1024;
}




在 D:/nginx/conflist/文件下 有两个文件    nginx_group1.conf和nginx_group2.conf
分别是两个集群的配置信息,由于两个文件配置信息大部分相同,下面只讲解nginx_group1.conf


#错误日志保存位置
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#进程号保存文件
#pid        logs/nginx.pid;
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  60;
    #打开gzip压缩
    #gzip  on;
    
    #设定负载均衡的服务器列表
    #1-轮询(默认)
    #     每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    #2-weight
    #     指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    #     参数weigth参数表示权值,权值越高被分配到的几率越大
    #3-ip_hash
    #     每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以
    #     解决session的问题。
    #4-fair
    #     这种模式会根据后端服务的响应时间来分配,响应时间短的后端优先分配
    upstream mysvr {
            #ip_hash; 
            server 10.10.12.61:8101;
            server 10.10.12.61:8102;
            server 10.10.12.61:8103;   
            server 10.10.12.62:8101;
            server 10.10.12.62:8102;
            server 10.10.12.62:8103;    
    }
    #第一个虚拟主机
    server {
        #监听IP端口
        listen       8001;
        #主机名
        server_name  localhost;
        #设置字符集
        #charset koi8-r;
        #本虚拟server的访问日志 相当于局部变量
        #access_log  logs/host.access.log  main;
        location / {
            root   html;                      # 指向nginx 安装目录下的html文件夹,看具体配置  
            index  index.html index.htm;
            #proxy_pass  http://mysvr ;       #请求转向mysvr 定义的服务器列表
        }
        #中间层转向mysvr进行负载均衡
        location /JWebService {
            #root   html;
            #index  index.html index.htm;
            proxy_pass  http://mysvr ;       #请求转向mysvr 定义的服务器列表
            
            #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            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;                      #nginx跟后端服务器连接超时时间(代理连接超时)
            #proxy_send_timeout 90;                         #后端服务器数据回传时间(代理发送超时)
            #proxy_read_timeout 90;                         #连接成功后,后端服务器响应时间(代理接收超时)
            #proxy_buffer_size 4k;                          #设置代理服务器(nginx)保存用户头信息的缓冲区大小
            #proxy_buffers 4 32k;                           #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
            #proxy_busy_buffers_size 64k;                   #高负荷下缓冲大小(proxy_buffers*2)
            #proxy_temp_file_write_size 64k;                #设定缓存文件夹大小,大于这个值,将从upstream服务器传
        }
        #文件访问直接指向磁盘文件
        location /FileService {
           ##root alias 
           #location ~ ^/awstats/ {
           #root  /home/awstats/;
           #访问:http://test.com/awstats/ 实际访问的是/home/awstats/awstats/
           #location ~ ^/awstats/ {                        #使用alias时目录名后面一定要加“/”
           #alias  /home/awstats/;
           #访问:http://test.com/awstats/ 实际访问的是/home/awstats/
           root D:\efuture;    ##会指向D:\efuture\FileService 
           autoindex on;       ##会自动显示资源目录  
           index noindex.htm;   
        }
        #访问/tomcat1 的将重新定向到http://127.0.0.1:8381/
        location /tomcat1/ { 
           proxy_pass       http://127.0.0.1:8381/;
           index  index.html index.htm;
        } 
        #访问/tomcat2 的将重新定向到http://127.0.0.1:8382/
        location /tomcat2/ { 
           proxy_pass       http://127.0.0.1:8382/;
           index  index.html index.htm;
        } 
        #设定查看Nginx状态的地址
        location /NginxStatus {
            stub_status on;
            access_log on;
            auth_basic "NginxStatus";
            auth_basic_user_file conf/htpasswd;
        }
        #目录重定向,访问/phpadmin/ 的将重新定向到http://_/phpadmin
        #location /phpadmin/ { 
        #   alias   /opt/www/phpadmin/; 
        #   index   index.php; 
        #} 
        #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_group2.conf    设置,主要配置一下内容
 upstream mysvr {
            #ip_hash; 
            server 10.10.12.61:8201;
            server 10.10.12.61:8202;
            server 10.10.12.61:8203;   
            server 10.10.12.62:8201;
            server 10.10.12.62:8202;
            server 10.10.12.62:8203;    
    }
    #第一个虚拟主机
    server {
        #监听IP端口
        listen       8011;
        #主机名
        server_name  localhost;


首先在61和62上安装  Tomcat  
分别解压出6个Tomcat,分别命名为apache-tomcat-1和apache-tomcat-2  apache-tomcat-3……

然后修改这6个Tomcat的启动端口,分别设为8101、8102、8103、8201、8202、8203  
打开Tomcat的conf目录下的server.xml,修改以下配置:

" protocol="HTTP/1.1"              
               connectionTimeout="20000"
               redirectPort="8443" />

" protocol="HTTP/1.1"              
               connectionTimeout="20000"
               redirectPort="8443" />
 
" protocol="HTTP/1.1"              
               connectionTimeout="20000"
               redirectPort="8443" />
……

分别启动tomcat 看是否正常

我们可以修改每个tomcat的主页,添加内容,在后面测试时便于区分

1 Nginx + 12 Tomcat +2DB 实现2个程序负载均衡的更多相关文章

  1. Nginx 与Tomcat 实现动静态分离、负载均衡

    Nginx 与Tomcat 实现动静态分离.负载均衡 一.Nginx简介: Nginx一个高性能的HTTP和反向代理服务器, 具有很高的稳定性和支持热部署.模块扩展也很容易.当遇到访问的峰值,或者有人 ...

  2. Nginx整合tomcat,实现反向代理和负载均衡

    1.Nginx与Tomcat整合,通过Nginx反向代理Tomcat. Nginx安装路径为:/usr/local//nginx 首先切换路径到:/usr/local//nginx/conf通过命令  ...

  3. 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步

    一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...

  4. nginx配置虚拟主机、反向代理和负载均衡

    为了实现这个功能,需要修改nginx的配置文件,将nginx.conf清理一下,使结构更清晰. worker_processes ; events { worker_connections ; } h ...

  5. Nginx的配置与部署研究,Upstream负载均衡模块

    Nginx 的 HttpUpstreamModule 提供对后端(backend)服务器的简单负载均衡.一个最简单的 upstream 写法如下: upstream backend { server ...

  6. 架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)

    [前言] 在<架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)>中小编简单的讲解了Nginx的原理!俗话说:光说不练假把式.接下来,小编就和大家一起来做个小Demo来体会一下N ...

  7. 架构之路:nginx与IIS服务器搭建集群实现负载均衡(三)

    参考网址:https://blog.csdn.net/zhanghan18333611647/article/details/50811980 [前言] 在<架构之路:nginx与IIS服务器搭 ...

  8. Windows7系统中nginx与IIS服务器搭建集群实现负载均衡

    10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡   分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ...

  9. 基于nginx和tengine的tcp反向代理,负载均衡 安装和配置

    先下载nginx_tcp_proxy_module模块. wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master ...

随机推荐

  1. 重拾c++第三天(6):分支语句与逻辑运算符

    1.逻辑运算符 && || ! 2.关系运算符优先级高于逻辑运算符 3.cctype库中好用的判断 4. ?:符号用法: 状态1?结果1:结果2 5.switch用法: switch ...

  2. MySQL UTF-8 常用字符排序规则

    排序规则 解释 utf8_general_ci 不区分大小写 utf8_general_cs 区分大小写 utf8_bin 区分大小写,字符串每个字符串用二进制数据编译存储,且支持存储二进制数据

  3. 理解setTimeout()

    之前在网上看了很多关于setTimeout的文章,但我感觉都只是点到为止,并没有较深入的去剖析,也可能是我脑袋瓜笨,不容易被点解.后面看了<你不知道的javascript-上卷>一书,决定 ...

  4. 使用ABAP Data Validator验证数据有效性

    在日常的开发过程中,我们常常要处理不同来源的数据.数据可能来自不可靠的外部系统.不可靠的用户输入和甚至设计有误的数据库表,因此,对数据有效性进行验证是必要的工作. 开源工具ABAP Data Vali ...

  5. 【java面试】Web篇

    1.AJAX创建步骤 step1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象:  step2. 创建一个新的HTTP请求,并指定改HTTP请求的方法.URL以及验证信息:  s ...

  6. 【Java并发基础】管程简介

    前言 在Java 1.5之前,Java语言提供的唯一并发语言就是管程,Java 1.5之后提供的SDK并发包也是以管程为基础的.除了Java之外,C/C++.C#等高级语言也都是支持管程的. 那么什么 ...

  7. 大叔 EF 来分析 EntityFrameworks.Data.Core 2

    Extensions 1DbCommand拦截器扩展DbCommandInterceptorExtensions 2Class for IQuerable extensions methods Inc ...

  8. php编译完php.ini加载问题-Loaded Configuration File (none)

    编译安装php7时指定了--with-config-file-path=/usr/local/php7/etc,修改了 php.ini 的配置后重启,但就是不生效. 出现Loaded Configur ...

  9. 关于MySQL5.6配置文件my-default.ini不生效问题

    一.问题描述 首先,由于工作要求,需使用MySQL5.6版本(绿色版),从解压到修改root密码,一切都很顺利,但是在我要修改mysql的最大连接数的时候,出现问题了,配置不生效.完蛋.还好有万能的百 ...

  10. Serverless 的运行原理与组件架构

    本文重点探讨下开发者使用 Serverless 时经常遇到的一些问题,以及如何解决 过去一年,我们和大量 Serverless 用户进行了线上和线下的交流,了解大家的业务场景.对 Serverless ...