搭建Tomcat负载均衡集群

  • 一.Tomcat负载均衡集群构建图
  • 二. 准备三个tomcat
  • 三. 分别修改三个tomcat端口号
  • 四. 将三个tomcat启动
  • 五.在windows中分别访问tomcat,都看到主页代表启动成功
  • 六. 将三个tomcat配置到nginx的配置文件中
  • 七. 进入nginx安装目录sbin目录启动nginx
  • 八.访问nginx,看到其中一个tomcat画面
  • 九. Nginx负载均衡策略
  • 1.轮询
  • 2.weight 权重
  • 3.ip_hash
  • 4.least_conn
  • 十. Nginx静态文件代理
  • ①. 动静分离图
  • ②. 具体配置
  • 十一. nginx.conf配置文件详细分析
  • ①. 全局块:配置服务器整体运行的配置指令
  • ②. events 块:影响 Nginx 服务器与用户的网络连接
  • ③. http 块
  • ①、http 全局块
  • ②、server 块



搭建Nginx的部署在前面一篇博客有,带安装包

一.Tomcat负载均衡集群构建图

linux 怎么 启动nginx 服务_tomcat

二. 准备三个tomcat

我这里搭建的是一个伪分布式,三个tomcat在一个机器上面运行 解压在root目录下

linux 怎么 启动nginx 服务_nginx_02

三. 分别修改三个tomcat端口号

vim tomcat1/conf/server.xml
	//命令修改如下内容: tomcat1
		//第一个
		<Server port="8989" shutdown="SHUTDOWN">
		//第二个
		<Connector port="8003" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
        //第三个
   		<Connector port="10010" protocol="AJP/1.3" redirectPort="8443" />

linux 怎么 启动nginx 服务_linux 怎么 启动nginx 服务_03


linux 怎么 启动nginx 服务_tomcat_04

linux 怎么 启动nginx 服务_linux 怎么 启动nginx 服务_05


另外两个也是一样,都tom1的基础上端口号都是+1

四. 将三个tomcat启动

jps 查看tomcat 进程 ps aux|grep tomcat 也行

linux 怎么 启动nginx 服务_nginx_06

查看启动日志

linux 怎么 启动nginx 服务_分布式_07

查看防火墙的状态

linux 怎么 启动nginx 服务_linux 怎么 启动nginx 服务_08

五.在windows中分别访问tomcat,都看到主页代表启动成功

linux 怎么 启动nginx 服务_nginx_09

[root@tomcat ~]# vim tom1/webapps/ROOT/index.jsp

我这里修改了index.jsp的源代码 方便后面直观Nginx效果

linux 怎么 启动nginx 服务_tomcat_10

六. 将三个tomcat配置到nginx的配置文件中

//在server标签上加入如下配置:
upstream tomcat-servers {
      server 192.168.153.204:8989;
      server 192.168.153.204:8990;
      server 192.168.153.204:8991;
    }

linux 怎么 启动nginx 服务_java_11

//将配置文件中 location /替换为如下配置:
		location / {
			 proxy_pass http://tomcat-servers;
			 proxy_redirect    off;
			 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			 proxy_set_header X-Real-IP $remote_addr;
			 proxy_set_header Host $http_host;
			 proxy_next_upstream http_502 http_504 error timeout invalid_header;
		   }

linux 怎么 启动nginx 服务_nginx_12

七. 进入nginx安装目录sbin目录启动nginx

./nginx -c /usr/nginx/conf/nginx.conf

linux 怎么 启动nginx 服务_java_13

linux 怎么 启动nginx 服务_分布式_14

linux 怎么 启动nginx 服务_分布式_15

八.访问nginx,看到其中一个tomcat画面

linux 怎么 启动nginx 服务_tomcat_16

刷新页面

linux 怎么 启动nginx 服务_分布式_17

九. Nginx负载均衡策略

1.轮询

  • 默认策略,每个请求会按时间顺序逐一分配到不同的后端服务器

2.weight 权重

  • weight参数用于指定轮询几率,weight的默认值为1,;weight的数值与访问比率成正比
upstream tomcat-servers {
        server localhost:8989   weight=2;  
        server localhost:8990;  
        server localhost:8991   backup;  
    }
  • 权重越高分配到需要处理的请求越多。
  • 此策略可以与least_conn和ip_hash结合使用主要用于后端服务器性能不均

3.ip_hash

  • 指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
upstream tomcat-servers {
        ip_hash;    #保证每个访客固定访问一个后端服务器
        server localhost:8080;
        ......
    }

4.least_conn

  • 把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
upstream tomcat-servers{
        least_conn;    #把请求转发给连接数较少的后端服务器
        server localhost:8080;
    }

十. Nginx静态文件代理

①. 动静分离图

linux 怎么 启动nginx 服务_tomcat_18

②. 具体配置

linux 怎么 启动nginx 服务_linux 怎么 启动nginx 服务_19


linux 怎么 启动nginx 服务_分布式_20

server {
        listen       80;
        server_name  192.168.153.203;

        location /www/ {
              root   /data/;
              index  index.html index.htm;
         }


        location /image/ {
              root   /data/;
              autoindex  on;
         }

linux 怎么 启动nginx 服务_java_21


linux 怎么 启动nginx 服务_linux 怎么 启动nginx 服务_22


linux 怎么 启动nginx 服务_java_23

十一. nginx.conf配置文件详细分析

①. 全局块:配置服务器整体运行的配置指令

  • 从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。
  • 这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约

linux 怎么 启动nginx 服务_java_24

②. events 块:影响 Nginx 服务器与用户的网络连接

  • events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。

linux 怎么 启动nginx 服务_java_25

③. http 块

  • 这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
  • 需要注意的是:http 块也可以包括 http 全局块、server 块。

①、http 全局块

  • http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

linux 怎么 启动nginx 服务_java_26

②、server 块

  • 这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
  • 每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
  • 而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
  • linux 怎么 启动nginx 服务_nginx_27

  • 全局 server 块
  • 最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
  • linux 怎么 启动nginx 服务_java_28

  • location 块
  • 一个 server 块可以配置多个 location 块。
  • linux 怎么 启动nginx 服务_分布式_29