欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx+Tomcat搭建集群

程序员文章站 2022-07-13 09:32:21
...

nginx是一款*的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。Nginx百度百科

正向代理

当我们需要访问一下外国网站时由于一定的原因,无法正常访问,此时找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们!
Nginx+Tomcat搭建集群

上述这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
客户端必须要进行一些特别的设置才能使用正向代理。

反向代理

反向代理的处理方式,例如某宝网站,每天同时连接到网站的访问人数已经爆表,单单个服务器不能满足用户访问量的要求,就出现分布式部署;也就就是用户访问URL时,nginx通过一定的规则把用户的请求分发到不同的服务器上,实现负载均衡。
实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
示意图:
Nginx+Tomcat搭建集群

项目场景

通常情况下,我们在实际项目操作时,正向代理和反向代理很有可能会存在在一个应用场景中,正向代理代理客户端的请求去访问目标服务器,目标服务器是一个反向单利服务器,反向代理了多台真实的业务处理服务器

nginx安装部署

通过https://nginx.org/en/download.html 下载

Nginx+Tomcat搭建集群
放在本地解压缩
Nginx+Tomcat搭建集群

在命令行中启动nginx服务
Nginx+Tomcat搭建集群

强制停止nginx服务器,如果有未处理的数据,丢弃
nginx -s stop

如果有未处理的数据,等待处理完成之后停止

nginx -s quit

在conf文件夹中找到nginx.conf配置文件

main                                # 全局配置

events {                            # nginx工作模式配置

}

http {                                # http设置
    ....

    server {                        # 服务器主机配置
        ....
        location {                    # 路由配置
            ....
        }

        location path {
            ....
        }

        location otherpath {
            ....
        }
    }

    server {
        ....

        location {
            ....
        }
    }

    upstream name {                    # 负载均衡配置
        ....
    }
include vhost/*.conf; #引入目录下的配置文件,方便维护管理
}

主要由6个部分组成:

main:用于进行nginx全局信息的配置
events:用于nginx工作模式的配置
http:用于进行http协议信息的一些配置
server:用于进行服务器访问信息的配置
location:用于进行访问路由的配置
upstream:用于进行负载均衡的配置

Nginx 常用命令

  • 测试配置文件 安装路径下/nginx/sbin/nginx -t

  • 启动命令 /nginx/sbin/nginx

  • 停止命令 /nginx/sbin/nginx -s stop 或者 nginx -s quit

  • 重启命令 /nginx/sbin.nginx -s reload

  • 查看进程ps -ef|grep nginx

  • 平滑重启 kill -HUP 【Nginx 主进程号】

nginx支持的负载均衡调度算法方式

1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream backserver { 
server 192.168.0.14; 
server 192.168.0.15; 
} 

2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

upstream backserver { 
server 192.168.0.14 weight=10; 
server 192.168.0.15 weight=10; 
} 

3、IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决集群部署环境下session共享的问题。

upstream backserver { 
ip_hash; 
server 192.168.0.14:88; 
server 192.168.0.15:80; 
} 

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream backserver { 
server server1; 
server server2; 
fair; 
} 

5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

upstream backserver { 
server squid1:3128; 
server squid2:3128; 
hash $request_uri; 
hash_method crc32; 
} 

实现权重的负载均衡

配置系统的host文件
添加一条
127.0.0.1 www.imooc1.com

Nginx+Tomcat搭建集群

单机配置多应用

配置两个tomcat服务器

  1. 在环境变量配置中新增 CATALINA_BASE ,CATALINA_HOME,TOMCAT_HOME ,配置对应tomcat对应的路径
    Nginx+Tomcat搭建集群
  2. 在tomcat 的conf的文件夹中server.xml 修改。
    修改tomcat的端口不能一样,并将tomcat1配置文件中的 CATALINA_BASE ,CATALINA_HOME,TOMCAT_HOME 全部修改为CATALINA_BASE2 ,CATALINA_HOME2,TOMCAT_HOME2
    分别启动两个tomcat
upstream www.imooc1.com{
        server www.imooc1.com:7088; #默认为权重,访问7088和9080 端口的比例为1:1
        server www.imooc1.com:9080;
    #   server 127.0.0.1:7088;
    #   server 127.0.0.1:9080;
}
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    autoindex on;
    server_name www.imooc1.com;
    access_log off ;
    index index.html index.htm index.jsp index.php;
    #error_page 404 /404.html;
    if ( $query_string ~* ".*[\;'\<\>].*" ){
        return 404;
    }
    location / {
        proxy_pass http://www.imooc1.com;
        add_header Access-Control-Allow-Origin *;
    }
}

用户通过访问www.imooc1.com,nginx通过去权重规则,调用7088或9080端口,
实现负载均衡

Nginx+Tomcat搭建集群
Nginx+Tomcat搭建集群