docker中实现多机redis主从集群

redis主从集群是每个使用redis的小伙伴都必需知道的,那如何在docker中快速配置呢?这篇来教你快速上手,跟着复制完全就能用!!

1. 前置准备

1.1 docker安装

以防有小伙伴没预先安装docker,这里提供安装步骤

shell 复制代码
# 配置docker yum源。
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


# 安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动& 开机启动docker; enable + start 二合一
systemctl enable docker --now

# 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.2 创建docker network(单机中使用)

shell 复制代码
docker network create mynet01

2. 单机redis

先从简单的引人,注意实际生产过程中并不是都在单机上的(一台机起一个)

在本例子中就使用一主一从来做简单实现(单机下在同一个网络中,也就是刚刚创建好的mynet01)

2.1 主机redis

shell 复制代码
docker run -d -p 6379:6379 \  # 主机端口映射
-v /app/rd1:/bitnami/redis/data \ # 目录挂载
-e REDIS_REPLICATION_MODE=master \ # 配置环境变量,对应bitnami这个镜像
-e REDIS_PASSWORD=123456 \ 
--network mynet01 --name redis01 bitnami/redis
2.1.1 bug -- 启动报错无访问权限

启动后通过docker ps并没有看到前面运行的实例,这是由于从内部访问写配置文件并不是root用户,所以需要更改权限(同下)

shell 复制代码
chmod -R 777 rd1

docker restart redis02

2.2 从机redis

从机配置的东西就多了,需要配置好主机的host、端口号、密码等信息

shell 复制代码
docker run -d -p 6380:6379 \ # 主机端口映射
 -v /app/rd2:/bitnami/redis/data \ # 目录挂载
 -e REDIS_REPLICATION_MODE=slave \
 -e REDIS_MASTER_HOST=redis01 \ # 主机的ip
 -e REDIS_MASTER_PORT_NUMBER=6379 \ # 主机的redis端口
 -e REDIS_MASTER_PASSWORD=123456 \ # 主机redis的密码
 -e REDIS_PASSWORD=123456 \ # 本机redis的密码	
 --network mynet01 --name redis02 bitnami/redis

6.1.3 验证

在从机中输入如下命令访问redis

shell 复制代码
docker exec -it redis02 redis-cli

# 进去之后记得密码
AUTH 123456

# 查看主从复制信息
INFO replication

如果成功的话能看到如下信息

3. 多机redis

有了前面单机的引入,多机之前的主从集群搭建其实就是用host来绑定对应机器的ip地址,具体如下

在本例子中还是使用一主一从 来搭建主从集群,其中主机的ip是192.168.187.128

具体的ip根据自己申请的服务器确定,如果是本机上开的虚拟机可以ifconfig查看

3.1 主机redis

因为是不同机器无需通过network

shell 复制代码
docker run -d -p 6379:6379  \
-v /app/rd1:/bitnami/redis/data \
-e REDIS_REPLICATION_MODE=master \ 
-e REDIS_PASSWORD=123456  --name redis01 bitnami/redis 

3.2 从机redis

其实就跟单机的类似,只不过host这里换成主机的ip地址,这样就可以通过网络访问到主机上了

shell 复制代码
docker run -d -p 6380:6379 \
-v /app/rd2:/bitnami/redis/data \
-e REDIS_REPLICATION_MODE=slave  \
-e REDIS_MASTER_HOST=192.168.187.128 \ # 注意这里的host地址为主机的ip地址
-e REDIS_MASTER_PORT_NUMBER=6379 \
-e REDIS_MASTER_PASSWORD=123456 \
-e REDIS_PASSWORD=123456 --name redis02 bitnami/redis

3.3 测试

首先进入主机redis

shell 复制代码
docker exec -it redis01 redis-cli

# 进去之后记得密码
AUTH 123456

# 查看主从复制信息
INFO replication

再进入从机redis

shell 复制代码
docker exec -it redis02 redis-cli

# 进去之后记得密码
AUTH 123456

# 查看主从复制信息
INFO replication

如果成功将会看到如下主从集群信息
如果还不放心,不妨跟我一样在主机中设置一个键值,然后再在从机中获取对应的key,看看是否是你设置的value😉

相关推荐
唐大爹8 小时前
项目实战:k8s部署考试系统
云原生·容器·kubernetes
wusam8 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习04(环境准备)
学习·docker·centos
千年死缓9 小时前
go+redis基于tcp实现聊天室
redis·tcp/ip·golang
小小娥子11 小时前
Redis的基础认识与在ubuntu上的安装教程
java·数据库·redis·缓存
DieSnowK11 小时前
[Redis][集群][下]详细讲解
数据库·redis·分布式·缓存·集群·高可用·新手向
wusam11 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器
一直在进步的派大星11 小时前
Docker 从安装到实战
java·运维·docker·微服务·容器
Zl15975315975315 小时前
k8s基础环境部署
云原生·容器·kubernetes
CoderJia程序员甲15 小时前
重学SpringBoot3-集成Redis(一)
java·redis·缓存·springboot
speop15 小时前
408笔记|随笔记录|自用|2
java·redis·笔记