redis+tomcat9+nginx实现多台服务器集群负载均衡

本次实验环境

所需要的环境以及软件

配置环境 Tomcat所需要的jar包
Windows Server2019 Datacenter tomcat-redis-session-manager-master-2.0.0.jar
Tomcat9 jedis-2.7.3.jar
Redis3.2 commons-pool2-2.3.jar
nginx1.17.7 这里提供基于不同版本Tomcat编译后的jar包的下载
JDK1.8 链接:https://pan.baidu.com/s/1PjPZWIiz6mnAOxPiHWhhQw 提取码:o2e8

服务器配置

服务器(关闭三台服务器防火墙) 主从关系 所需要的配置环境
192.168.100.211 Redis(master)+Nginx
192.168.100.210 Redis+Tomcat9+JDK1.8
192.168.100.209 Redis+Tomcat9+JDK1.8

Redis配置

安装Redis

windows版本需要从github下载

下载地址: https://github.com/microsoftarchive/redis/releases

将下载好的Redis压缩包分别解压到三台服务器下

配置Redis.windows.conf

主服务器(192.168.100.211)配置Redis

##最基础配置
port 6379(Redis默认端口,配置Redis端口,每台服务器Redis端口不能相同)
bind 127.0.0.1 192.168.100.211(主服务器ip地址)
protected-mode no(默认为yes需要修改为no)
----------------
##可额外添加的配置
requirepass foobared 设置主服务器密码
maxclients 10000     默认最大链接数
maxmemory <bytes>    最大内存容量(字节) 

从服务器(192.168.100.209、192.168.100.210)配置Redis

注意从服务器有多少台就要配置多少次,操作步骤每台服务器都相同(以下两台服务器都配置都举例出来,以作对比)

##192.168.100.209
##最基础配置
port 6380(配置Redis端口,每台服务器Redis端口不能相同)
bind 127.0.0.1 192.168.100.209
slaveof 192.168.100.211 6379(绑定主服务器)
protected-mode no (默认为yes需要修改为no)
slave-read-only no(原先是yes必须要修改为no不然部署项目,节点只有读的权限没有写的权限)
----------------
##可额外添加配置
masterauth <master-password>(如果主服务器设置了密码,那么从服务器要配置主服务器密码,否则链接不上)
##192.168.100.210
##最基础配置
port 6381(配置Redis端口,每台服务器Redis端口不能相同)
bind 127.0.0.1 192.168.100.210
slaveof 192.168.100.211 6379(绑定主服务器)
protected-mode no (默认为yes需要修改为no)
slave-read-only no(原先是yes必须要修改为no不然部署项目,节点只有读的权限没有写的权限)
----------------
##可额外添加配置
masterauth <master-password>(如果主服务器设置了密码,那么从服务器要配置主服务器密码,否则链接不上)

至此主从服务器所有配置文件都已配置完毕

编写Redis启动脚本

如果直接点击redis-server.exe则无法他是无法直接运行我们编写好的配置文件的,所以我们需要编写启动脚本来运行Redis

每台服务器均做相同操作,这里以主服务器192.168.100.211为例

在配置文件目录下,创建Startup.bat文件,代码如下

title Redis-x64-3.2.100(文件夹名字)
redis-server.exe redis.windows.conf

redis+tomcat9+nginx实现多台服务器集群负载均衡

在配置文件目录的上一级目录,创建一个Start6379.bat(命名随便起),代码如下

cd Redis-x64-3.2.100(文件夹名字)
startup.bat

redis+tomcat9+nginx实现多台服务器集群负载均衡

运行

依次运行主服务器以及各从服务器目录下的Start6379.bat......若出现以下则表示运行成功

主服务器

redis+tomcat9+nginx实现多台服务器集群负载均衡

从服务器

redis+tomcat9+nginx实现多台服务器集群负载均衡

redis+tomcat9+nginx实现多台服务器集群负载均衡

配置从服务器Tomcat

添加所需文件

将下载好的文件,选择对应的Tomcat版本,将lib目录下的三个jar包拷贝至Tomcat安装目录下的lib文件下

有多少台Tomcat服务器就重复几次操作

编写Tomcat配置文件

打开Tomcat安装目录下的conf/context.xml文件,在<context></context>下添加如下配置

##192.168.100.209
----------------
   <Valve className="com.naritech.nicole.gump.RedisSessionHandlerValve" />
   <Manager className="com.naritech.nicole.gump.RedisSessionManager"
     host="192.168.100.209"(从服务器IP)
     port="6380"(从服务器Redis端口)
     database="0"
     maxInactiveInterval="60"
     />   
##192.168.100.210
----------------
   <Valve className="com.naritech.nicole.gump.RedisSessionHandlerValve" />
   <Manager className="com.naritech.nicole.gump.RedisSessionManager"
     host="192.168.100.210"(从服务器IP)
     port="6381"(从服务器Redis端口)
     database="0"
     maxInactiveInterval="60"
     />   

运行

添加完配置文件后我们重新启动Tomcat检查各台从服务器是否能访问到Tomcat默认页面

配置主服务器Nginx

#允许生成的进程数,一般设置为当前机器总Cpu核心数的1-2倍
worker_processes  2;
#添加配置
upstream mycluster{
#集群有几台服务器就配置几台,weight表示权重,权重越大访问几率越大
#这里添加已经配置启动好的两台tomcat服务器
#down表示当前的server暂时不参与负载
#backup其他设备都宕机或者繁忙的时候,就使用backup标注的备用机器
server 192.168.100.209:8080 weight=1;
server 192.168.100.210:8080 weight=2;
ip_hash;
}
在server里添加如下配置
----------------
 server {
    #可以修改listen为8080
        listen       80;
        #可以为域名
        server_name  192.168.100.211;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        
      #localhost删除掉原有的root然后添加以下东西
        location / {
          root   html;
            #默认访问的首页
            index  index.html index.htm;
            proxy_redirect off;
             # 请求头中Host信息
            proxy_set_header Host $host;
             # 真实的客户端IP
            proxy_set_header X-Real-IP $remote_addr;
            # 代理路由信息,此处取IP有安全隐患
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
           proxy_pass http://mycluster; #反向代理地址 
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html://mycluster;
        }
    }

配置文件总体如下


#允许生成的进程数,一般设置为当前机器总Cpu核心数的1-2倍
worker_processes  2;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
        
#添加配置
upstream mycluster{
#集群有几台服务器就配置几台,weight表示权重,权重越大访问几率越大
#这里添加已经配置启动好的两台tomcat服务器
#down表示当前的server暂时不参与负载
#backup其他设备都宕机或者繁忙的时候,就使用backup标注的备用机器
server 192.168.100.209:8080 weight=1;
server 192.168.100.210:8080 weight=2;
ip_hash;
}

    server {
    #修改listen为8080
        listen       80;
        server_name  192.168.100.211;

       #localhost删除掉原有的root然后添加以下东西
        location / {
          root   html;
            #默认访问的首页
            index  index.html index.htm;
            proxy_redirect off;
             # 请求头中Host信息
            proxy_set_header Host $host;
             # 真实的客户端IP
            proxy_set_header X-Real-IP $remote_addr;
            # 代理路由信息,此处取IP有安全隐患
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
           proxy_pass http://mycluster; #反向代理地址
        }
        
        #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://mycluster;
        }
    }
}

部署运行

1、将项目解压至每个从服务器Tomcat安装目录下的\webapps\ROOT目录下

2、依次按顺序运行:主服务器Redis>每个从服务器Redis>每个从服务器Tomcat>主服务器Nginx

3、访问localhost,项目运行成功

上一篇:CentOS8安装Tomcat9,启动失败


下一篇:Windows如何安装tomcat服务