八、在windows上搭建Redis集群
8.1 Redis集群
- 集群的概念
所谓集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。 - 使用redis集群的必要性
- 单个redis存在不稳定性,当redis服务宕机了,就没有可用的服务了;
- 单个redis的读写能力是有限的。
- 集群的说明
- redis集群中,每个redis称之为一个节点;
- redis集群中,有两种类型的节点:主节点(master)、从节点(slave);
- redis集群,是基于redis主从复制实现。
8.2 前期准备
Redis的集群使用Ruby脚本编写,所以系统需要有 Ruby 环境 !!
-
安装Ruby
双击选择安装路径后进行傻瓜式安装(一直next即可),操作非常简单!
-
安装Redis的Ruby驱动redis-xxxx.gem
- 下载好ruby的驱动包后解压,切换到解压目录,打开DOS命令窗口执行ruby setup.rb命令:
- 然后再切换到端口号为6379的解压目录下,打开DOS命令窗口,执行命令gem install redis:
- 下载好ruby的驱动包后解压,切换到解压目录,打开DOS命令窗口执行ruby setup.rb命令:
8.3 搭建过程
-
规划集群
我们规划有三分节点的集群,每个节点都有一主一从,需要六台redis服务器;
分别将端口号设为文件夹名用来区分不同的redis服务器。
-
修改集群的相关配置
要想成功搭建集群,就要修改相关的配置,这里我们以6379端口号的redis服务器为例,其余五个redis服务器与其配置类似!!-
修改本机的端口号
port 端口号
-
修改本机和主机的密码
#修改本机密码 requirepass 密码 #修改主机密码 masterauth 密码
-
开启cluster集群,如果cluster-enabled不为yes,那么在使用JedisCluster集群代码获取的时候会报错
cluster-enabled yes
-
为该节点配置信息cluster-config-file nodes-6379.conf,这里使用nodes-端口.conf命名的方法,服务器启动后会在目录生成该文件
cluster-config-file nodes-6379.conf
-
cluster-node-timeout调整为15000,那么在创建集群的时候,不会超时
cluster-node-timeout 15000
-
开启AOF持久化,相应的appendonly-6379.aof持久化记录文件,也以appendonly-端口号.aof格式命名
appendonly yes
-
-
启动集群并测试
依次启动每个节点redis服务器并执行集群构建脚本。
8.4 特别注意
- 上述我们已经知道三主三从的关系是集群结构随机分配的,无论是谁主谁从,在集群结构中,只要从其中一台Redis服务器set写入内容后,其他另外五台服务器都可以访问到,而并非只有其对应的主从结构的服务器才可以访问。
- 这样的话服务器在向客户端提供服务时,可以根据服务器访问峰值随机向客户端提供服务器响应,避免其中某一台服务器严重透支,使所有服务器响应负载均衡。
- 如果说其中一台从机挂掉了,例如上述从机6384突然宕机,不要慌,其他五台redis服务器会继续为客户端提供服务,基本不会有太大的影响,只是使其对应的主机6379暂时失去了主从结构;但是当从机6384再次恢复的时候,依然会找到主机6379再次连接主从结。还有一点很重要的是在主从结构断开的这段时间内,如果说客户端写入了数据,当从机6384重新连接上的时候,主机6379依然会把所有数据自动备份到6384服务器上,这就很强悍了。
- 如果说其中一台主机挂掉了,例如上述主机6379突然宕机,也不要慌,它的从机6384会直接代替它的位置升级为主机,继续和其他几台服务器一块为客户端提供服务;还有如果说这时候6384原来的主机6379又恢复正常了,放心吧,6384主机大哥的位置依然还是大哥,可以理直气壮的跟6379说谁让你走的,你就算回来只能是小弟了,跟着就做了6384的从机,数据依然会同步到6379服务器上。