由于阿里云策略问题,要求用户从经典网络中全部迁出,搬迁到他们设置的 VPC 网络中。这里的 VPC 大概指的是逻辑上的一个虚拟局域网。即使是实际上你的机器垮机房在阿里云的不同机房。但是他们仍然能从逻辑上属于一个 VPC。这次搬迁涉及到的主要问题是,目前手里的机器有很多都不太清楚在做什么,上面的服务是否重要,包括其中的管理以及是否最后还能将其启动起来。可以说是挤压了非常多的老债务,通过这次迁移需要一并还上。心里还是比较虚的。

由于这次迁移的主负责人并不是我 所以只用管好自己手中的业务就好了,还是轻松不少。提前了两天开始梳理手里面的十几台机器,按照如下格式做了记录。

Data10: 目前来看可以直接迁, 也不用手动起什么。谁关注什么业务再去启动。

Data08:
1. 离线库 MySQL 的启动 /usr/bin/mysql
可以使用命令
启动: service mysqld start
停止:service mysqld stop
重启:service mysqld restart 这个今天半夜来重新启动一下
查看状态:service mysqld status 2. Maxwell(从离线到 aliyun) 的重新启动。/usr/local/share/maxwell-1.10.3
启动:bin/maxwell --kafka_topic=sync_to_aliyun
停掉:直接在我的 tmux 里面停掉(这里是生产者随时停都可以)。 3. Apache Zeppelin 数据分析(这个可以停 需要自己启一下不在当日启动)
启动:work: bin/zeppelin-daemon.sh start xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

十几台每台机器做什么,都照此做了记录。这样可以比较清楚的看到哪些服务在本机器上跑着。如何启动,需要注意一些什么。另外单个机器上的梳理任务遵循从重要 -> 次要。

使用 htop 命令按照内存排序,将所有吃资源的服务先梳理出来。按照经验这些大家伙总是会占用着更多的资源,也会更加重要。

梳理的时候遇到一个小插曲,之前搭建 某3台机器上的 kafka 集群并不是我操作的。不是很清楚上面的 HA 配置情况。巧合的是当天上午因为某些奇怪的原因集群3台中的某一台挂了,我开始就默认了集群的 topic 有高可用设置,并没有特别在意。后来收到同步数据不一致的情况去看了集群配置才猛然发现完全没有设置 HA 的 topic ,每个 topic 的 partition 都只有一个副本。。。。。。 所以其中某个节点一挂, 其负责的那些 partition 中的数据就会丢失。赶紧先启动起来,并且把这个问题记录下来了。在迁移停机期间将 重要的 topic 都设置了高可用三备份。

另外在迁移 kafka 集群的时候还遇到一个问题,kafka 似乎在集群刚启动的时候会需要不少时间来同步一些信息,包括与  zookeeper 通讯之类的。当完成同步之后才能在 kafka 里面查询到 topic 和 group 相关的信息,在启动完成之前会执行 kafka 的相关命令可能会一直得不到响应,这点也需要注意一下。以下罗列最常用到的命令:

./kafka-consumer-groups.sh --bootstrap-server xxxxxxx:9092 --describe --group sync_group_20180321
./kafka-consumer-groups.sh --bootstrap-server xxxxxxx:9092 --list
./kafka-topics.sh --zookeeper xxxxx:2181 --list
./kafka-topics.sh --zookeeper xxxxx:2181 --describe

这种全部停机的迁移基本上都会放在对用户影响最少的时候来进行,例如晚上。晚上经常做事情的时候都不是很清楚了 所以我罗列了一个 checklist 单子。只要 step by step 照着这个执行,就能最大程度的保证一切按照计划和预期执行。

    1. ☑️得到业务通知 数据库关机之后
Data05 06 07 上的 kafka 集群需要设置 备份为 3 份 默认分区改为 4 份。删除 topic 再重新创建 topic 为4个副本。
具体操作:
将 05 06 07 kafka config 中设置
num.partitions= 12
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=3
然后使用命令
./kafka-consumer-groups.sh --bootstrap-server 10.171.97.1:9092 --describe --group sync_group_20180321
观察生产消费都已经停止。
2. ☑️当得到业务通知数据库开机这边可以迁移了 开始迁移数据的机器。
3. ☑️https://ecs.console.aliyun.com/?spm=5176.2020520001.aliyun_sidebar.aliyun_sidebar_ecs.311e4bd3VY5wLr#/server/region/cn-beijing
去该地址根据标签过滤属于 data 的机器。
4. ☑️从 data01 开始预约迁移。 右侧-> 更多 -> 网络和安全组 -> 预约迁移至专用网络 一共预约 16 台机器。 08 07 10 05 02 01 04 12 03 11 yanxishe01 研习社02 研习社服务器 06
5. ☑️阿里云 Hybird for MySQL 迁移到设置到 a 区。 迁移到 redis01 可用a区
6. ☑️如果没有意外发生 等待至预约重启时间,如果有问题中断流程。
aliyun 经典网络 -> vpc 迁移完成
7. ☑️检查 Hybird for MySQL 的请求地址是否有变化 如果有变化 需要改变相关库的地址。 地址未改变
8. ☑️从 data01 开始修改机器内网 ip地址 。右侧 -> 管理 -> 停止 -> 配置信息更多 -> 修改私有 ip 地址依次操作 16 台机器
9. ☑️根据文档 https://wiki.hundun.cn/pages/viewpage.action?pageId=20659409 挂载 data 所有机器上的相关磁盘 并且修改 /etc/fstab 文件至正确 并且 check
去每台已经修改完 ip 的机器上使用命令
Fdisk -l查看需要挂载的硬盘名称。然后将该名字更新到 /etc/fstab 上并且取消注释使用命令 mount /dev/xxxx /directory 即可
mount /dev/sdb1 /data
10. ☑️优先恢复 medivh 系统正常,去 data02 上使用命令 仅启动 zookeeper 脚本 kafka 会起来
Zookeeper
启动:./zookeeper-server-start.sh -daemon /usr/share/kafka/config/zookeeper.properties
Kafka
启动:/usr/share/kafka/bin/kafka-server-start.sh -daemon /usr/share/kafka/config/server.properties
恢复 kafka 和 zookeeper 服务。
11. ☑️去 data05 06 07 上依次将 kafka 集群启动起来。
按照顺序依次启动 05 -> 06 ->07 的 zookeeper
./zkServer.sh start 启动 05 -> 06 -> 07 上的 kafka
./kafka-server-start.sh -daemon /opt/kafka/kafka_2.11-1.0.1/config/server.properties
观察消费情况 删除 sync_aliyun 主题 并且重新创建 sync_aliyun 主题
./kafka-topics.sh --zookeeper 10.171.97.1:2181 --delete --topic sync_to_aliyun
./kafka-topics.sh --zookeeper 10.171.97.1:2181 --create --topic sync_to_aliyun --replication-factor 3 --partitions 12
12. ☑️去 data08 上恢复 该机器的 supervisor
Root 权限下 python /usr/bin/supervisord -c /etc/supervisord.conf
然后 supervisorctl 恢复上面的 消费者服务
sync_maxwell_mysql:sync_to_data08mysql start
去 data05 将其生产者启动起来
Root 权限下 python /usr/bin/supervisord -c /etc/supervisord.conf
然后 supervisorctl 将所有生产者启动起来 并且进行 线上到离线库的验证 在线 -> 离线 check 流程完成。
13. ☑️启动 data08 上的 maxwell
bin/maxwell --kafka_topic=sync_to_aliyun 生产者起起来 离线 -> 阿里云 需要 check 流程完成。
14. ☑️从 data01 开始 启动相关服务。
☑️验证相关服务。

每完成以项就打勾确认,直到你完成所有的配置项,最后再看一眼 结束。

良好的计划和对业务的梳理可以让你在服务迁移的时候更加从容。这次搬迁过程中除了启动集群的时候稍微多花了一点时间以外,其他都是完全按照计划,整个过程非常平滑。

可见一般迁移之前的准备工作如果足够充分,可以让你在实施的时候事半功倍。

从 Aliyun 经典网络迁移到 Aliyun VPC 网络的更多相关文章

  1. 服务器资源迁移到aliyun对象存储及oss的权限管理配置

    chinasoft-download增值服务的迁移和部署 需求: 增值服务网站需要从网宿迁移到阿里云,以前的增值服务历史软件存放在服务器中需要迁移到阿里云的oss中存放 需要改造程序给程序添加一个os ...

  2. 青云VPC网络配置

    1 创建VPC网络 2 申请公网IP 3 回到VPC图形界面绑定公网ip 4 创建私有网络,并绑定私有网络 5 创建3台主机 6 新建防火墙,并绑定到VPC 7 配置VPC端口转发规则 8 添加防火墙 ...

  3. 阿里云不同账号之间相同地域的VPC网络互访

    今天实际操作了一下,在这篇随笔中记录一下以备忘,主要参考阿里云帮助文档-不同账号下专有网络内网互通. 实现场景:账号A的VPC网络中的ECS访问账号B的VPC网络中的ECS与RDS(地域都在华东1), ...

  4. 创建vpc网络

    vpc相关功能点: 模块 功能点 描述 备注 VPC 创建vpc网络 创建vpc网络,指定vpc网络名称   修改vpc网络 修改vpc网络名称   删除vpc网络 删除vpc网络   vpc相关命令 ...

  5. NASNet学习笔记——   核心一:延续NAS论文的核心机制使得能够自动产生网络结构;    核心二:采用resnet和Inception重复使用block结构思想;    核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。

    from:https://blog.csdn.net/xjz18298268521/article/details/79079008 NASNet总结 论文:<Learning Transfer ...

  6. 基于CentOS6.5下Suricata(一款高性能的网络IDS、IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐)

    不多说,直接上干货! 为什么,要写这篇论文? 是因为,目前科研的我,正值研三,致力于网络安全.大数据.机器学习研究领域! 论文方向的需要,同时不局限于真实物理环境机器实验室的攻防环境.也不局限于真实物 ...

  7. 网络知识--OSI七层网络与TCP/IP五层网络架构及二层/三层网络

    作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识. 废话不多说!下面就逐一展开对这两个网络架构知识的说明:一.OSI七层网络协议OSI是Open System Int ...

  8. 深度残差网络(DRN)ResNet网络原理

    一说起“深度学习”,自然就联想到它非常显著的特点“深.深.深”(重要的事说三遍),通过很深层次的网络实现准确率非常高的图像识别.语音识别等能力.因此,我们自然很容易就想到:深的网络一般会比浅的网络效果 ...

  9. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络(转)

     reference:https://www.cnblogs.com/kevingrace/p/5909719.html https://www.cnblogs.com/awkflf11/p/9190 ...

随机推荐

  1. [POI2012]SZA-Cloakroom

    嘟嘟嘟 一道比较有意思的dp. 这题关键在于状态的设计.如果像我一样令\(dp[i][j]\)表示选到第\(i\)个物品,\(\sum c\)能都等于\(j\)的话,那就是\(O(qnk)\)了,怒拿 ...

  2. .NET Core微服务实施之Consul服务发现与治理

    .NET Core微服务实施之Consul服务发现与治理   Consul官网:https://www.consul.io Consul下载地址:https://www.consul.io/downl ...

  3. P2257 YY的GCD--洛谷luogu

    传送门 题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻×必然不 ...

  4. Feature Extractor[SENet]

    0.背景 这个模型是<Deep Learning高质量>群里的牛津大神Weidi Xie在介绍他们的VGG face2时候,看到对应的论文<VGGFace2: A dataset f ...

  5. Django适合做大用户量的系统吗?

    分几点来答: 1. 首先,这其实是个技术选型题. 做技术选型的时候不能单纯的考虑性能,应该优先考虑业务类型,以及团队水平.另外的话,框架只是其中一环,还有配套呢. 如果是数据驱动型,尤其是要用到关系型 ...

  6. Shiro安全框架入门笔记

    入门 1.simpleRealmTest package cn.realm; import org.apache.shiro.SecurityUtils; import org.apache.shir ...

  7. 【C#复习总结】细说泛型委托

    1 前言 本系列会将[委托] [匿名方法][Lambda表达式] [泛型委托] [表达式树] [事件]等基础知识总结一下.(本人小白一枚,有错误的地方希望大佬指正) 系类1:细说委托 系类2:细说匿名 ...

  8. 移动前端webApp开发点滴积累20140629

    #移动前端webApp开发点滴积累20140629 ##关于input行内居中的问题 给input设定一个比较高的高度,在某些版本的移动设备上,文字不能垂直居中,即使设定了相同的行高也不行.(见图) ...

  9. gulp + gulp-better-rollup + rollup 构建 ES6 开发环境

    gulp + gulp-better-rollup + rollup 构建 ES6 开发环境 关于 Gulp 就不过多啰嗦了.常用的 js 模块打包工具主要有 webpack.rollup 和 bro ...

  10. Random()种子数

    Random rand =new Random(25); int i; i=rand.nextInt(100); 初始化时25并没有起直接作用,rand.nextInt(100);中的100是随机数的 ...