主机Redis服务迁移到现有Docker Overlay环境

纪录最后一次对中型2C企业级项目的容器化革新

hello, 好久不见,之前文章纪录了一个实战的2C分布式项目的革新历程,效果如下:

主机Redis服务迁移到现有Docker Overlay环境

SSTI-服务端模板注入漏洞

其中Redis并未完成容器化革新(现在是主机单点),本文纪录将Redis升级到容器化Redis-Sentinel集群

升级思绪:

  1. 《Docker-compose搭建Redis高可用哨兵集群》,这里将Redis-Sentinel容器接入现有Docker Swarm overlay网络,规避Redis ClientApp接见差别网络的Redis-Sentinel引发的杂乱(因NAT转换和Port映射)。
  2. 行使主机上现有Redis dump.rdb持久化文件快速启动Redis哨兵集群
    (1 master:2slave:3 sentinel)
  3. 修改receiverapp的Redis毗邻字符串,验证

主机Redis服务迁移到现有Docker Overlay环境

注意事项

  • 现有的应用程序处于Docker Swarm Overlay网络,默认是不允许附加其他容器,这里我们需要将该Overlay网络设置成可附加,利便Redis-Sentinel接入该网络,所有容器同网络。
......
# 下面天生的overlay网络名称是:eqidstack_webnet
networks:
  webnet:
    driver: overlay
    attachable: true   // 应用程序Docker swarm 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
  • 经由验证,最新版本StackExchange.Redis 2.1.58 可以更简练的方式支持Redis-sentinel, 只需更改毗邻字符串,其中10.0.7.41:26379,10.0.7.42:26379,10.0.7.43:26379是sentinel容器ip,serviceName设置主节点名称。
"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"

主机Redis服务迁移到现有Docker Overlay环境

后记

本文纪录较缭乱,需要领会本次实操的靠山和历程。
总结起来:将主机上现有单点Redis服务容器化,并搭建哨兵高可用集群, 且将Redis集群与应用程序放在统一Overlay网络,便于同网络段容器通讯。

原创文章,作者:28qn新闻网,如若转载,请注明出处:http://www.28qn.com/archives/18795.html