Redis集群服务器的实现(图文步骤)

 更新时间:2023年09月07日 10:19:28   作者:师范大学通信大怨总  
本文介绍了Redis集群服务器的优势,为读者提供了全面的Redis集群服务器知识和使用技巧,具有一定的参考价值,感兴趣的可以了解一下

集群简介

试想有一家餐厅,如果顾客人数较少,那么餐厅只需要一个服务员即可,如图1。但是,当顾客人数非常多时,一个服务员是绝对不够的,如图2。此时,餐厅需要雇用更多的服务员来解决大量访问(顾客就餐)的问题。如图3。

以上的情景就是“集群”的产生原因及解决方案。将顾客比作客户端,服务员比作服务器端,当少量客户端访问服务器端时,一台服务器完全足够;但如果有大量的客户端来访问服务器端,就需要在服务器端搭建多台服务器,以缓解大量访问带来的压力。服务器端搭建的多台服务器,就称为“集群服务器”。

集群特点

失败迁移

餐厅里,如果只有一个服务员,那么一旦服务员出现异常情况(如生病、事假等),顾客的所有就餐请求都将无法满足。同样地,如果只有一台服务器,那么一旦服务器出现异常(如宕机、物理损坏等),所有的客户端请求也将无法得到响应。为了避免上述风险,就可以使用多台服务器组成“集群服务器”,即使某一台服务器发生了异常,集群服务器也依然能够正常地处理客户端请求。例如,当客户端访问服务器C时,即使服务器C发生了异常,集群服务器也可以通过服务器A或服务器B对客户端做出响应。这种容错机制,就是集群服务器的第一个特点——失败迁移。

负载均衡

如果在一台服务器中部署了4个功能,那么无论客户端请求哪一个功能,都需要这台服务器来处理,如图4。而如果采用的是集群服务器,就可以只在某一台服务器上部署部分功能(例如只部署3个功能),多台服务器共同处理客户端请求。如图5。此集群服务器中,4个功能均被部署了三次,因此能够处理的请求次数也将提高三倍。换句话说,此集群服务器可以将一台服务器的负载量,分配到四台服务器上处理,即负载均衡。此外,集群服务器可以分为“水平集群”和“垂直集群”。水平集群是指在不同的计算机上各自安装一台服务器;垂直集群是指在同一台计算机上安装多个服务器。

使用Apache + Tomcat搭建集群服务器

Apache是web服务器,解析速度非常快并且稳定性强,但只能解析静态网页,无法处理JSP等动态网页。而Tomcat是运行在Apache之上的应用服务器,可以解析静态网页及动态网页,但解析速度比Apache稍慢。因此,可以采用Apache + Tomcat 搭建服务器,实现“动静分离”,即用Apache处理静态网页,用Tomcat处理动态网页。此外,Apache可以对多个Tomcat服务器进行调度,因此可以在Apache上搭建多个Tomcat服务器,从而实现Tomcat集群。(具体步骤请参阅相关资料)

使用Nginx + Tomcat搭建集群服务器

Nginx 是一款轻量级的反向代理服务器,可以方便地存储服务端的静态资源,实现服务端资源的动静分离,以及快速搭建集群服务器。Nginx 支持“万”级别的高并发连接,用于反向代理时,非常稳定,并且能够在不间断服务的情况下进行维护(即热部署)。此外,Nginx是一款开源软件,使用成本低廉。

(a)在服务器中,HTML、CSS、JS、图片、音频、视频等资源属于静态资源;由java编写的后台代码(servlet等)属于动态资源。通常,Tomcat 等服务器擅长处理动态资源,而对静态资源的处理效率较差。因此,如果能将服务器中的静态资源和动态资源相分离,只把动态请求交给Tomcat等服务器处理,而把静态资源交给Nginx处理,就能大幅提高服务端的整体性能。Nginx可以根据客户端请求的URL后缀判断请求的是静态资源还是动态资源。(Nginx+Tomcat实现动静分离具体步骤请参阅相关资料)

(b)垂直集群案例(在IP为192.168.43.169的电脑上安装两个Tomcat服务器)

第一步,配置Tomcat

官网下载Tomcat后解压,重命名,如C:\Users\johny\Desktop\apache-tomcat-9.1080

再复制一份,重命名C:\Users\johny\Desktop\apache-tomcat-9.2080

修改两个Tomcat的配置文件

把项目ssm.war分别部署到两个Tomcat服务器,直接复制粘贴到webapps下,即可。

启动两个Tomcat服务器,双击startup.bat文件,即可。

注:由于Tomcat依托于jdk,想通过双击Tomcat服务器下\bin\startup.bat启动Tomcat服务器前,须先配置环境变量JAVA_HOME

第二步,配置数据库

由于ssm项目中是通过远程连接访问数据库,所以需要在mysql8.x中创建新用户。

第三步,配置Nginx

官网下载Nginx后解压,如 C:\Users\johny\Desktop\nginx-1.16.1\

修改Nginx的配置文件

把前端项目文件夹dist复制粘贴到d盘根目录下,即 d:/dist

启动Nginx服务器,双击nginx.exe文件,即可。

第四步,测试

在浏览器请求 http://192.168.43.169:8081/,并不断进行操作,Nginx服务器默认会在两台Tomcat之间轮询访问

第五步,配置“IP_Hash”策略,避免Session混乱

IP_Hash策略的原理是:Nginx会计算每个用户请求时所在IP地址的Hash值,因为同一个用户的IP值相同,因此对同一个用户计算的Hash值也必然相同。之后,Nginx再建立Hash值和Tomcat节点的一一对应关系,这样就保证每个用户只会访问集群中的同一个服务器节点,就不会造成Session混乱的情况。

修改Nginx配置ip_hash

这样,同一用户始终访问的就是集群中的同一个Tomcat节点,因此,每次访问时获取的Session对象就是相同的了。

问题:

Nginx同网段ip_hash负载均衡无效果!!!

Nginx ip_hash在局域网中所有机器访问的都是同一台机器没有Hash。造成原因如被Hash的ip为192.168.43.169;实则上Nginx进行Hash算法时取的是192.168.43。所以在局域网同网段所有机器得到的结果服务器都是同一台。

解决:

修改Nginx目录源码:nginx-1.16.1\src\http\modules\ngx_http_upstream_ip_hash_module.c

将源码修改为通过全IP进行hash,可参阅相关资料。

还可以开发独立的Session服务器,或者使用Session广播等方式让多个Tomcat共享同一份Session对象,有兴趣可自行研究。

(c)水平集群案例(在IP为192.168.43.169和IP为192.168.43.166的两台电脑上分别安装一个Tomcat服务器)

【IP为192.168.43.169的电脑】

第一步,配置Tomcat

官网下载Tomcat后解压,重命名,如C:\Users\johny\Desktop\apache-tomcat-9.1080

修改Tomcat的配置文件

把项目ssm.war分别部署到Tomcat服务器,直接复制粘贴到webapps下,即可。

启动Tomcat服务器,双击startup.bat文件,即可。

第二步,配置数据库

由于ssm项目中是通过远程连接访问数据库,所以需要在mysql8.x中创建新用户。

第三步,配置Nginx

官网下载Nginx后解压,如 C:\Users\johny\Desktop\nginx-1.16.1\

修改Nginx的配置文件

把前端项目文件夹dist复制粘贴到d盘根目录下,即 d:/dist

启动Nginx服务器,双击nginx.exe文件,即可。

【IP为192.168.43.166的电脑】

把192.168.43.169电脑上已配置并部署项目的C:\Users\johny\Desktop\apache-tomcat-9.1080

复制一份,双击startup.bat文件,启动Tomcat服务器,即可。

【测试】

浏览器请求 http://192.168.43.169:8081/,并不断进行操作,Nginx服务器会对两台电脑上的Tomcat进行轮询访问

到此这篇关于Redis集群服务器的实现(图文步骤)的文章就介绍到这了,更多相关Redis集群服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Redis不同数据类型的命令语句详解

    Redis不同数据类型的命令语句详解

    这篇文章主要介绍了Redis不同数据类型的命令语句,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • redis中数据类型命令整理

    redis中数据类型命令整理

    在本篇文章里小编给大家整理的是关于redis中5种数据类型基本命令介绍,需要的朋友们可以学习下。
    2020-03-03
  • 基于redis实现世界杯排行榜功能项目实战

    基于redis实现世界杯排行榜功能项目实战

    前段时间,做了一个世界杯竞猜积分排行榜。对世界杯64场球赛胜负平进行猜测,猜对+1分,错误+0分,一人一场只能猜一次。下面通过本文给大家分享基于redis实现世界杯排行榜功能项目实战,感兴趣的朋友一起看看吧
    2018-10-10
  • Redis设置开机自启动全过程

    Redis设置开机自启动全过程

    这篇文章主要介绍了Redis设置开机自启动全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-10-10
  • Redis中big keys发现与解决过程

    Redis中big keys发现与解决过程

    文章从bigkeys的定义、产生原因、危害、如何发现以及处理方法等方面详细介绍了Redis中bigkeys的问题,bigkeys会导致请求响应慢、网络卡顿、数据丢失等问题,需要通过异步删除、拆分key等方法进行处理
    2026-04-04
  • Redis出现中文乱码的问题及解决

    Redis出现中文乱码的问题及解决

    这篇文章主要介绍了Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 基于Redis实现基本抢红包算法详解

    基于Redis实现基本抢红包算法详解

    [key, value]的缓存数据库, Redis官方性能描述非常高, 所以面对高并发场景, 使用Redis来克服高并发压力是一个不错的手段, 本文主要基于Redis来实现基本的抢红包系统设计,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • Redis操作相关命令之查看、停止、启动命令

    Redis操作相关命令之查看、停止、启动命令

    这篇文章主要介绍了Redis操作相关命令之查看、停止、启动命令,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • redis分布式锁实现示例

    redis分布式锁实现示例

    本文主要介绍了redis分布式锁实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • 关于redis可视化工具读取数据乱码问题

    关于redis可视化工具读取数据乱码问题

    大家来聊一聊在日常操作redis时用的是什么工具,redis提供的一些命令你都了解了吗,今天通过本文给大家介绍redis可视化工具读取数据乱码问题,感兴趣的朋友跟随小编一起看看吧
    2021-07-07

最新评论