HPE 资深架构师刘淼-基于 DevOps、微服务及k8s的高可用架构探索与实现

唐夜云

2017/11/14 发布于 技术 分类

现代企业级高可用架构的设计和重构往往发生在一个新旧交替的复杂系统中,经常处在一个多操作系统、异构数据源,多种中间件、不同开发语言共存的场景之中。 由于技术更新速度越来越快,业务需求变化频度激增,开发部署维护的成本增加等因素,加之互联网的冲击使得用户体验更加重要的大环境之下,对高可用架构的要求越来越高。 我们在实践的过程中,结合容器化和微服务化的趋势,利用Kubernetes承载的PAAS平台提供基础服务,使得采用了Spring Cloud等微服务的实现能够专注于业务功能, 并融入了DevOps工具链与文化,为高可用性架构提供了全生命周期的助力与保证,并在具体的项目中对多网络环境以及弹性扩容需求下的高可用性架构进行了实践和探索。

文字内容
2. 基于DevOps、微服务以及k8s的高可用架构 探索与实现 刘淼 HPE DevOpsDays 2017·上海站
3. 目录 1 企业级高可用性架构的挑战 2 高可用性架构整体设计 3 Kubernetes的基础服务 4 专注于业务实现的微服务架构 5 DevOps助力全生命周期的高可用性 6 弹性扩容需求下的高可用性 7 高可用实践案例分享 DevOpsDays 2017·上海站
4. 企业级高可用性架构的挑战 地震等 不可抵 抗因素 …… 应用程 序异常 退出 服务的 连续性 操作系 统宕机 服务器 宕机 访问突 然增大 人为操 作失误 DevOpsDays 2017·上海站
5. 企业级高可用性架构的挑战 系统 复杂 速度& 稳定性 挑战 业务 多变 外部:多种OS/软硬件 内部:新旧系统并存 重构的困难 频度:对部署造成压力 扩展:按需伸缩的实际需求 变更的挑战 速度:快速的变更对应需求 稳定:服务持续稳定性要求 速度和可靠性的压力 DevOpsDays 2017·上海站
6. 目录 1 企业级高可用性架构的挑战 2 高可用性架构整体设计 3 Kubernetes的基础服务 4 专注于业务实现的微服务架构 5 DevOps助力全生命周期的高可用性 6 弹性扩容需求下的高可用性 7 高可用实践案例分享 DevOpsDays 2017·上海站
7. 高可用性架构目标 MTTF 保证业务连续性&稳定性 KPIRPO MTTR RTO 高可用指标 服务连续性 服务稳定性 … 良好扩展性 DevOpsDays 2017·上海站
8. 高可用策略&手段 横向扩 展 实时监 控 冗余 高可 用 容灾备 份 集群 服务多 重化 DevOpsDays 2017·上海站
9. 要素&原则 12 K8S 微服务 3 DevOps 服务的自愈机制 消除ETCD的单点 消除MASTER单点 可动态横向调整 …… 简化&解耦 独立部署 无状态 可回滚 …… DevOpsDays 2017·上海站 环境一致性 持续集成 持续交付 持续反馈 ……
10. 架构设计 微 业务 业务 业务 业务 ...... 业务 服务 服务 服务 服务 服务 服 务 配置 API 服务 断路 ...... 负载 中心 网关 发现 器 均衡 K 8 S Dev Ops ETCD服务 ETCD服务 ETCD服务 Node 2 KUBE-PROXY KUBELET DOCKER Master 1 (Active) APISERVER CONTROLLER-MANAGER SCHEDULER Node 2 KUBE-PROXY KUBELET DOCKER Master 2 (Standby) APISERVER CONTROLLER-MANAGER SCHEDULER Node … KUBE-PROXY KUBELET DOCKER Master 3(Standby) APISERVER CONTROLLER-MANAGER SCHEDULER Node n KUBE-PROXY KUBELET DOCKER 一致性的环境 自动化流水线 可视化仪表盘 DevOpsDays 2017·上海站
11. 目录 1 企业级高可用性架构的挑战 2 高可用性架构整体设计 3 Kubernetes的基础服务 4 专注于业务实现的微服务架构 5 DevOps助力全生命周期的高可用性 6 弹性扩容需求下的高可用性 7 高可用实践案例分享 DevOpsDays 2017·上海站
12. 高可用的K8S 动态横 向调整 多集群/ 多中心 系统状 态的监 控 服务的 自愈机 制 消除 ETCD的 单点 消除 MASTER 单点 DevOpsDays 2017·上海站 •由K8S的RC或者DaemonSet 等保证服务的自愈可用 •冗余策略消除单点,保障 ETCD和Master始终可用
13. 消除单点的ETCD 动态横 向调整 多集群/ 多中心 系统状 态的监 控 服务的 自愈机 制 消除 ETCD的 单点 消除 MASTER 单点 集群:类似ZK,使用奇数个数节点 存储:使用RAID等保证数据的稳定可靠性 ETCD服务 ETCD服务 ETCD服务 DevOpsDays 2017·上海站
14. 消除单点的Master 动态横 向调整 多集群/ 多中心 系统状 态的监 控 服务的 自愈机 制 消除 ETCD的 单点 消除 MASTER 单点 DevOpsDays 2017·上海站 Master 1 (Active) APISERVER CONTROLLERMANAGER SCHEDULER Master 2 APISERVER CONTROLLERMANAGER SCHEDULER ETCD服务 ETCD服务 ETCD服务 Node 1 PROXY KUBELET DOCKER Node … PROXY KUBELET DOCKER Master 3 APISERVER CONTROLLERMANAGER SCHEDULER Node 2 PROXY KUBELET DOCKER Node n PROXY KUBELET DOCKER
15. 高可用的K8S:监控 动态横向 调整 服务的自 愈机制 多集群/多 中心 消除ETCD的 单点 系统状态 的监控 消除 MASTER单 点 通过Zabbix等监视系统相关的系统 状况,结合业务日志,统一使用 Grafana进行业务和系统状况的监 控 DevOpsDays 2017·上海站
16. 高可用的K8S:动态横扩 动态横向 调整 服务的自 愈机制 多集群/多 中心 消除ETCD的 单点 系统状态 的监控 消除 MASTER单 点 定义指标及预定操作 定义系统资源/业务等指标 采集数据 采集系统资源/业务实时数据 监视业务状态 确认是否达到自动触发的阈值 定义指标 自动进行scale等预定操作 DevOpsDays 2017·上海站
17. 目录 1 企业级高可用性架构的挑战 2 高可用性架构整体设计 3 Kubernetes的基础服务 4 专注于业务实现的微服务架构 5 DevOps助力全生命周期的高可用性 6 弹性扩容需求下的高可用性 7 高可用实践案例分享 DevOpsDays 2017·上海站
18. 专注于业务实现的微服务架构 1 •部署独立化 2 •API规范化 3 •接口轻量化 4 ••功功能能解解耦耦&&简简化化 5 •规模小型化 6 ••服服务务可可置置换换 7 •去中心化… 服务 注册 负载 均衡 断路 器 API 网关 配置 中心 …… 业务 服务 …… 业务 服务 DevOpsDays 2017·上海站
19. 微服务:服务注册 断路器 服务发 现 配置中 心 负载均 衡 API网关 DevOpsDays 2017·上海站 服务发现: 微服务在设计上将业务功能解耦拆解成 了可独立部署小型单元,但是随着服务 的增多,没有服务发现的机制将会困难 重重。Spring Cloud中的Eureka组件则 提供了这样的一个功能,一行注解便可 开箱即用。 策略: 高可用性:适当冗余,使用多个Eureka 服务端保证服务注册不会因为服务注册 中心的Eureka停下而无法使用。
20. 微服务:负载均衡 断路器 服务发 现 配置中 心 负载均 衡 API网关 DevOpsDays 2017·上海站 负载均衡: 使用微服务的方式进行封装的无状态的 小型单元,可以非常方便地使用 Kubernetes进行横向扩展,而对横向扩 展之后的服务进行访问,保证其负载的 均衡可以使用Ribbon组件。 策略: Ø 简单轮询负 Ø 加权响应时间 Ø 最小并发请求 Ø 随机
21. 微服务:API网关 断路器 服务发 现 配置中 心 负载均 衡 API网关 DevOpsDays 2017·上海站 API网关: Zuul可以为提供身份验证/动态路由/安 全控制等诸多功能,使用Zuul作为统 一的Api网关出口进行管控,便于集成 和管理。 策略: Ø 使用统一API网关出口 Ø 使用OPEN API标准格式定义API Ø 使用Swagger进行管理
22. 微服务:配置中心 断路器 服务发 现 配置中 心 负载均 衡 API网关 DevOpsDays 2017·上海站 配置中心: 为了保证一致性的开发/测试/生产环境, 便于统一管理和修改,对整体的配置 管理引入了Spring Cloud Config。 策略: Ø 统一配置管理 Ø 统一依赖管理 Ø 结合DevOps实践方式拆分环境 Ø 按环境独立部署
23. 目录 1 企业级高可用性架构的挑战 2 高可用性架构整体设计 3 Kubernetes的基础服务 4 专注于业务实现的微服务架构 5 DevOps助力全生命周期的高可用性 6 弹性扩容需求下的高可用性 7 高可用实践案例分享 DevOpsDays 2017·上海站
24. DevOps:环境一致性 指标状 环境一 态跟踪 致性 自动化流水 线 DevOpsDays 2017·上海站 开发环境一致性:保证一致性的开发环 境,确保所有成员在一致性的环境中进 行开发,避免因各种版本不合导致的 Rework,提前引入安全扫描机制。 测试环境一致性:一致性的测试环境避 免因环境的问题出现的非缺陷性确认和 对应所需时间以及缺陷的延后出现的可 能性,提前引入安全扫描机制。 生产环境一致性:确保准生产环境能够 得到尽可能类似生产环境的测试要素, 同时避免因软硬件变动导致的各种问题。
25. DevOps:可定制流水线 指标状 环境一 态跟踪 致性 自动化流水 线 可定制的流水线提高CI/CD的效率和稳定性 代码提交 结合测试 代码检查 自动构建/ 单体测试 测试环境 部署 安全检查 可交付部件 DevOpsDays 2017·上海站
26. DevOps:可视化 指标状 环境一 态跟踪 致性 自动化流水 线 通过对软件开发全生命周期的KPI进行管 理和可视化管控。从构建到测试,从开 发到部署, 从构建频度到成功率,更加有 效的掌握整体情况,在实际的DevOps落 地实践中通过有效的可视化打通那堵看 不见的”墙”。 DevOpsDays 2017·上海站
27. 目录 1 企业级高可用性架构的挑战 2 高可用性架构整体设计 3 Kubernetes的基础服务 4 专注于业务实现的微服务架构 5 DevOps助力全生命周期的高可用性 6 弹性扩容需求下的高可用性 7 高可用实践案例分享 DevOpsDays 2017·上海站
28. 弹性扩容:策略 微服务 在容器化的基础之上,对微服务进行优化解耦,尽量 除去或者减少对横向扩容产生不利影响的要素比如有 状态的服务设计等。 DevOps K8S DevOpsDays 2017·上海站 强化业务和系统资源实时监控功能,以确保问题发生 之前有可能的途径事先做出部分判断。 保证运维操作的可回滚性,以保障问题发生之后可以 迅速恢复服务的提供。 K8S对无状态服务可以进行非常容易地横向扩展,这 建立在对现有状态的监控机制健全的前提和基础之上, 通过设定的扩容策略,在监控达到触发条件时,进行 动态弹性扩容。
29. 弹性扩容:动态实施 定义指标以及扩容策略,比如每秒 交易量达到多少笔或者资源情况达 到多少时水平扩容 •资源指标 •系统指标 •业务指标 定义 采集 •系统日志 •业务日志 •触发器 •阈值 •Pod运行数量 监视 根据已定的策略使 用K8S进行Scale横 向水平扩容 控制 •扩容指令:K8S Master发送 scale 指令进行扩容 采集业务日志以及系统日志并进行 计算和监视,已确认自动水平扩容 的触发时机 DevOpsDays 2017·上海站
30. 目录 1 企业级高可用性架构的挑战 2 高可用性架构整体设计 3 Kubernetes的基础服务 4 专注于业务实现的微服务架构 5 DevOps助力全生命周期的高可用性 6 弹性扩容需求下的高可用性 7 高可用实践案例分享 DevOpsDays 2017·上海站
31. 实践案例分享 F R 应用1 应用… 应用n O N 应用1 应用… 应用n T Tuxedo/SOA B A 应用1 C K 应用1 统一访问控制接口 文 HP 件 UX 集 HP UX 群 MC/SG 认 证 集 群 LDAP LDAP LDAP 应 HP 用 UX 集 群 HP HP UX UX MC/SG HP HP HP UX UX UX MC/SG R A C 集 群 HP UX 共有存储 应用… 应用… JP1 应用n 应用n HP HP UX UX MC/SG DevOpsDays 2017·上海站
32. 实践总结 应用级可用性 • 服务多重化 • Dummy机制实现热部 节点级可用性 • FailOver/Failback 数据中心级可用性 • 定时数据同步机制 • 少量实时数据同步 DevOpsDays 2017·上海站 资源协调 • 跨级群资源协调困难 横向扩展 • 扩容困难 数据不一致 • 物理/逻辑节点混淆 • FailOver&Failback的影响
33. 实践案例分享 DevOpsDays 2017·上海站
34. 能力开放平台双中心双活 DevOpsDays 2017·上海站
35. 双中心业务一体化监控 监控内容:业务监控、系统监控、安全监控,侧重于业务监控。 监控方案:业务监控为主,实时收 集双中心监控数据,并展现和告警。 同时安全监控主要使用漏洞检测工 具自检、不定期软件补丁升级、定 期安全扫描。 本地中心 监控目标 Web Service RDBMS Java Application Kafka Cluster Kafka Docker Infrastructure H T T OP D B C J M X Z a b b ix A g e n t Zabbix Web UI/Grafana DB Zabbix Server Alert 异地中心 监控目标 H T T Web Service OP D B RDBMS C Java J Application M X Kafka Cluster Z a Kafka b b ix A Docker g e n Infrastructure t DevOpsDays 2017·上海站
36. 动态弹性扩容自适应业务需求 天猫双十一的订单 量相当于全年其他 日的订单总合; 京东618订单量相当 于平日10倍; 苹果新机型首发当 日订单也会比平日 增长20倍以上 517电信日,订单量 增加126倍 DevOpsDays 2017·上海站
37. 实践总结 应用级可用性 • 服务多重化 • RollingUpdate 节点级可用性 • 节点存在透明化 数据中心级可用性 • 双中心双活 DevOpsDays 2017·上海站 资源协调 • 资源统一协调控制 横向扩展 • 按需动态横向扩展 一体化监控 • 系统/业务一体化监控 • 系统安全定期监控
38. 会议 培训 咨询 • 8月18日 DevOpsDays 上海 • 全年 DevOps China 巡回沙龙 • 11月17日 DevOps金融上海 DevOpsDays 2017·上海站 • EXIN DevOps Master 认证培训 • DevOps 企业内训 • DevOps 公开课 • 互联网运维培训 • 企业DevOps 实践咨询 • 企业运维咨询 商务经理:刘静女士 电话 / 微信:13021082989 邮箱:liujing@greatops.com
39. Thanks 荣誉出品 高效运维社区 国际最佳实践管理联盟 DevOpsDays 2017·上海站