主机Redis服务迁移到现有Docker Overlay环境
记录最后一次对中型2C企业级项目的容器化改造
hello, 好久不见,之前文章记录了一个实战的2C分布式项目的改造过程,结果如下:
其中Redis并未完成容器化改造(目前是主机单点),本文记录将Redis升级到容器化Redis-Sentinel集群
。
升级思路:
- 《Docker-compose搭建Redis高可用哨兵集群》,这里将Redis-Sentinel容器接入现有Docker Swarm overlay网络,规避Redis ClientApp访问不同网络的Redis-Sentinel引发的混乱(因NAT转换和Port映射)。
- 利用主机上现有Redis dump.rdb持久化文件快速启动Redis哨兵集群
(1 master:2slave:3 sentinel) - 修改
receiver
、app
的Redis连接字符串,验证
注意事项
- 现有的应用程序处于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服务容器化,并搭建哨兵高可用集群, 且将Redis集群与应用程序放在同一Overlay网络,便于同网络段容器通信。
主机Redis服务迁移到现有Docker Overlay环境的更多相关文章
- 使用nginx实现一个主机部署多域名指向不同docker项目
1,安装 docker yum install docker 使用Docker 中国加速器 vim /etc/docker/daemon.json 添加下面代码 { "registry-m ...
- docker 中运行 redis 服务
先使用 dockerfile 创建一个 redis 容器 FROM ubuntu:latest RUN apt-get update RUN apt-get -y install redis-serv ...
- Ubuntu 17.10 用 apt 搭建 lamp 环境、安装 phpmyadmin、redis 服务+扩展、mysql 扩展、开启错误提示、配置虚拟主机
2018-02-24 13:50:30 更新: 个人喜欢相对原生又不太麻烦,所以用 apt 构建环境.不过,最近使用到现在记得出现过了 3 次 apache 或 mysql 服务器无法启动或无法连接的 ...
- redis哨兵集群、docker入门
redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果m ...
- 服务迁移之路 | Spring Cloud向Service Mesh转变
一.导读 Spring Cloud基于Spring Boot开发,提供一套完整的微服务解决方案,具体包括服务注册与发现,配置中心,全链路监控,API网关,熔断器,远程调用框架,工具客户端等选项中立的开 ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
- Docker Overlay 应用部署
Docker Overlay 部署条件 要想使用Docker原生Overlay网络,需要满足以下任意条件: 1.Docker运行在Swarm模式 2.使用键值存储的Docker主机集群 本次部署使用键 ...
- Redis服务之集群节点管理
上一篇博客主要聊了下redis cluster的部署配置,以及使用redis.trib.rb工具所需ruby环境的搭建.使用redis.trib.rb工具创建.查看集群相关信息等,回顾请参考https ...
- k8s入坑之路(13)服务迁移(定时任务 微服务 传统服务)
定时任务迁移kubernetes 服务迁移步骤 1.安装好java 2.安装好maven 项目打包 mvn package 测试传参运行 java -cp cronjob-demo-1.0-SNAPS ...
随机推荐
- win10系统systeminfo命令的过滤用法
一.背景: 在win10系统使用systeminfo命令可以查看windows系统信息,但是,默认显示的是全部信息,由于显示内容过多,这对查看特定信息带来一定麻烦.考虑使用该命令时能否使用过滤功能,直 ...
- 【C++】cout、cerr、clog之间的区别
cout.cerr.clog三者都是标准IO库中提供的输出工具. 但是cout是支持重定向操作的.比如freopen()对于cout有效. clog和cerr主要用于错误输出. 因此,如果将程序输出重 ...
- Java实现 LeetCode 552 学生出勤记录 II(数学转换?还是动态规划?)
552. 学生出勤记录 II 给定一个正整数 n,返回长度为 n 的所有可被视为可奖励的出勤记录的数量. 答案可能非常大,你只需返回结果mod 109 + 7的值. 学生出勤记录是只包含以下三个字符的 ...
- Java实现 LeetCode 316 去除重复字母
316. 去除重复字母 给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次.需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置). 示例 1: 输入: " ...
- Java实现 蓝桥杯VIP 算法提高 种树
算法提高 种树 时间限制:1.0s 内存限制:256.0MB 种树 问题描述 A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门 得到指令后,初步规划出n个 ...
- Winform最基础的DBHelper类
PS:我已经忘记了n遍了 class DBHelper { //连接数据库 public static string connstring = @"Data Source=DESKTOP-8 ...
- 第四届蓝桥杯JavaA组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.世纪末的星期 题目描述 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破. 还有人称今后的某个世纪末的12月31日, ...
- python json unicode utf-8处理总结
1.直接输出字典中文 在python中经常遇见直接print dict(字典),或者dict转json,但是没有给特定的参数,然后打印json字符串,输出的中文就成了unicode码的情况,如下: d ...
- monkey命令的基本使用
看到monkey,你想到了什么?今天给大家分享下monkey命令的基本使用 monkey测试是Android平台自动化测试的一种手段,通过monkey程序模拟用户触摸屏幕,滑动.按键操作等操作对设备上 ...
- 一文说通Dotnet Core的后台任务
这是一文说通系列的第二篇,里面有些内容会用到第一篇中间件的部分概念.如果需要,可以参看第一篇:一文说通Dotnet Core的中间件 一.前言 后台任务在一些特殊的应用场合,有相当的需求. 比方, ...