06. Redis 环境搭建-分片集群Cluster

20 篇文章 1 订阅

Redis 支持分片集群模式, 会将数据散落在不同节点之上, 且每个数据节点都有相应的副本集. 在Redis 3.x 时创建Redis 分片集群还比较麻烦, 需要借助于redis 源码中的ruby 脚本来创建,依赖ruby 环境。 而从Redis 5.x开始, , 创建Redis 分片集群不再支持ruby脚本创建, 而是使用redis-cli 命令直接创建。这种创建方式更为方便.

1. 集群配置文件模板

笔者将redis 集群配置存放在/usr/local/etc/redis 目录下

  • 从redis源码目录下复制redis.conf 配置文件到/usr/local/etc/redis 目录下
  • 创建集群配置模板文件: /usr/local/etc/redis/template-cluster.conf
  • 新增节点时,只需要替换文件中的6379 即可.
# 引入原配置
include /usr/local/etc/redis/redis.conf

######################################## 自定义配置 ########################################

# 修改绑定ip
bind 127.0.0.1

# 设置关闭保护模式
protected-mode no

# 设置端口号为6379
port 6379

# 设置后台启动为yes
daemonize yes

# 设置pid文件
pidfile /logs/redis/redis.pid.6379

# 设置日志文件
logfile /logs/redis/redis.log.6379

# 设置RDB dum文件名
dbfilename dump.rdb.6379

# 设置dump文件存放目录
dir /data/redis

# 设置主节点密码
masterauth 123456

# 设置从节点只读
replica-read-only yes

# 设置当前节点访问密码为
requirepass 123456

# 设置客户端最多连接数
maxclients 1000

# 设置最大内存
maxmemory 2GB

# 设置达到最大内存后策略,报错
maxmemory-policy noeviction

# 启动AOF持久化模式
appendonly yes

# 设置AOF文件名
appendfilename "appendonly.aof.6379"

# 设置AOF写入磁盘策略, 每秒写入一次
appendfsync everysec

# 开启集群
cluster-enabled yes

# 集群节点连接超时时间
cluster-node-timeout 15000  

# 集群节点配置信息文件, 位于redis 数据文件存放目录,即$dir 定义的目录中
cluster-config-file nodes.conf.6379

2. 创建集群配置

对于Redis 分片集群, 笔者认为, 集群节点至少应该有9个。 三个主节点, 6个从节点. 这样集群才能集高可用和分片于一身. 笔者创建一个9个节点的集群, 端口号为:7481~7489

2.1 复制9个节点配置

配置文件均存放在/usr/local/etc/redis目录.

cp template-cluster.conf redis.conf.7481
cp template-cluster.conf redis.conf.7482
cp template-cluster.conf redis.conf.7483
cp template-cluster.conf redis.conf.7484
cp template-cluster.conf redis.conf.7485
cp template-cluster.conf redis.conf.7486
cp template-cluster.conf redis.conf.7487
cp template-cluster.conf redis.conf.7488
cp template-cluster.conf redis.conf.7489

2.2 替换端口号

依次替换每个节点配置的端口号,日志文件,dump文件等配置.

sed -i "s/6379/7481/g" redis.conf.7481
sed -i "s/6379/7482/g" redis.conf.7482
sed -i "s/6379/7483/g" redis.conf.7483
sed -i "s/6379/7484/g" redis.conf.7484
sed -i "s/6379/7485/g" redis.conf.7485
sed -i "s/6379/7486/g" redis.conf.7486
sed -i "s/6379/7487/g" redis.conf.7487
sed -i "s/6379/7488/g" redis.conf.7488
sed -i "s/6379/7489/g" redis.conf.7489

3. 启动redis 集群

3.1 启动redis

依次启动9台服务器!

redis-server redis.conf.7481
redis-server redis.conf.7482
redis-server redis.conf.7483
redis-server redis.conf.7484
redis-server redis.conf.7485
redis-server redis.conf.7486
redis-server redis.conf.7487
redis-server redis.conf.7488
redis-server redis.conf.7489

3.2 创建集群关系

使用redis-cli --cluster 命令建立集群关系, 需要注意的是,每个redis 都必须是空的, 即是新建的节点, 否则将无法创建。

$ redis-cli -a 123456 --cluster create \
> 127.0.0.1:7481 \
> 127.0.0.1:7482 \
> 127.0.0.1:7483 \
> 127.0.0.1:7484 \
> 127.0.0.1:7485 \
> 127.0.0.1:7486 \
> 127.0.0.1:7487 \
> 127.0.0.1:7488 \
> 127.0.0.1:7489 \
> --cluster-replicas 2


Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 9 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:7485 to 127.0.0.1:7481
Adding replica 127.0.0.1:7486 to 127.0.0.1:7481
Adding replica 127.0.0.1:7487 to 127.0.0.1:7482
Adding replica 127.0.0.1:7488 to 127.0.0.1:7482
Adding replica 127.0.0.1:7489 to 127.0.0.1:7483
Adding replica 127.0.0.1:7484 to 127.0.0.1:7483
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 9baa3a6f75fe188460d337cfa8d6df862412e6e4 127.0.0.1:7481
   slots:[0-5460] (5461 slots) master
M: 829f7c60a21a5033ce88f0c7e54b17083ca6a691 127.0.0.1:7482
   slots:[5461-10922] (5462 slots) master
M: 97324a77a0ebfa3ac237abfd2593347b93aad719 127.0.0.1:7483
   slots:[10923-16383] (5461 slots) master
S: 1362c9a5988eba9a227595670b3e98f70767935a 127.0.0.1:7484
   replicates 829f7c60a21a5033ce88f0c7e54b17083ca6a691
S: 7086538d6d4c11a5a52580082c4fd963814365cd 127.0.0.1:7485
   replicates 9baa3a6f75fe188460d337cfa8d6df862412e6e4
S: 3a5f4c13439bc20586238ef615e27a91dc47b251 127.0.0.1:7486
   replicates 9baa3a6f75fe188460d337cfa8d6df862412e6e4
S: c36937c4281e8f891e88b02102fe2f59c15d4769 127.0.0.1:7487
   replicates 97324a77a0ebfa3ac237abfd2593347b93aad719
S: 3865b037f0026306de024629a4b7298e9c80d4c9 127.0.0.1:7488
   replicates 97324a77a0ebfa3ac237abfd2593347b93aad719
S: 869576474847e228be3d9d5377b01dd3040b1cae 127.0.0.1:7489
   replicates 829f7c60a21a5033ce88f0c7e54b17083ca6a691
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
....
>>> Performing Cluster Check (using node 127.0.0.1:7481)
M: 9baa3a6f75fe188460d337cfa8d6df862412e6e4 127.0.0.1:7481
   slots:[0-5460] (5461 slots) master
   2 additional replica(s)
S: 7086538d6d4c11a5a52580082c4fd963814365cd 127.0.0.1:7485
   slots: (0 slots) slave
   replicates 9baa3a6f75fe188460d337cfa8d6df862412e6e4
S: c36937c4281e8f891e88b02102fe2f59c15d4769 127.0.0.1:7487
   slots: (0 slots) slave
   replicates 97324a77a0ebfa3ac237abfd2593347b93aad719
S: 3a5f4c13439bc20586238ef615e27a91dc47b251 127.0.0.1:7486
   slots: (0 slots) slave
   replicates 9baa3a6f75fe188460d337cfa8d6df862412e6e4
S: 3865b037f0026306de024629a4b7298e9c80d4c9 127.0.0.1:7488
   slots: (0 slots) slave
   replicates 97324a77a0ebfa3ac237abfd2593347b93aad719
M: 97324a77a0ebfa3ac237abfd2593347b93aad719 127.0.0.1:7483
   slots:[10923-16383] (5461 slots) master
   2 additional replica(s)
S: 869576474847e228be3d9d5377b01dd3040b1cae 127.0.0.1:7489
   slots: (0 slots) slave
   replicates 829f7c60a21a5033ce88f0c7e54b17083ca6a691
S: 1362c9a5988eba9a227595670b3e98f70767935a 127.0.0.1:7484
   slots: (0 slots) slave
   replicates 829f7c60a21a5033ce88f0c7e54b17083ca6a691
M: 829f7c60a21a5033ce88f0c7e54b17083ca6a691 127.0.0.1:7482
   slots:[5461-10922] (5462 slots) master
   2 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

3.3 查看集群状态

通过cluster nodes 命令, 可以看出redis各节点主从关系.

$ redis-cli -a 123456 -p 7481 cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
1c9ee4a2f7e0191983f67c8849e61f8cd5c91005 127.0.0.1:7482@17482 master - 0 1557385770000 2 connected 5461-10922
06993924bd468b6eddb20be332b762a956b6631b 127.0.0.1:7489@17489 slave 1f5f8ba346034004cdd52ef0f267f024b1be6ee3 0 1557385771602 9 connected
7229f95a77bb60065a78e3dc422c056e265b05b3 127.0.0.1:7485@17485 slave 57fb7a0de46ef6340ece8f6a67829c49aeb91c96 0 1557385769000 5 connected
e25d2f1a019a40282e3c9146a00e44f4aa077afa 127.0.0.1:7486@17486 slave 1c9ee4a2f7e0191983f67c8849e61f8cd5c91005 0 1557385770599 6 connected
1f5f8ba346034004cdd52ef0f267f024b1be6ee3 127.0.0.1:7483@17483 master - 0 1557385768000 3 connected 10923-16383
7464b7aafc58e9235fc2a5c40f999018bb8b5509 127.0.0.1:7484@17484 slave 57fb7a0de46ef6340ece8f6a67829c49aeb91c96 0 1557385768000 4 connected
fe1a76b8052de772ed3aa9472726507ee48a5f1d 127.0.0.1:7488@17488 slave 1c9ee4a2f7e0191983f67c8849e61f8cd5c91005 0 1557385769000 8 connected
57fb7a0de46ef6340ece8f6a67829c49aeb91c96 127.0.0.1:7481@17481 myself,master - 0 1557385769000 1 connected 0-5460
e72fb434274ce30e0da21130e9279c5a700419b6 127.0.0.1:7487@17487 slave 1f5f8ba346034004cdd52ef0f267f024b1be6ee3 0 1557385769596 7 connected
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值