刘朝辉 liuzhaohui@camera360
Transcript of 刘朝辉 liuzhaohui@camera360
从私有云到AWS的无缝迁移刘朝辉
01
我们是谁
• 品果科技
• 专注于移动影像服务
• 全球超过4.5亿用户
• 多款app产品
宝贝相册
…
02
提纲
目标
抽象
具象
细节
风险
03
目标
私有云
AWS
现状
目标
业务复制
流量切换
无缝迁移
04
业务抽象
Load balancer
End user
Service logic
Data storage
Service
05
目标分解
Load balancer
End user
Service logic
Data storage
Service
Load balancer
Service logic
Data storage
私有云 AWS
Step 1.1
Step 2
Step 1.2
Step 0
End user
Step 3
06
业务具象化
Nginx
End user
PHP
Mongodb+redis
Service
ELB
Nginx+PHP
Mongodb+redis
私有云 AWS
Step 1.1
Step 2
Step 1.2
Step 0
End user
Step 3
07
细节和风险
• 依赖业务
• 业务逻辑+负载均衡
• 数据存储
• 流量切换
• 善后工作
08
Step0--依赖业务
• 响应变慢/超时问题
–跨IDC延迟变大、网络不稳定
–业务是否容忍
• 解决办法
–依赖业务迁移(避免)
–改造业务(容忍)
09
Step1--业务逻辑+负载均衡
• 迁移部署除数据外的所有功能– Nginx+PHP+ELB部署并测试
– EC2(c3系列),AMI,VPC,subnet
– Redis缓存先部署上(空)
–脚本/定时任务,根据业务情况而定
• ELB– TCP转发,开启Proxy Protocol支持携带用户IP
– HTTP转发,X-Forwarded-For
–支持SSL/HTTPS,需要上传证书
10
中间状态1
Nginx
End user
PHP Service
ELB
Nginx+PHP
私有云 AWS
testing
redis Mongodb redis
EC2
11
Step2--数据存储
• Mongodb
–主从复制
– EC2(r3系列), EBS(SSD)
–数据量、网络质量/带宽
– sharding
• 建议提前测试
–数据复制时长
–现有系统压力
12
Mongodb sharding
13
Step2--数据存储
• Shard–独立复制每个shard
– AWS这边节点可先设置优先级0(不会被选为主)
• Config server–按照配置列表里逆序迁移(stoprsyncstart
new)
–最好不要变更机器名(迁移步骤复杂)
• 其他–期间最好关闭Balancing
14
Step2--数据存储
• 缓存失效
–对缓存的依赖程度(响应时间、命中率)
–数据库承载能力(雪崩)
• 根据情况
–直接数据库扛
–缓存迁移
–预热
15
中间状态2-1
Nginx
End user
PHP Service
ELB
Nginx+PHP
私有云 AWS
testing
redisMongodb(master)
redisMongodb
(slave)
EC2
16
中间状态2-2
Nginx
End user
PHP Service
ELB
Nginx+PHP
私有云 AWS
testing
redisMongodb
(slave)redis
Mongodb(master)
EC2
17
Step3--流量切换
• 修改DNS解析
–如果做了CDN,可能需要CDN修改回源
• 原IDC做反向代理(建议)
–解决DNS生效长尾
18
中间状态3
Nginx
End user
PHP Service
ELB
Nginx+PHP
私有云 AWS
redisMongodb
(slave)redis
Mongodb(master)
End user
转发
DNS切换
EC2
19
善后工作
• 密切观察
–压力、日志、统计、反馈
• 定时任务
• 清理资源
20
最终状态
Service
ELB
Nginx+PHP
AWS
redisMongodb
End user
EC2
21
TIPS
• 做好充足准备
–技术调研
–实地测试
–详细计划
–步骤细化到命令
–关键点做预案
• 还是心里没底?
–联系AWS技术人员