linux centos7下docker redis5集群搭建,redis集群设置密码

docker安装使用看这里:https://blog.csdn.net/u011477914/article/details/86591452

 

php连接redis集群 CodeIgniter(ci)框架redis5集群RedisClustert类使用,集群加密码调用:https://blog.csdn.net/u011477914/article/details/89418953

 

php redis集群 RedisCluster类:https://blog.csdn.net/u011477914/article/details/89465253

 

1、创建redis-cluster文件夹

mkdir /www
cd /www
mkdir redis-cluster 
cd redis-cluster

2、文件目录结构

# 项目文件
├── /www/redis-cluster/redis-cluster.tmpl    #   
├── /www/redis-cluster/redis.sh              #
├── /www/redis-cluster/stop.sh               #

3、redis-cluster.tmpl文件:配置如下几个参数,此文件的目的是生成每一个redis实例的redis.conf

#端口
port ${PORT}
#非保护模式
protected-mode no
#启用集群模式
cluster-enabled yes
cluster-config-file nodes.conf
#超时时间
cluster-node-timeout 5000
cluster-announce-ip 10.1.1.198
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
#后台运行
#daemonize yes 
pidfile  /var/run/redis_${PORT}.pid
#集群加密
masterauth a123456 
requirepass a123456 

4、redis.sh :edis集群shell脚本文件

#!/bin/bash

#在/www/redis-cluster下生成conf和data目标,并生成配置信息
for port in `seq 6000 6005`; 
do 
  mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done

#创建6个redis容器
for port in `seq 6000 6005`;
do
	docker run -d -it -p ${port}:${port} -p 1${port}:1${port} -v /www/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /www/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

#查找ip
for port in `seq 6000 6005`;
do
	echo  -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port}" ";
done

#换行
echo -e "\n"

#输入信息
read -p "请把输入要启动的docker容器名称,默认redis-6000:" DOCKER_NAME

#判断是否为空
if [ ! $DOCKER_NAME ]; 
	then DOCKER_NAME='redis-6000'; 
fi

#进入容器
docker exec -it redis-6000 /bin/bash

5、stop.sh:卸载redis集群

#!/bin/bash
docker stop redis-6000 redis-6001 redis-6002 redis-6003 redis-6004 redis-6005
docker rm redis-6000 redis-6001 redis-6002 redis-6003 redis-6004 redis-6005
rm -rf 6000 6001 6002 6003 6004 6005

6、设置权限:

chmod 755 redis.sh stop.sh

7、创建自定义network(redis-net)

docker network create redis-net

6、执行redis.sh脚本自动创建redis容器,然后自动进入redis-6000

./redis.sh

 linux centos7下docker redis5集群搭建,redis集群设置密码_第1张图片

7、执行集群,然后输入:yes,启动集群(-a a123456 是密码)。

#执行集群
redis-cli --cluster create 172.19.0.2:6000 172.19.0.3:6001 172.19.0.4:6002 172.19.0.5:6003 172.19.0.6:6004 172.19.0.7:6005 -a a123456 --cluster-replicas 1

linux centos7下docker redis5集群搭建,redis集群设置密码_第2张图片

8、进入redis

redis-cli -c -p 6000 -a a123456

9、问题处理

如果遇到: Waiting for the cluster to join 一直等待,可能问题是:

打开防火墙端口:

firewall-cmd --zone=public --add-port=6000-6005/tcp --permanent
firewall-cmd --zone=public --add-port=16000-16005/tcp --permanent
firewall-cmd --reload

如果还不行,需要去服务器提供商(阿里云,腾讯云等等)的控制面板那边手动打开相应的端口。

 

你可能感兴趣的:(redis,linux)