为了体验Redis集群,并且为了便于部署所以直接使用docker部署了一个简单集群:
docker run -e "IP=0.0.0.0" -p 7000-7005:7000-7005 -d --name redis-cluster grokzen/redis-cluster:latest
redis-cli -c -p 7000
通过set 命令测试集群:
127.0.0.1:7000> set a 1
-> Redirected to slot [15495] located at 127.0.0.1:7002
https://github.com/Grokzen/docker-redis-cluster
为了体验Redis集群,并且为了便于部署所以直接使用docker部署了一个简单集群: docker run -e "IP=0.0.0.0" -p 7000-7005:7000-7005 -d --name redis-cluster grokzen/redis-cluster:latest 连接测试redis-cli -c -p 7000通过set 命令测试集群:127.0.0.1:7000> set a 1-> Redirected to slot [15495] locate
为了新手小伙伴发愁集群创建难,特意写了一个shell脚本。自己技术也很菜,但是我坚信也会有跟我一样菜的小伙伴。。。。哈哈哈
不多说直接上脚本
希望有大神更加优化一下,优化后的版本可以分享下。哇 等着你大神,一起交流技术。
#第一步,创建虚拟网卡,redis网络
[ ! "`docker network ls | grep redis | awk '{print $1}'`"] && docker network create redis --subnet 172.18.0.0/16 --gateway 172.18.0.1
#查看网卡信息
docker network ls | grep redis
Redis 集群 Docker 映像。 此图像用于测试环境。 请勿将其用于生产。
启动集群。 它将启动 6 个 Redis 服务器,监听7000~7005端口和一个主管以确保所有服务器都启动。 在所有服务器启动后,redis-trib 将创建一个 Redis 集群。
docker run -p 7000:7000 -p 7001:7001 -p 7002:7002 -p 7003:7003 -p 7004:7004 -p 7005:7005 tommy351/redis-cluster:3.2
您可以在/data上安装数据卷。
docker run -v /some/path/:/data tommy351/redis-cluster:3.2
如果您使用的是 Redis 4.0 及更高版本,则可以设置CLUSTER_ANNOUNCE
系统环境:ubuntu16.04LTS
本文是使用 6 个 docker 容器搭建单机集群测试,实际环境如果是多台,可对应修改容器数量、端口号和集群 ip 地址,每台机器都按下面步骤同样操作即可。
拉取redis官方镜像
docker pull redis:5.0
创建配置文件和数据目录
mkdir ~/redis_cluster
cd ~/redis_cluster
新建一个模板文件sudo vim redis_cluster.tmpl,填入如下内容:
# redis端口
port ${PORT}
# 关闭保护模式
protected-mode no
# 开启集群
ruby-1.8.7:sudo apt-get install ruby
rubygems:sudo apt-get install rubygems
sudo gem install redis
pip install redis-py-cluster
修改配置文件redis.conf
这里创建3个节点,所以复制3份redis.conf
分别命名为:redi
#创建运行容器
docker run -d -t -p 7000:7000 -p 7001:7001 -p 7002:7002 -p 7003:7003 -p 7004:7004 -p 7005:7005 grokzen/redis-cluster
#安装redis相关组件
yum install redis
#登录其中一个节点
redis-cli -c -p 7000
#测试增删改查正常
以下仅供参考,我在pypi网站上下载的rediscluster包使用python setup.py install安装不了,报错没有rediscluster包。在网上寻找也没寻找到怎么安装该模块,最后根据了一个方法尝试安装,却意外可以使用。
首先安装redis模块,要下载2.10.6版本及其以前的,
接着安装redis-py-cluster模块,由于该模块年代久远,所以上面的redis模块不能安装...
要在Docker中集成Redis Cluster集群,可以按照以下步骤操作:
1. 创建一个Docker Compose文件,定义Redis Cluster集群的服务和配置。例如:
version: '3'
services:
redis-1:
image: redis:latest
command: redis-server /redis-conf/redis-1.conf
ports:
- 6381:6381
volumes:
- ./conf/redis-1.conf:/redis-conf/redis-1.conf
- ./data/redis-1:/data
redis-2:
image: redis:latest
command: redis-server /redis-conf/redis-2.conf
ports:
- 6382:6382
volumes:
- ./conf/redis-2.conf:/redis-conf/redis-2.conf
- ./data/redis-2:/data
redis-3:
image: redis:latest
command: redis-server /redis-conf/redis-3.conf
ports:
- 6383:6383
volumes:
- ./conf/redis-3.conf:/redis-conf/redis-3.conf
- ./data/redis-3:/data
redis-4:
image: redis:latest
command: redis-server /redis-conf/redis-4.conf
ports:
- 6384:6384
volumes:
- ./conf/redis-4.conf:/redis-conf/redis-4.conf
- ./data/redis-4:/data
redis-5:
image: redis:latest
command: redis-server /redis-conf/redis-5.conf
ports:
- 6385:6385
volumes:
- ./conf/redis-5.conf:/redis-conf/redis-5.conf
- ./data/redis-5:/data
redis-6:
image: redis:latest
command: redis-server /redis-conf/redis-6.conf
ports:
- 6386:6386
volumes:
- ./conf/redis-6.conf:/redis-conf/redis-6.conf
- ./data/redis-6:/data
networks:
redis-cluster:
driver: bridge
2. 在同一目录下创建一个conf文件夹,用于存储每个Redis节点的配置文件。例如,创建一个redis-1.conf文件:
port 6381
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
3. 启动Redis Cluster集群服务:
docker-compose up -d
4. 将节点加入Redis Cluster集群。可以使用redis-cli命令行工具连接到每个节点,并使用CLUSTER MEET命令将节点加入集群。例如:
redis-cli -h 127.0.0.1 -p 6381
> CLUSTER MEET 127.0.0.1 6382
> CLUSTER MEET 127.0.0.1 6383
> CLUSTER MEET 127.0.0.1 6384
> CLUSTER MEET 127.0.0.1 6385
> CLUSTER MEET 127.0.0.1 6386
5. 创建一个Redis Cluster集群。可以使用redis-cli命令行工具连接到任何一个节点,并使用CLUSTER CREATE命令来创建集群。例如:
redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1
6. 现在,您已经成功地在Docker中集成了Redis Cluster集群。可以使用redis-cli命令行工具连接到任何一个节点,并开始使用集群。