在CentOS 7系统中部署Redis Cluster

在CentOS 7系统中部署Redis Cluster

使用Docker部署

准备

  1. 安装Docker
  2. 下载Redis镜像:docker pull redis
  3. 下载Ruby镜像:docker pull ruby

创建

  1. 新建文件夹:mkdir first-redis-cluster
  2. 自定义集群中节点通信网络:docker network create redis-net
  3. 编写脚本create.sh创建集群(本例中使用从7000到7006的7个端口号,最小Redis Cluster集群应包含6个节点,3主3从,实现高可用):
#!/bin/bash
for port in `seq 7000 7006`; do
  mkdir -p ./${port}/conf && PORT=${port} envsubst < ./first-redis-cluster.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done
逐个修改各端口的 redis.conf 配置文件,主要涉及下列条目(以7000为例):
port 7000
pidfile /var/run/redis_7000.pid
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
requirepass your_redis_password
masterauth master-password
注意:还需隐藏“NETWORK”下“bind”行内容(否则从本机或外部连接node时会出现“Connection refused/reset by peer”报错)。
  1. 编写脚本start.sh启动各redis container:
#!/bin/bash
for port in `seq 7000 7006`; do
  docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /first-redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /first-redis-cluster/${port}/data:/data  --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
done
  1. 运行脚本(需先行修改各脚本文件操作权限:chmod -R 777 filename.sh
./create.sh
./start.sh
  1. 查看各redis container运行情况:docker ps | grep redis
  2. 进入容器:docker exec -it container_id sh
  3. 创建集群:
  • <方法一>
	redis-cli  --cluster create 120.0.0.1:7000 120.0.0.1:7001 120.0.0.1:7002 120.0.0.1:7003 120.0.0.1:7004 120.0.0.1:7005 120.0.0.1:7006 --cluster-replicas 1
  • <方法二>
    • 进入redis:redis-cli -h 120.0.0.1 -p 7000
    120.0.0.1:7000> AUTH your_redis_password
    OK
    
    • 集群中节点握手,创建集群:
    120.0.0.1:7000> CLUSTER MEET 120.0.0.1 7001
    OK
    120.0.0.1:7000> CLUSTER MEET 120.0.0.1 7002
    OK
    120.0.0.1:7000> CLUSTER MEET 120.0.0.1 7003
    OK
    120.0.0.1:7000> CLUSTER MEET 120.0.0.1 7004
    OK
    120.0.0.1:7000> CLUSTER MEET 120.0.0.1 7005
    OK
    120.0.0.1:7000> CLUSTER MEET 120.0.0.1 7006
    OK
    120.0.0.1:7000> CLUSTER INFO 
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:7
    cluster_size:3
    cluster_current_epoch:6
    cluster_my_epoch:6
    cluster_stats_messages_ping_sent:164187
    cluster_stats_messages_pong_sent:165404
    cluster_stats_messages_sent:329591
    cluster_stats_messages_ping_received:165403
    cluster_stats_messages_pong_received:164173
    cluster_stats_messages_meet_received:1
    cluster_stats_messages_fail_received:1
    cluster_stats_messages_received:329578
    
  1. 编写脚本addSlots.sh为master nodes分配slots:
#!/bin/bash
# node1
n=0
for ((i=n;i<=5461;i++))
do
   redis-cli -h 120.0.0.1 -p 7000 -a your_redis_password CLUSTER ADDSLOTS $i
done

# node2
n=5461
for ((i=n;i<=10922;i++))
do
   redis-cli -h 120.0.0.1 -p 7001 -a your_redis_password CLUSTER ADDSLOTS $i
done

# node3
n=10923
for ((i=n;i<=16383;i++))
do
   redis-cli -h 120.0.0.1 -p 7002 -a your_redis_password CLUSTER ADDSLOTS $i
done

  1. 编写脚本addSlaves.sh为master nodes分配slaves:
#!/bin/bash
# node1 
redis-cli -h 10.200.207.121 -p 7003 -a your_redis_password CLUSTER REPLICATE node_id_node1
redis-cli -h 10.200.207.121 -p 7006 -a your_redis_password CLUSTER REPLICATE node_id_node1

# node2 
redis-cli -h 10.200.207.121 -p 7004 -a your_redis_password CLUSTER REPLICATE node_id_node2

# node3 
redis-cli -h 10.200.207.121 -p 7005 -a your_redis_password CLUSTER REPLICATE node_id_node3
  1. 运行脚本,完成集群搭建(需先行修改各脚本文件操作权限:chmod -R 777 filename.sh
./addSlots.sh
./addSlaves.sh
查看集群中各节点:
120.0.0.1:7000> CLUSTER NODES
node_id_node1 120.0.0.1:7000@17000 myself,master - 0 1613723470603 1 connected 0-5460
node_id_node2 120.0.0.1:7001@17001 master - 0 1613723469600 3 connected 10923-16383
node_id_node3 120.0.0.1:7002@17002 master - 0 1613723469600 6 connected 5461-10922
node_id_node4 120.0.0.1:7003@17003 slave node_id_node1 0 1613723470502 1 connected
node_id_node5 120.0.0.1:7004@17004 slave node_id_node2 0 1613723471104 3 connected
node_id_node6 120.0.0.1:7005@17005 slave node_id_node3 0 1613723469000 6 connected
node_id_node7 120.0.0.1:7006@17006 slave node_id_node1 0 1613723469601 1 connected

手动部署

配置前请确保已在当前环境下正确安装基本工具。

准备

  1. 创建各端口对应的文件夹(本例中使用从7000到7005的6个端口号)
mkdir 7000 7001 7002 7003 7004 7005 
  1. 修改各端口的 redis.conf 配置文件,主要涉及下列条目:
port 7000
pidfile /var/run/redis_7000.pid
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
requirepass your_redis_password
masterauth master-password
注意:还需隐藏“NETWORK”下“bind”行内容(否则从本机或外部连接node时会出现“Connection refused/reset by peer”报错)。
  1. 拷贝(“cp /root/redis-5.0.8/utils/redis_init_script /etc/init.d/redis_7000”),并修改各节点运行文件“vi /etc/init.d/redis_7000”:
REDISPORT=7000
EXEC=/root/redis-5.0.8/src/redis-server
CLIEXEC=/root/redis-5.0.8/src/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/redis/${REDISPORT}/redis.conf" 
  1. 逐个启动各节点
sudo /etc/init.d/redis_7000 start 

创建

查看各节点运行情况

ps -ef | grep redis

各节点连接测试

连接:
/root/redis-5.0.8/src/redis-cli -h 120.0.0.1 -p 7000
测试:
120.0.0.1:7000> AUTH your_redis_password
OK
120.0.0.1:7000> ping
pong
120.0.0.1:7000> keys *
(empty array)

创建集群

/root/redis-5.0.8/src/redis-cli --cluster create 120.0.0.1:7000 120.0.0.1:7001 120.0.0.1:7002 120.0.0.1:7003 120.0.0.1:7004 120.0.0.1:7005 --cluster-replicas 1

查看集群信息

/root/redis-5.0.8/src/redis-cli -h 120.0.0.1 -p 7000 CLUSTER INFO

查看集群各节点信息

/root/redis-5.0.8/src/redis-cli -h 120.0.0.1 -p 7000 CLUSTER NODES
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值