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
启动脚本1.png

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

cd Redis-x64-3.2.100(文件夹名字)
startup.bat
启动脚本2.png

运行

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

主服务器

主服务器运行成功.png

从服务器

从服务器运行成功1.png
从服务器运行成功2.png

配置从服务器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,项目运行成功

转载请附带本文链接地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339