参考
单机搭建参考地址:https://hub.docker.com/_/redis/
集群搭建参考地址:https://blog.csdn.net/adolph586/article/details/85340764
redis配置文件下载地址
https://redis.io/topics/config
单机搭建
mkdir -p /data/redis/conf
touch /data/redis/conf/redis.conf
docker run --name redis -p 6379:6379 \
-v /data/redis/data:/data -v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
--restart always -d redis redis-server /etc/redis/redis.conf \
--appendonly yes --requirepass "redis666"
集群搭建
下载redis镜像
docker pull redis
查看镜像
docker images
创建redis配置文件模板(自定义路径:/docker/redis-cluster)
redis-cluster.tmpl (我的IP地址为192.168.1.139)
port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.1.139
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
3: 创建自定义 docker network
docker network create redis-net
4: 创建各个容器配置文件和数据存放文件夹
for port in {7000..7005}; do
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
4: 创建容器
for port in {7000..7005}; do
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /docker/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /docker/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
5:开放防火墙端口
firewall-cmd --permanent --zone=public --add-port=7000-7005/tcp
firewall-cmd --permanent --zone=public --add-port=17000-17005/tcp
firewall-cmd --reload //重新加载配置
firewall-cmd --permanent --zone=public --list-ports //查看开放的端口
6:查看并记录各个容器的IP地址
docker inspect redis-7000 redis-7001 redis-7002 redis-7003 redis-7004 redis-7005 | grep IPAddress
7:随意进入一个redis 容器
docker exec -it redis-7000 bash
8:执行集群命令
此处错误修改,不应该使用容器IP,应该使用实际IP,模板中设置的cluster-announce-ip
redis-cli --cluster create 192.168.1.139:7000 192.168.1.139:7001 192.168.1.139:7002 192.168.1.139:7003 192.168.1.139:7004 192.168.1.139:7005 --cluster-replicas 1
中间有一次需要输入yes
执行成功
9:此时集群搭建成功可以进行测试
redis-cli -h 172.18.0.3 -p 7001
若是出现如下错误:这是因为redis根据key值来分配到指定slot中,所以出现如下问题,一种方案需要到指定的容器中进行同样的操作就可以成功。
或者需要客户端跟踪重定向,使用-c参数
redis-cli -h 172.18.0.3 -p 7001 -c
10:redis 连接工具
相信大家windows下安装工具都得心应手,但Linux中安装就头大了吧,treeNMS管理工具,直接到http://www.treesoft.cn/dms.html下载,是用JAVA开发的,基于WEB方式对Redis管理,windows环境下载解压即可使用,Linux环境中也只需将软件复制过去,配置JAVA环境就可以使用了。MAC系统中也可以直接复制过去用,前提是有JAVA运行环境。