Clúster de RedisCluster
Visión general
RedisCluster es la solución de clúster oficial de Redis proporcionada después de la versión 3.0 de Redis. Puede evitar las complicadas operaciones de supervisión y elección maestras del mecanismo centinela, y también puede implementar fácilmente el procesamiento de fragmentación de datos, aprovechando las ventajas de rendimiento del host del clúster y proporcionando Solución Redis más eficiente, que tiene en cuenta el modelo de arquitectura descentralizada. Cada nodo está relacionado con otros nodos y solo necesita obtener la información de un nodo y la información de otros nodos.
El clúster de Redis distribuirá todos los datos guardados de manera uniforme a cada host maestro de acuerdo con la relación maestro-esclavo existente. Si un host maestro no puede proporcionar servicios debido a problemas, otros hosts maestros participarán en la
elección de un host maestro para continuar brindando servicios.
Pasos de implementación específicos
La arquitectura del clúster utiliza 9 servidores de base de datos de Redis, de los cuales tres hosts tienen tres procesos de Redis en cada uno. La información del anfitrión es la siguiente:
número de serie | Nombre de host | dirección IP | descripción |
---|---|---|---|
1 | nodo1 | 192.168.1.6 | Servicio principal de Redis x3 (6381, 6382, 6383) |
1 | nodo2 | 192.168.1.7 | Servicio principal de Redis x3 (6381, 6382, 6383) |
1 | nodo3 | 192.168.1.8 | Servicio principal de Redis x3 (6381, 6382, 6383) |
nodo1, nodo2, nodo3 host
apt-get install ruby ruby-dev rubygems #Ruby开发环境配置相关开发包的配置
mkdir -p /usr/data/redis/{
redis-6381,redis-6382,redis-6383}/{
logs,run,dbcache,config} #新建三套数据目录
#复制三套配置文件
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6381.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6382.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6383.conf
vim /usr/local/redis/conf/redis-6381.conf #打开配置文件
#配置信息
protect-mode no #关闭受保护模式
port 6381 #监听端口
pidfile /usr/data/redis/redis-6381/run/redis_6381.pid #pid保护目录
dir /usr/data/redis/redis-6381/dbcache
logfile "/usr/data/redis/redis-6381/logs/redis_6381.log"
#requirepass test #取消密码配置
cluster-enabled yes #配置开启cluster集群
cluster-config-file /usr/data/redis/redis-6381/config/nodes-6381.conf
cluster-node-timeout 15000 #定义连接的超时时间
vim /usr/local/redis/conf/redis-6382.conf #打开配置文件
#配置信息
protect-mode no #关闭受保护模式
port 6382 #监听端口
pidfile /usr/data/redis/redis-6382/run/redis_6382.pid #pid保护目录
dir /usr/data/redis/redis-6382/dbcache
logfile "/usr/data/redis/redis-6382/logs/redis_6382.log"
#requirepass test #取消密码配置
cluster-enabled yes #配置开启cluster集群
cluster-config-file /usr/data/redis/redis-6382/config/nodes-6382.conf
cluster-node-timeout 15000 #定义连接的超时时间
vim /usr/local/redis/conf/redis-6383.conf #打开配置文件
#配置信息
protect-mode no #关闭受保护模式
port 6383 #监听端口
pidfile /usr/data/redis/redis-6383/run/redis_6383.pid #pid保护目录
dir /usr/data/redis/redis-6383/dbcache
logfile "/usr/data/redis/redis-6383/logs/redis_6383.log"
#requirepass test #取消密码配置
cluster-enabled yes #配置开启cluster集群
cluster-config-file /usr/data/redis/redis-6383/config/nodes-6383.conf
cluster-node-timeout 15000 #定义连接的超时时间
#分别启动实例6381、6382、6383
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6381.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6382.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6383.conf
ps aux | grep redis #查看当前主机Redis的进程
gem install redis #使用Ruby管理控制Redis 安装Redis的相关依赖包
cp redis-6.2.1/src/redis-trib.rb /usr/local/redis/bin/ #复制集群配置程序
#Redis主机加入到集群配置中
#/usr/local/redis/bin/redis-trib.rb create -replicas 2 192.168.1.6:6381 192.168.1.6:6382 192.168.1.6:6383 192.168.1.7:6381 192.168.1.7:6382 192.168.1.7:6383 192.168.1.8:6381 192.168.1.8:6382 192.168.1.8:6383 #已经被移除了
/usr/local/redis/bin/redis-cli --cluster create 192.168.1.6:6381 192.168.1.6:6382 192.168.1.6:6383 192.168.1.7:6381 192.168.1.7:6382 192.168.1.7:6383 192.168.1.8:6381 192.168.1.8:6382 192.168.1.8:6383 --cluster-replicas 2 -a test #
/usr/local/redis/bin/redis-cli -h 192.168.1.6 -p 6381
CONFIG SET protected-mode yes #打开受保护模式
ONFIG SET requirepass test #设置认证密码
auth test #设置密码需要登陆
CONFIG SET masterauth test #整个集群需要一个统一的密码
CONFIG REWRITE #重写写入配置文件
SHUTDOWN #关闭当前Redis进程
#在所有的主机上重新启动redis进程
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6379.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6380.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6381.conf
vim /var/lib/gems/2.7.0/gems/redis-3.0.7/lib/redis/client.rb #由于通过配置命令实现了密码处理,所以此时需要手动修改Ruby配置文件,追加Redis的连接密码,才可以正常使用RedisCluster集群
#/usr/local/redis/bin/redis-trib.rb check 192.168.1.8:6382 #当前版本6.2.1不可用改用下面
redis-cli --cluster check 192.168.1.8:6382 -a test #检测集群状态
/usr/local/redis/bin/redis-cli -h 192.168.1.8 -p 6383 -a test -c #登陆集群中的任意Master,使用-c进行集群查询
set mldn helloworld #设置数据 客户端node3上设置数据
Ver datos en el nodo host1