天津哪里有做网站的公司,网页设计图片全覆盖,南靖网站建设,ui设计现在好找工作吗本篇文章不包含理论解释#xff0c;直接开始集群#xff08;三主三从#xff09;搭建 环境 centos7 docker 26.1.4 redis latest #xff08;7.4.2#xff09; 服务器搭建以及环境配置 请查看本系列前几篇博客 默认已搭建好三个虚拟机并安装配置好docker 相关博客#xf… 本篇文章不包含理论解释直接开始集群三主三从搭建 环境 centos7 docker 26.1.4 redis latest 7.4.2 服务器搭建以及环境配置 请查看本系列前几篇博客 默认已搭建好三个虚拟机并安装配置好docker 相关博客 vagrantvirtualbox实现centos7安装 Linux安装Docker教程详解 一. 环境准备
docker pull redis# 查看拉取的docker镜像
docker images创建docker网络保证所有redis容器可以互通 docker network create redis-cluster-network二. redis配置文件创建
三台机器上都创建好文件夹 用来存放配置文件 每个文件夹里都建好data文件夹作为工作目录 设置六个配置文件三主三从
主节点1配置文件 (redis-master-6379.conf) - 在机器101上
# 端口
port 6379
# 启用 Redis 集群模式
cluster-enabled yes
# 指定用于保存集群节点配置的文件名。这个文件是自动维护的并非当前的配置文件名
cluster-config-file nodes-6379.conf
# 节点超时时间超过次响应时间则认为此节点失效
cluster-node-timeout 5000
# 启用AOF作为持久化方式
appendonly yes
# redis密码 protected-mode只会在无密码时生效设置了密码就无需再修改protected-mode为no
requirepass 123456
# 指定 Redis 工作目录的位置包括 RDB 快照文件、AOF 文件以及集群配置文件等都将存储在这个目录下
# 注意这是docker中的挂载点 并非本地位置
dir /data从节点1配置文件 (redis-slave-6382.conf) - 在机器101上
# 端口
port 6382
# 启用 Redis 集群模式
cluster-enabled yes
# 指定用于保存集群节点配置的文件名。这个文件是自动维护的并非当前的配置文件名
cluster-config-file nodes-6382.conf
# 节点超时时间超过次响应时间则认为此节点失效
cluster-node-timeout 5000
# 启用AOF作为持久化方式
appendonly yes
# redis密码 protected-mode只会在无密码时生效设置了密码就无需再修
改protected-mode为no
requirepass 123456
# 指定 Redis 工作目录的位置包括 RDB 快照文件、AOF 文件以及集群配置文件等都将存储在这个目录下
# 注意这是docker中的挂载点 并非本地位置
dir /data主节点2配置文件 (redis-master-6380.conf) - 在机器102上
# 端口
port 6380
# 启用 Redis 集群模式
cluster-enabled yes
# 指定用于保存集群节点配置的文件名。这个文件是自动维护的并非当前的配置文件名
cluster-config-file nodes-6380.conf
# 节点超时时间超过次响应时间则认为此节点失效
cluster-node-timeout 5000
# 启用AOF作为持久化方式
appendonly yes
# redis密码 protected-mode只会在无密码时生效设置了密码就无需再修改protected-mode为no
requirepass 123456
# 指定 Redis 工作目录的位置包括 RDB 快照文件、AOF 文件以及集群配置文件等都将存储在这个目录下
# 注意这是docker中的挂载点 并非本地位置
dir /data从节点2配置文件 (redis-slave-6383.conf) - 在机器101上
# 端口
port 6383
# 启用 Redis 集群模式
cluster-enabled yes
# 指定用于保存集群节点配置的文件名。这个文件是自动维护的并非当前的配置文件名
cluster-config-file nodes-6383.conf
# 节点超时时间超过次响应时间则认为此节点失效
cluster-node-timeout 5000
# 启用AOF作为持久化方式
appendonly yes
# redis密码 protected-mode只会在无密码时生效设置了密码就无需再修
改protected-mode为no
requirepass 123456
# 指定 Redis 工作目录的位置包括 RDB 快照文件、AOF 文件以及集群配置文件等都将存储在这个目录下
# 注意这是docker中的挂载点 并非本地位置
dir /data主节点3配置文件 (redis-master-6381.conf) - 在机器101上
# 端口
port 6381
# 启用 Redis 集群模式
cluster-enabled yes
# 指定用于保存集群节点配置的文件名。这个文件是自动维护的并非当前的配置文件名
cluster-config-file nodes-6381.conf
# 节点超时时间超过次响应时间则认为此节点失效
cluster-node-timeout 5000
# 启用AOF作为持久化方式
appendonly yes
# redis密码 protected-mode只会在无密码时生效设置了密码就无需再修改protected-mode为no
requirepass 123456
# 指定 Redis 工作目录的位置包括 RDB 快照文件、AOF 文件以及集群配置文件等都将存储在这个目录下
# 注意这是docker中的挂载点 并非本地位置
dir /data从节点3配置文件 (redis-slave-6384.conf) - 在机器101上
# 端口
port 6384
# 启用 Redis 集群模式
cluster-enabled yes
# 指定用于保存集群节点配置的文件名。这个文件是自动维护的并非当前的配置文件名
cluster-config-file nodes-6384.conf
# 节点超时时间超过次响应时间则认为此节点失效
cluster-node-timeout 5000
# 启用AOF作为持久化方式
appendonly yes
# redis密码 protected-mode只会在无密码时生效设置了密码就无需再修
改protected-mode为no
requirepass 123456
# 指定 Redis 工作目录的位置包括 RDB 快照文件、AOF 文件以及集群配置文件等都将存储在这个目录下
# 注意这是docker中的挂载点 并非本地位置
dir /data三. 启动所有redis节点
先启动主节点 主节点1 (端口6379) - 在机器101上 docker run -d --name redis-master-6379 \
--network redis-cluster-network \
-p 6379:6379 \
-p 16379:16379 \
-v /usr/local/redis-docker/master-6379/redis-master-6379.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/redis-docker/master-6379/data:/data \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf主节点2 (端口6380) - 在机器102上 docker run -d --name redis-master-6380 \
--network redis-cluster-network \
-p 6380:6380 \
-p 16380:16380 \
-v /usr/local/redis-docker/master-6380/redis-master-6380.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/redis-docker/master-6380/data:/data \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf主节点3 (端口6381) - 在机器103上 docker run -d --name redis-master-6381 \
--network redis-cluster-network \
-p 6381:6381 \
-p 16381:16381 \
-v /usr/local/redis-docker/master-6381/redis-master-6381.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/redis-docker/master-6381/data:/data \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf再启动从节点 从节点1 (端口6382) - 在机器101上 docker run -d --name redis-slave-6382 \
--network redis-cluster-network \
-p 6382:6382 \
-p 16382:16382 \
-v /usr/local/redis-docker/slave-6382/redis-slave-6382.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/redis-docker/slave-6382/data:/data \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf从节点2 (端口6383) - 在机器102上 docker run -d --name redis-slave-6383 \
--network redis-cluster-network \
-p 6383:6383 \
-p 16383:16383 \
-v /usr/local/redis-docker/slave-6383/redis-slave-6383.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/redis-docker/slave-6383/data:/data \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf从节点3 (端口6384) - 在机器103上 docker run -d --name redis-slave-6384 \
--network redis-cluster-network \
-p 6384:6384 \
-p 16384:16384 \
-v /usr/local/redis-docker/slave-6384/redis-slave-6384.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/redis-docker/slave-6384/data:/data \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf四. 创建集群
在101服务器执行创建集群命令
docker exec -it redis-master-6379 env REDISCLI_AUTH123456 redis-cli --cluster create \192.168.43.101:6379 192.168.43.102:6380 192.168.43.103:6381 \192.168.43.101:6382 192.168.43.102:6383 192.168.43.103:6384 \--cluster-replicas 1 \--cluster-yes2. 验证集群状态
docker exec -it redis-master-6379 redis-cli -h 192.168.43.101 -p 6379 -a 123456 cluster nodes五. 易错点 从节点中不要配置replicaof 在 Redis 集群模式中主从复制是通过集群本身自动管理的不需要显式地使用 replicaof 指令。如果指定了replicaof会在启动redis从节点时报错replicaof directive not allowed in cluster mode 创建集群时要指定ip而不是容器名 如果是在同一台设备创建了六个容器创建集群时可以直接使用容器名 docker exec -it redis-master-6379 redis-cli --cluster create redis-master-6379:6379 redis-master-6380:6380 redis-master-6381:6381 redis-slave-6382:6382 redis-slave-6383:6383 redis-slave-6384:6384 –cluster-replicas 1 –cluster-password “123456”本次教程是分为三台机器所以要指定具体的ip docker exec -it redis-master-6379 env REDISCLI_AUTH123456 redis-cli --cluster create 192.168.43.101:6379 192.168.43.102:6380 192.168.43.103:6381 192.168.43.101:6382 192.168.43.102:6383 192.168.43.103:6384 –cluster-replicas 1 –cluster-yes 创建集群时 Waiting for the cluster to join 一直等待 测试一下网络连通性确保每个 Redis 容器不仅暴露了客户端连接的端口如 6379还暴露了集群总线端口如 16379