主机Redis服务迁移到现有Docker Overlay网络

简介: 《麻雀虽小,五脏俱全》之主机现有Redis服务迁移到Docker Swarm Overlay网络,并搭建高可用容器集群。

hello, 好久不见,之前文章记录了一个实战的2C分布式项目的改造过程,结果如下:


67ae46ef0016ee663370cd9e99d3ad10.png


其中Redis并未完成容器化改造(目前是主机单点),本文记录将Redis升级到容器化Redis-Sentinel集群


升级思路:


  1. Docker-compose搭建Redis高可用哨兵集群》,这里将Redis-Sentinel容器接入现有Docker Swarm overlay网络,规避Redis ClientApp访问不同网络的Redis-Sentinel引发的混乱(因NAT转换和Port映射)。


  1. 利用主机上现有Redis dump.rdb持久化文件快速启动Redis哨兵集群
    (1 master:2slave:3 sentinel)


  1. 修改receiverapp的Redis连接字符串,验证


b5f13db21082dce4b6896b8c2acf2963.png


注意事项


  • 现有的应用程序处于Docker Swarm Overlay网络,默认是不允许附加其他容器,这里我们需要将该Overlay网络配置成可附加,方便Redis-Sentinel接入该网络,所有容器同网络;为方便部署可将哨兵容器分配固定IP。


......
// 下面生成的overlay网络名称是:eqidstack_webnet
networks:
  webnet:
    driver: overlay
    attachable: true   // 将现有的overlay网络配置为:可附加容器
.....


  • 官方Redis镜像持久化数据存储在:/data, 本处我们需要将现有的主机Redis dump.rdb文件外挂进Master容器。


# 下面是master/slave docker-compose.yml文件
version: '3.7'
services:
  master:
    image: redis
    container_name: redis-master
    command: redis-server  --requirepass zxcde@1  --masterauth zxcde@1
    volumes:
      - /home/redis-sentinel/redis/data:/data
    ports:
      - "6380:6379"
    networks:
      - webnet
  slave1:
    image: redis
    container_name: redis-slave-1
    ports:
      - "6381:6379"
    command:  redis-server --slaveof redis-master 6379 --masterauth zxcde@1  --requirepass zxcde@1
    networks:
      - webnet
  slave2:
    image: redis
    container_name: redis-slave-2
    ports:
      - "6382:6379"
    command: redis-server --slaveof redis-master 6379 --masterauth zxcde@1 --requirepass zxcde@1
    networks:
      - webnet
networks:
  webnet:
    external: true
    name: eqidstack_webnet      // 使用现有的Dokcer Overlay网络


  • 经过验证,StackExchange.Redis最新版2.1.58 可以更简洁的方式支持Redis-sentinel,:


  • 只需更改原单点连接字符串,其中10.0.7.41:26379,10.0.7.42:26379,10.0.7.43:26379是sentinel容器端点,serviceName为Sentinel配置的Maser/slave名称。


"redis": "10.0.7.41:26379,10.0.7.42:26379,10.0.7.43:26379,serviceName=mymaster1,password=zxcde@1,abortConnect=false,connectTimeout=10000,writeBuffer=40960"


fc0de1fec9974fd8d3b2c4645d7e7525.png

后记


本文记录较凌乱,需要了解本次实操的背景和过程。


总结起来:将主机上现有单点Redis服务容器化,并搭建哨兵高可用集群, 且将Redis集群与应用程序放在同一Overlay网络,便于同网络段容器通信。


对于ASP.NET Core  && Docker && Redis相关问题,  欢迎各位提出并一起探讨。

相关文章
|
9月前
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
666 57
|
9月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
6月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1886 8
|
6月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
719 6
|
9月前
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
561 59
|
10月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
476 61
|
10月前
|
Docker 容器
Docker网关冲突导致容器启动网络异常解决方案
当执行`docker-compose up`命令时,服务器网络可能因Docker创建新网桥导致IP段冲突而中断。原因是Docker默认的docker0网卡(172.17.0.1/16)与宿主机网络地址段重叠,引发路由异常。解决方法为修改docker0地址段,通过配置`/etc/docker/daemon.json`调整为非冲突段(如192.168.200.1/24),并重启服务。同时,在`docker-compose.yml`中指定网络模式为`bridge`,最后通过检查docker0地址、网络接口列表及测试容器启动验证修复效果。
1570 39
|
9月前
|
NoSQL Redis 数据安全/隐私保护
挂载配置文件以Docker启动Redis服务
以上步骤提供了一个高效且实用的方式来使用Docker启动并运行带有自定义配置的Redis服务。这些操作可以适用于开发、测试和生产环境,是一种灵活且可扩展的部署方案。通过挂载配置文件和数据卷,您可以轻松地管理和迁移您的Redis实例。
912 9
|
Ubuntu 网络协议 Unix
02理解网络IO:实现服务与客户端通信
网络IO指客户端与服务端通过网络进行数据收发的过程,常见于微信、QQ等应用。本文详解如何用C语言实现一个支持多客户端连接的TCP服务端,涉及socket编程、线程处理及通信流程,并分析“一消息一线程”模式的优缺点。
476 0
|
11月前
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
429 4

热门文章

最新文章