经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Redis » 查看文章
Docker 安装 Redis 单机&集群总结
来源:cnblogs  作者:易墨  时间:2023/10/9 9:22:09  对本文有异议

前言

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于 内存 分布式 、可选持久性的键值对( Key-Value )存储数据库

安装单机版

  • 安装源:DockerHub

  • 默认配置文件:配置文件示例 6.2

  • 运行时指定配置文件

      1. docker run -v /myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf
  • 局域网访问配置

      1. #不限制IP访问,局域网能够访问
      2. bind 0.0.0.0
      3. #禁用保护模式
      4. protected-mode no
  • 设置密码:requirepass devops666

  • v6.0 后的版本增加了通过 ACL 的方式设置用户名密码

  • 持久化:appendonly yes

  • 启用后默认使用的 AOF(Append-Only File)持久化方式

  • AOF/RDB 等持久化方式文档说明

  • compose.yml

      1. version: '3.1'
      2. services:
      3. redis:
      4. container_name: db_redis_6_2
      5. image: redis:6.2.13
      6. restart: always
      7. command: redis-server /usr/local/etc/redis/redis.conf
      8. volumes:
      9. - ./data:/data
      10. - ./config/redis.conf:/usr/local/etc/redis/redis.conf
      11. ports:
      12. - "6379:6379"
      13. networks:
      14. - devopsnetwork
      15. networks:
      16. devopsnetwork:
      17. external: true
  • redis.conf

      1. #不限制IP访问,局域网能够访问
      2. bind 0.0.0.0
      3. #禁用保护模式
      4. protected-mode no
      5. #端口
      6. port 6379
      7. #密码
      8. requirepass devops666
      9. #开启AOF日志 指定持久化方式
      10. appendonly yes
  • 安装成功,可以使用 dbeaver 连接查看

搭建 Redis 集群

Redis 集群是一种高可用、可水平扩展的 Redis 部署方式。它将 Redis 数据库分布在多个节点上,是为了提供高性能、高可用性和可伸缩性而设计的分布式 Redis 解决方案

需要注意的点

  • 配置、管理和维护成本相对高
  • 不支持多数据库,只能使用 0 数据库
  • 不支持跨节点的事务操作
  • 批量操作时支持有限,如数据不在一个节点,则会报错
  • 在部署 Redis 集群模式时,至少需要六个节点组成集群才能保证集群的可用性。

集群规划

  • 节点分配

    • devops02:192.168.123.216
    • devops03:192.168.123.219
    • devops04:192.168.123.222
  • 端口分配

    • 6389: redis 访问端口
    • 16389: 集群端口, 普通端口号加 10000,集群节点之间的通讯
  • 不要设置密码,未找到节点间通信带密码的解决方案,-a password 只是主节点访问使用

  • 集群的 redis 配置模板

      1. #端口
      2. port 6380
      3. #是否开启 Redis 集群模式
      4. cluster-enabled yes
      5. #设置 Redis 集群配置信息及状态的存储位置
      6. cluster-config-file nodes.conf
      7. #设置 Redis 群集节点的通信的超时时间
      8. cluster-node-timeout 5000
      9. appendonly yes
      10. daemonize no
      11. protected-mode no
      12. pidfile /data/redis.pid
      13. #主节点需要的最小从节点数,只有达到这个数,主节点失败时,它从节点才会进行迁移。
      14. # cluster-migration-barrier 1
      15. #设置集群可用性
      16. # cluster-require-full-coverage yes
      17. # 集群节点 IP,如果要外部访问需要修改为宿主机IP,如:192.168.123.216
      18. # cluster-announce-ip 默认172.x.x.x
      19. #客户端连接端口
      20. #cluster-announce-port 6380
      21. #节点间通信端口
      22. #cluster-announce-bus-port 16380
  • docker compose.yml 配置模板

      1. version: '3.1'
      2. services:
      3. redis:
      4. container_name: cluster_redis_6380
      5. image: redis:6.2.13
      6. restart: always
      7. command: redis-server /usr/local/etc/redis/redis.conf
      8. volumes:
      9. - ./data:/data
      10. - ./config/redis.conf:/usr/local/etc/redis/redis.conf
      11. ports:
      12. - '6380:6380'
      13. - '16380:16380'

集群部署

将上面的配置模板文件按下面的目录结构创建

  1. - node-cluster
  2. - redis-6380
  3. - config
  4. - redis.conf :需要配置模板中修改 port:6380
  5. - compose.yml:需要配置模板中修改 container_name: cluster_redis_6380
  6. - redis-6381
  7. - config
  8. - redis.conf :需要配置模板中修改 port:6381
  9. - compose.yml:需要配置模板中修改 container_name: cluster_redis_6381
  1. 修改 redis.conf 中的 port

  2. 修改 compose.yml 中的 container_name: cluster_redis_6381

  3. 将 node-cluster 目录上传到准备的集群节点服务器:192.168.123.216,192.168.123.219,192.168.123.222

  4. 在服务器的对应目录中执行 docker compose up -d,确保容器正常运行

  5. 依托于创建的 redis 容器,使用下面的命令创建集群并添加节点

    1. devops02=192.168.123.216
    2. devops03=192.168.123.219
    3. devops04=192.168.123.222
    4. docker exec -it cluster_redis_6380 redis-cli -p 6380 --cluster create ${devops02}:6380 ${devops02}:6381 ${devops03}:6380 ${devops03}:6381 ${devops04}:6380 ${devops04}:6381 --cluster-replicas 1 --cluster-yes

  6. 连接集群测试(redis-cli)

      1. docker exec -it cluster_redis_6380 redis-cli -p 6380 -c
    1. 查看集群信息:cluster info
    2. 查看集群节点信息:cluster nodes
    3. 本地连接测试:redis-cli -h 192.168.123.216 -p 6380 -c

至此,终于是一步步的创建好了 Redis 集群

集群外部访问问题

当 redis.conf 没有设置 cluster-announce-ip 时,使用redis-cli访问没有问题,但是会发现连接时访问节点会变成容器内部IP

导致的结果就是 使用一些Redis客户端连接会超时,无法使用。要解决这个问题,需要将每个节点的 redis.conf 中的 cluster-announce-ip 配置修改为其宿主机IP即可,可以这样做

  • 新建对应文件夹及配置

  • 复制对应IP文件夹到服务器再创建集群即可

  • 工具连接测试

后语

假期结束,先是折腾了一会创建集群密码的问题,然后又是尝试各种连接工具,终于搞定了集群的安装,完美的假期。

原文链接:https://www.cnblogs.com/morang/p/devops-docker-redis-cluster-install.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号