redis创建文件夹_docker搭建redis集群

本文详细介绍了如何通过Docker来搭建Redis集群,包括拉取镜像、创建基础容器、建立自定义网络、生成配置文件、启动容器、构建集群、解决常见问题等步骤,最后进行集群测试以确保搭建成功。
摘要由CSDN通过智能技术生成
默认已经安装好docker环境

1、拉取redis镜像

docker pull redis

2、创建基础redis容器

在/usr/local/src目录下创建redis-cluster文件夹,并创建配置文件redis-cluster.conf

cd /usr/local/src && mkdir redis-cluster && cd ./redis-cluster && touch redis-cluster.conf

在redis-cluster.conf 添加以下内容

port ${PORT}
cluster-enabled yes
protected-mode no
cluster-config-file nodes.conf
cluster-node-timeout 5000
#对外ip
cluster-announce-ip [ip]
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes

ps:注意修改 [ip],[ip]为你服务器ip。

3、创建自定义network(redis-net),用于集群节点间通信

docker network create redis-net

4、在/usr/local/src/redis-cluster下生成conf和data目录,并生成配置信息

进入/usr/local/src/redis-cluster

cd /usr/local/src/redis-cluster

生成conf和data目录,并生成配置信息

for port in `seq 6000 6005`; do 
  mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done

ps:共生成6个文件夹,从6000到6005,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件。

5、通过redis镜像创建6个redis容器

创建启动脚本 start.sh

vim start.sh

将下列启动命令写入到脚本中

for port in `seq 6000 6005`; do 
  docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /usr/local/src/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/src/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

启动容器

sh start.sh

6、构建redis集群

查看容器id

docker ps

任意进入一个创建的Redis容器(CONTAINER ID为容器id)

docker exec -it CONTAINER ID  /bin/bash

执行

cd /usr/local/bin && redis-cli --cluster create ip:6000 ip:6001 ip:6002 ip:6003 ip:6004 ip:6005 --cluster-replicas 1

ps:这里的ip为你服务器的ip,记得修改。

如果出现waiting for the Cluster to join…,那么应该是你端口没有开放完全。

b85e74be62f3ce778cd784887b9ec711.png

正确操作应该是

7ccdec67c69ad34df0b57f0550dd6eac.png

ps:中途要输入 yes,确认要初始化。

7、查看redis集群节点信息

首先进入任意一个Redis容器内(CONTAINER ID为容器id)

docker exec -it CONTAINER ID /bin/bash

然后进入 redis-cli(ip为你服务器ip)

redis-cli -h ip -p 6000

查看节点消息

cluster nodes

查看集群信息

cluster info

8、测试reids集群

普通模式连接:由于 test 根据哈希槽计算,是分布在 6001服务上。所以这里会提示转到 6001。

76be6b047d87f54c27454001055ebcad.png

集群模式连接:以下例子显示操作正常(首先要退出当前redis-cli,然后再执行以下代码,ip为你服务器ip)。

redis-cli -c -h ip -p 6000 set test 1
redis-cli -c -h ip -p 6000 get test

36e9214ef0011d34a4f3874f60c4bccd.png

到这里,集群模式连接读写正常,集群搭建成功。

问题处理

问题1:创建集群时waiting for the Cluster to join…,

1、删除6000、6001、6002、6003、6004、6005 data下 appendonly.aof、 nodes.conf、

2、关闭系统防火墙

systemctl restart firewalld

3、重启docker

systemctl restart docker

问题2:启动container的时候出现iptables: No chain/target/match by that name

1、重启docker

systemctl restart docker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值