Centos 使用docker 搭建redis集群

三步走:

第一步:安装依赖包下载

第二步:启动多个容器

第三步:创建集群

 

详细步骤:

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,则未使用集群方式连接,只能读不能保存)

 

你可能感兴趣的:(redis)