创建redis的docker网端
这里设置为172.11.0.0/16
docker network create --driver bridge --subnet 127.11.0.0/16 --gateway 172.11.0.1 redis-net
创建redis的配置文件
先创建shell脚本来生成redis配置文件
vim redis-node-config.sh
输入以下内容
#!/bin/bash
# 配置文件存放路径
BASE_PATH=/test/redis
# 创建个数
REDIS_COUNT=6
# ip前缀
REDIS_IP=172.11.0.1
for port in $(seq 1 $REDIS_COUNT);
do
mkdir -p $BASE_PATH/node-$port/conf
mkdir -p $BASE_PATH/node-$port/data
touch $BASE_PATH/node-$port/conf/redis.conf
cat <<EOF > $BASE_PATH/node-$port/conf/redis.conf
port 6379
# 生产环境中为了安全性请绑定当前机器的ip
bind 0.0.0.0
# 启动集群模式
cluster-enabled yes
cluster-config-file nodes.conf
# redis节点宕机被发现的时间
cluster-node-timeout 5000
cluster-announce-ip $REDIS_IP$port
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
赋予脚本可执行权限
chmod +x redis-node-config.sh
运行脚本创建配置文件
./redis-node-config.sh
查看脚本是否成功生成文件
脚本启动redis容器
创建启动脚本
vim redis-run.sh
输入以下内容
#!/bin/bash
# 配置文件存放路径
BASE_PATH=/test/redis
# 创建个数
REDIS_COUNT=6
# ip前缀
REDIS_IP=172.11.0.1
for port in $(seq 1 $REDIS_COUNT);
do
docker run -d -p 637$port:6379 -p 1667$port:16379 \
--name redis-$port \
-v $BASE_PATH/node-$port/data:/data \
-v $BASE_PATH/node-$port/conf/redis.conf:/etc/redis/redis.conf \
--net redis-net \
--ip $REDIS_IP$port \
redis redis-server /etc/redis/redis.conf
done
赋予脚本可执行权限
chmod +x redis-run.sh
运行脚本启动redis容器
./redis-run.sh
开始搭建redis集群
# 进入其中一个容器
docker exec -it redis-1 /bin/bash
# 说明:--cluster :使用cluster的方式搭建集群 --cluster-replicas 1 :一个主机有一个从机
redis-cli --cluster create 172.11.0.11:6379 172.11.0.12:6379 172.11.0.13:6379 172.11.0.14:6379 172.11.0.15:6379 172.11.0.16:6379 --cluster-replicas 1
执行过程中需要输入一次yes
测试redis集群
# 进入redis-1容器
docker exec -it redis-1 /bin/bash
# -c:以集群方式启动
redis-cli -c
# 设置一个键值对
set name berbai01
这里显示是172.11.0.12上的redis处理了set
# 查看集群节点
cluster nodes
三主三从redis集群搭建成功,圈出来的为从机。
以上内容如有不对,请大家评论指正。