cloud-artifact.adoc 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // tag::main[]
  2. = 云环境架构
  3. == 能力
  4. image::cloud/cloud-function.png[cloud-function]
  5. 平台应有能力
  6. image::cloud/cloud-platform.png[cloud-platform]
  7. * SaaS
  8. ** 最上层专注于业务的系统
  9. * aPaaS
  10. ** 自建基础应用服务平台,如网关、用户中心、认证中心、支付中心等共性业务组成的平台
  11. * iPaaS
  12. 自建基础环境:中间件、Runtime、监控系统、日志系统等组成的基础设施平台
  13. * IaaS
  14. 依赖第三方:阿里云、华为云、腾讯云等,包含服务器、存储、网络、操作系统
  15. 另外数据达到一定量,考虑自建数据平台 DaaS
  16. == 云原生系统的设计理念 footnote:[云原生系统的设计理念, https://jimmysong.io/kubernetes-handbook/cloud-native/cloud-native-philosophy.html]
  17. * 面向分布式设计(Distribution)
  18. ** 容器、微服务、API 驱动的开发
  19. * 面向配置设计(Configuration)
  20. ** 一个镜像,多个环境配置
  21. * 面向韧性设计(Resistancy)
  22. ** 故障容忍和自愈
  23. * 面向弹性设计(Elasticity)
  24. ** 弹性扩展和对环境变化(负载)做出响应
  25. * 面向交付设计(Delivery)
  26. ** 自动拉起,缩短交付时间
  27. * 面向性能设计(Performance)
  28. ** 响应式,并发和资源高效利用
  29. * 面向自动化设计(Automation)
  30. ** 自动化的 DevOps
  31. * 面向诊断性设计(Diagnosability)
  32. ** 集群级别的日志、metric 和追踪
  33. * 面向安全性设计(Security)
  34. ** 安全端点、API Gateway、端到端加密
  35. 问题&解决方案
  36. |===
  37. | 问题 | 解决方案
  38. | Session | 分布式缓存
  39. | 缓存 | 分布式缓存 Redis
  40. | Queen | 消息中间件
  41. | 日志 | EFK方案,中心存储和查询
  42. | 配置文件 | 配置中间件:apollo、nacos、configServer
  43. | 本地持久化数据 | 第三方分布式存储
  44. | IP会变 | 服务寻址
  45. | 长连接中断 | 重连机制
  46. |===
  47. === 日志采集 footnote:[日志采集, https://blog.csdn.net/macalzheng/article/details/104778439]
  48. == 部署:k8s
  49. image::cloud/k8s/k8s.png[k8s]
  50. . *ControllerManage* 负责维护集群的状态,比如故障检测,扩缩容,滚动更新等等。
  51. . *Scheduler* 负责资源的调度,按照预定的策略把pod调度到指定的node节点
  52. . *ETCD* 用做已执行存储,pod, service的集群等信息,k8s需要持久化的数据都存储在这个上边。
  53. . *Kubele* 负责维护当前节点上的容器的生命和 volumes,网络
  54. . 每个 *Node* 上可以运行一个 *kube-proxy*,负责 service 提供内部的服务发现和负载均衡,为 service方法做个落地的功能。
  55. . *kube-dns* 负责整个集群的dns服务,这个组件不是必须的,一般通过名字访问比较方便。
  56. . *dashboard* 集群数据的GUI界面。
  57. == 监控 & 报警:Prometheus 体系
  58. Prometheus的基本原理是通过HTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虛拟化环境监控系统,比如 VM、 Docker、 Kubernetes等。
  59. === 监控数据可视化 Grafana
  60. == 运维等级
  61. === 阶段一
  62. * 中间件、容器实例运行状态监控,服务可用性监控,异常事件联动
  63. * 实现容器组件和中间件实例的监控指标采集
  64. * 能够调用 prometheus接口查询组件实例监控指标,并展示
  65. * 部署拨测服务,编写脚本,对组件服务可用性进行探测
  66. * 在prometheus配置事件联动短信、邮件
  67. === 阶段二
  68. * 服务业务指标监控
  69. * 高可用集群状态监控
  70. * 日志采集查询
  71. * 日志调用链
  72. * 用户行为分析
  73. === 阶段三
  74. 服务节点动态伸缩,服务补丁集升级、应用灰度发布
  75. === 阶段四
  76. 中间件不停机升级
  77. // end::main[]