三步走:
第一步:安装依赖包下载
第二步:启动多个容器
第三步:创建集群
详细步骤:
1. 安装依赖包:
1. 安装docker:https://blog.csdn.net/u011936655/article/details/81062343
2. 下载reids镜像:docker pull redis
3. 下载ruby镜像:docker pull ruby
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
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
为了重复使用,这里使用脚本创建:
create_cluster.sh:创建对应的文件目录
cd /usr/local/src/redis-cluster && touch create_cluster.sh
create_cluster.sh内容如下:(7000-7005是我要创建的6个redis实例,自行修改)
#!/bin/bash
#在/home/redis-cluster下生成conf和data目标,并生成配置信息
for port in `seq 7000 7005`; do
mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done
start_cluster.sh: 启动多个容器
cd /usr/local/src/redis-cluster && touch start_cluster.sh
start_cluster.sh 内容如下:
#!/bin/bash
for port in `seq 7000 7005`; do
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /home/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
分别修改create_cluster.sh 和 start_cluster.sh权限
chmod 755 create_cluster.sh
chmod 755 start_cluster.sh
创建自定义network(redis-net)方便集群间通讯:docker network create redis-net
创建并启动容器:./create_cluster.sh && ./start_cluster.sh
3. 集群创建:
进入任意一个redis容器中,执行创建命令:
进入容器:docker exec -it redis-7000 /bin/bash
创建集群:
redis-cli --cluster create ip:7000 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005 --cluster-replicas 1
(如果创建失败报错无法连接,则需要开启防火墙:
firewall-cmd --zone=public --add-port=7000-7005/tcp --permanent firewall-cmd --zone=public --add-port=17000-17005/tcp --permanent firewall-cmd --reload
)
最终测试:
进入docker exec -it redis-7000 /bin/bash
连接redis:redis-cli -h xxxxx -p 7000 -c (注意如果不加-c,则未使用集群方式连接,只能读不能保存)