docker构建redis集群
  TX0amY3y85Is 2023年11月02日 59 0

建立六台主机 三主三从  redis网络


1、docker network  create redis --subnet 172.38.0.0/16

命令创建名为 “redis” 的网络,并指定子网为 “172.38.0.0/16

docker构建redis集群_docker

docker构建redis集群_resdis_02

2、docker  network  inspeect redis 

docker构建redis集群_resdis_03


3、编写一个创建redis集群配置文件的脚本

 for port in $(seq 1 6);

> do

>   mkdir -p "/mydata/redis/node-$port/conf"

>   touch "/mydata/redis/node-$port/conf/redis.conf"

>   cat <<EOF >"/mydata/redis/node-$port/conf/redis.conf"

> port 6379

> bind 0.0.0.0

> cluster-enabled yes

> cluster-config-file nodes.conf

> cluster-node-timeout 5000

> cluster-announce-ip 172.38.0.1$port

> cluster-announce-port 6379

> cluster-announce-bus-port 16379

> appendonly yes

> EOF

> done

序列生成器 seq 来循环生成端口号从 1 到 6 的循环。在每次循环中,它创建一个目录并在该目录下创建一个名为 redis.conf 的配置文件,并将配置写入其中。

脚本创建 Redis 集群配置文件的过程:

  1. 使用 mkdir -p 命令创建一个名为 /mydata/redis/node-$port/conf 的目录。$port 是当前循环的端口号。
  2. 使用 touch 命令创建一个空的 redis.conf 文件。
  3. 使用 cat <<EOF >"/mydata/redis/node-$port/conf/redis.conf" 命令将配置写入 redis.conf 文件。
  4. 在配置文件中设置了以下配置项:
  • port:设置 Redis 服务器的监听端口为 6379。
  • bind:将 Redis 绑定到所有可用的网络接口。
  • cluster-enabled:启用 Redis 集群模式。
  • cluster-config-file:指定 Redis 集群的配置文件名为 nodes.conf
  • cluster-node-timeout:设置 Redis 集群节点的超时时间为 5000 毫秒。
  • cluster-announce-ip:设置用于集群节点通告的 IP 地址。
  • cluster-announce-port:设置用于集群节点通告的端口号为 6379。
  • cluster-announce-bus-port:设置用于集群节点通告总线的端口号为 16379。
  • appendonly:启用 Redis AOF (Append-Only File) 持久化。
  1. 使用 EOF 关键字来标记配置内容的结束。

脚本将在循环结束后创建了 6 个配置文件,分别对应端口号从 1 到 6 的 Redis 节点。

docker构建redis集群_docker_04

docker构建redis集群_resdis_05


4、docker pull redis:5.0.9-alpine3.11

拉取redis镜像

docker构建redis集群_docker_06


5、docker run -p 6731:6739 -p 16371:16379  --name redis-1 -v /mydata/redis/node-1/data:/data -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

创建redis 1主机

docker构建redis集群_docker_07

使用 Docker 运行 Redis 容器,并指定了一些参数和选项。下面是每个选项的解释:

  • -p 6731:6739 -p 16371:16379:将容器内的 Redis 服务端口(默认为 6379)映射到主机上的端口,其中 6731:6739 是内外端口的映射关系,16371:16379 是集群总线端口的映射关系。
  • --name redis-1:为容器指定一个名称,即 “redis-1”。
  • -v /mydata/redis/node-1/data:/data:在容器内使用挂载卷将 Redis 数据目录 /data 映射到主机上的 /mydata/redis/node-1/data 目录。
  • -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf:将主机上的 Redis 配置文件 /mydata/redis/node-1/conf/redis.conf 映射到容器内的 /etc/redis/redis.conf
  • -d:将容器设置为在后台运行(以守护进程方式)。
  • --net redis:将容器连接到名为 “redis” 的网络。这是之前创建的网络。
  • --ip 172.38.0.11:为 Redis 容器分配一个指定的 IP 地址。
  • redis:5.0.9-alpine3.11:指定要使用的 Redis 镜像和版本。
  • redis-server /etc/redis/redis.conf:在容器中运行 Redis 服务器,并指定使用 /etc/redis/redis.conf 配置文件。

创建并启动一个名为 “redis-1” 的 Redis 容器,并将该容器连接到 “redis” 网络中。容器将会使用指定的 IP 地址(172.38.0.11)运行 Redis 服务并加载提供的配置文件。

docker run -p 6732:6739 -p 16372:16379  --name redis-2 -v /mydata/redis/node-2/data:/data -v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6733:6739 -p 16373:16379  --name redis-3 -v /mydata/redis/node-3/data:/data -v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6734:6739 -p 16374:16379  --name redis-4 -v /mydata/redis/node-4/data:/data -v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6735:6739 -p 16375:16379  --name redis-5 -v /mydata/redis/node-5/data:/data -v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

 docker run -p 6736:6739 -p 16376:16379  --name redis-6 -v /mydata/redis/node-6/data:/data -v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker构建redis集群_docker_08


6、 docker exec -it redis-1 /bin/sh

docker构建redis集群_resdis_09


7、redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1

  • redis-cli:Redis 客户端命令行界面。
  • --cluster create:指定创建 Redis 集群。
  • 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379:指定要用于创建集群的主节点地址和端口。在这个例子中,有 6 个主节点,每个节点的地址和端口分别为:
  • 172.38.0.11:6379
  • 172.38.0.12:6379
  • 172.38.0.13:6379
  • 172.38.0.14:6379
  • 172.38.0.15:6379
  • 172.38.0.16:6379
  • --cluster-replicas 1:指定每个主节点要创建一个从节点(副本)。这个参数使您的集群拥有 6 个主节点和 1 个从节点。

docker构建redis集群_docker_10


8、redis-cli -c

进入redis集群

docker构建redis集群_docker_11

  • redis-cli:Redis 客户端命令行界面。
  • -c:参数表示启用 Redis Cluster 模式。这将打开 Redis 客户端并在 Redis Cluster 模式下进行连接。

9、cluster info

docker构建redis集群_resdis_12

Redis 将返回关于集群的信息,其中可能包括以下内容:

  • cluster_state:指示集群当前状态的字符串,可以是 “ok”、“fail” 或 “nofailover”。
  • cluster_slots_assigned:已分配的槽位数量。
  • cluster_slots_ok:正常工作的槽位数量。
  • cluster_slots_pfail:与有问题的节点关联的槽位数量。
  • cluster_known_nodes:已知节点的数量。
  • cluster_size:集群中节点的数量。
  • cluster_current_epoch:当前纪元的编号。
  • cluster_my_epoch:本节点的纪元编号。
  • cluster_stats_messages_sent:发送的消息数量。
  • cluster_stats_messages_received:接收的消息数量


10、cluster nodes

执行 CLUSTER NODES 命令,您可以获得有关 Redis Cluster 中每个节点的详细信息,包括节点 ID、IP 地址、角色等。

请注意,在执行 CLUSTER NODES 命令之前,您需要在 Redis 客户端中启用 Cluster 模式(通过 redis-cli -c 命令)

docker构建redis集群_docker_13

11、set  a b

SET a b 是一个 Redis 命令,用于将键名 a 关联到值 b。它会在 Redis 中创建或更新一个键值对,将键 a 的值设置为 b

docker构建redis集群_docker_14


12、get a 

GET a 是一个 Redis 命令,用于获取键名为 a 的值。它会返回键 a 关联的值

docker构建redis集群_resdis_15

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论