docker 搭建redis集群
docker 搭建redis集群
第一步 安装docker
第二步 安装docker-compose
这里就不出安装教程了
第三步 下载一份redis安装包
个人喜欢下免安装版的,下载地址
https://github.com/redis/redis/archive/5.0.8.tar.gz
拿到配置文件,修改配置文件
温馨提示:
1.vim 编辑器下 / 可以搜索内容
#第一处位置
#注释绑定id 允许所有ip访问
#bind 127.0.0.1
#第二处位置
#修改端口
port 6379
#第三处位置
#修改相应位置 这个文件是redis 自己维护的文件 修改 redis_端口
pidfile /var/run/redis_6379.pid
#第四处位置
#开启集群
cluster-enabled yes
第四步 修改 docer-compose.yml
温馨提示:
1.liunx是不认识win 的 tab键 需要把 tab 缓存4个空格
#容器名
redis6381:
#依赖镜像 如果下载镜像失败的话就换个版本
image: redis:6.2
#容器别名 与容器名保持一致
container_name: "redis6381"
ports:
#主机端口 映射到容器端口
- 6381:6381
volumes:
#文件映射 主机文件映射到容器里面
- /usr/local/redis:/redis
command:
#容器启动是执行的命令
redis-server /redis/redis6381.conf
#container内的root拥有真正的root权限
privileged: true
extra_hosts:
#主机别名
- my_host:192.168.1.67
#网络模式 这里网络模式使用host的原因是 redis节点需要添加到redis里面
#然后不使用 host模式 当项目跑起来的时候你就会发现 连接redis是失败的
network_mode: "host"
redis6380:
image: redis:6.2
container_name: "redis6380"
ports:
- 6380:6380
volumes:
- /usr/local/redis:/redis
command:
redis-server /redis/redis6380.conf
privileged: true
extra_hosts:
- my_host:192.168.1.67
network_mode: "host"
redis6379:
image: redis:6.2
container_name: "redis6379"
ports:
- 6379:6379
volumes:
- /usr/local/redis:/redis
command:
redis-server /redis/redis6379.conf
privileged: true
extra_hosts:
- my_host:192.168.1.67
network_mode: "host"
第五步 修改完配置文件装载容器了
# -d 是后台启动的参数
docker-compose up -d redis6379 redis6380 redis6381
第六步 连接上redis 添加redis节点
#连接上redis
.\redis-cli.exe -h 92.168.1.67 -p 6379
添加节点
CLUSTER MEET 192.168.1.67 6379
CLUSTER MEET 192.168.1.67 6380
CLUSTER MEET 192.168.1.67 6381
#查看集群节点
CLUSTER NODES
#查看集群情况
CLUSTER info
#这时候集群是不健康的
需要给redis集群 分配槽点
创建addslots.sh文件
温馨提示:
1.liunx 需要装有redis,才能执行下面代码文件
#!/bin/bash
#将0-5461的槽点配置在(宿主机192.168.1.67:6379)的redis上
#for ((i=0; i<=5461; i ++))
for i in `seq 0 5461`
do
echo "$i"
redis-cli -h 192.168.1.67 -p 6379 CLUSTER ADDSLOTS $i
done
#将5462-10922的槽点配置在(宿主机192.168.1.67:6380)的redis上
#for ((i=5462; i<=10922; i ++))
for i in `seq 5462 10922`
do
echo "$i"
redis-cli -h 192.168.1.67 -p 6380 CLUSTER ADDSLOTS $i
done
#将10923-16383的槽点配置在(宿主机192.168.1.67:6381)的redis上
#for ((i=10923; i<=16383; i ++))
for i in `seq 10923 16383`
do
echo "$i"
redis-cli -h 192.168.1.67 -p 6381 CLUSTER ADDSLOTS $i
done
但是没装怎么办呢
addslots.sh 把这个文件放到redis文件里面 映射到容器里面
第七步 进入docker 容器里面
#进入容器命令
docker exec -it redis6379 bash
#进入redis文件夹
cd /redis
#执行命令 分配redis槽点
sh addslots.sh
#退出容器命令
exit
第八步 测试 redis可用
#查看redis集群情况
CLUSTER info
set userName zhangsan
#ok
set userNane zhangsan
# MOVED 5622
第二个set是不成功的 为什么呢
这是另一篇博客提的问题
https://blog.csdn.net/weixin_41891696/article/details/123813011
我们需要用集群模式连接redis
.\redis-cli.exe -h 92.168.1.67 -p 6379 -c
set userNane zhangsan
#ok
移除redis节点
cluster forget 节点id