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😉