使用Docker Compose搭建高可用Redis集群( 四 )

root@fba6d91e10f6:/usr/local/bin# ./redis-cli -h 127.0.0.1 -p 36381 INFO Sentinel# Sentinelsentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0sentinel_simulate_failure_flags:0master0:name=mymaster,status=ok,address=192.168.0.195:26383,slaves=3,sentinels=3

  • 进入到192.168.0.195的Redis容器,info Replication命令查看节点信息,我们可以看到此Redis节点已变为主服务 , 有一个从服务slave0:ip=192.168.0.210,port=26382
./redis-cli-h 127.0.0.1 -p 26383 -a "密码" info ReplicationWarning: Using a password with '-a' or '-u' option on the command line interface may not be safe.# Replicationrole:masterconnected_slaves:1slave0:ip=192.168.0.210,port=26382,state=online,offset=894509,lag=0master_failover_state:no-failovermaster_replid:e9ebebdff0a5f7b7622c6c5fbfed7b1e44d84ae2master_replid2:9ee56f68d25b71158544f6cfafc677822c401ec3master_repl_offset:894509second_repl_offset:884279repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:846repl_backlog_histlen:893664三、配置并测试Redis集群模式(Redis Cluster)  Redis哨兵模式其实质还是主从复制,只不过加了哨兵进行自动主备切换 , Redis集群模式(Redis Cluster)才是真正意义上的集群部署,它可以将数据进行分布式分片存储,但是其只能存储到db0 。
1. 环境准备  我们仍然使用上面的Linux服务器环境进行安装redis集群:在192.168.0.210上安装redisCluster1、redisCluster2、redisCluster3三台Reids服务;在在192.168.0.195上安装redisCluster4、redisCluster5、redisCluster6三台Reids服务 。
2. 准备Redis文件存放目录
  • 准备Redis存储目录,在两台主从服务器上分别执行一下命令
    在192.168.0.210服务器上执行Redis集群所需目录及权限命令
mkdir -p /opt/container/redis/cluster1/data /opt/container/redis/cluster1/conf /opt/container/redis/cluster1/logs /opt/container/redis/cluster2/data /opt/container/redis/cluster2/conf /opt/container/redis/cluster2/logs /opt/container/redis/cluster3/data /opt/container/redis/cluster3/conf /opt/container/redis/cluster3/logschmod -R 777 /opt/container/redis/cluster1/data /opt/container/redis/cluster1/conf /opt/container/redis/cluster1/logs /opt/container/redis/cluster2/data /opt/container/redis/cluster2/conf /opt/container/redis/cluster2/logs /opt/container/redis/cluster3/data /opt/container/redis/cluster3/conf /opt/container/redis/cluster3/logs在192.168.0.195服务器上执行Redis集群所需目录及权限命令
mkdir -p /opt/container/redis/cluster4/data /opt/container/redis/cluster4/conf /opt/container/redis/cluster4/logs /opt/container/redis/cluster5/data /opt/container/redis/cluster5/conf /opt/container/redis/cluster5/logs/opt/container/redis/cluster6/data /opt/container/redis/cluster6/conf /opt/container/redis/cluster6/logs chmod -R 777 /opt/container/redis/cluster4/data /opt/container/redis/cluster4/conf /opt/container/redis/cluster4/logs /opt/container/redis/cluster5/data /opt/container/redis/cluster5/conf /opt/container/redis/cluster5/logs /opt/container/redis/cluster6/data /opt/container/redis/cluster6/conf /opt/container/redis/cluster6/logs
  • 192.168.0.210 /192.168.0.195Redis配置文件、端口(12381、12382、12383、12384、12385、12386)、密码,并将配置文件redis.conf上传至对应目录,只需要端口不同
port 12381cluster-enabled yes #启动集群模式cluster-config-file nodes-1.confcluster-node-timeout 5000cluster-announce-ip 192.168.0.210cluster-announce-port 12381cluster-announce-bus-port 22381bind 0.0.0.0protected-mode noappendonly yes#如果要设置密码需要增加如下配置: #(设置redis访问密码)requirepass 密码 #(设置集群节点间访问密码,跟上面一致)masterauth 密码3. Redis服务器docker-compose.yml文件
  • 192.168.0.210服务器上部署两个Redis服务的docker-compose-redis-cluster.yml文件
version: '3'services:##redis节点1配置redisCluster1:image: redis:latestrestart: always.NETwork_mode: "host"container_name: redis-cluster1command: redis-server /usr/local/etc/redis/redis.confvolumes:##数据目录 , 要确保先创建好- /opt/container/redis/cluster1/data:/data- /opt/container/redis/cluster1/conf/redis.conf:/usr/local/etc/redis/redis.conf- /opt/container/redis/cluster1/logs:/logs- "/etc/localtime:/etc/localtime"- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"##redis节点2配置redisCluster2:image: redis:latestrestart: alwaysnetwork_mode: "host"container_name: redis-cluster2command: redis-server /usr/local/etc/redis/redis.confvolumes:##数据目录 , 要确保先创建好- /opt/container/redis/cluster2/data:/data- /opt/container/redis/cluster2/conf/redis.conf:/usr/local/etc/redis/redis.conf- /opt/container/redis/cluster2/logs:/logs- "/etc/localtime:/etc/localtime"- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"##redis节点3配置redisCluster3:image: redis:latestrestart: alwaysnetwork_mode: "host"container_name: redis-cluster3command: redis-server /usr/local/etc/redis/redis.confvolumes:##数据目录,要确保先创建好- /opt/container/redis/cluster3/data:/data- /opt/container/redis/cluster3/conf/redis.conf:/usr/local/etc/redis/redis.conf- /opt/container/redis/cluster3/logs:/logs- "/etc/localtime:/etc/localtime"- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"


推荐阅读