《2019年用Kong构建混合环境下的服务网络.pdf》由会员分享,可在线阅读,更多相关《2019年用Kong构建混合环境下的服务网络.pdf(18页珍藏版)》请在三个皮匠报告上搜索。
1、用Kong构建混合环境下的服务网络独立顾问/PolarisTech联合创始人目录 分布式环境与服务网络 KongNginx家族小伙伴 基础的基础LBaaS 南北向与东西向流量 数据平面:sidecar与代理 控制平面:多租户、配置和缓存 部署环境:物理机、云、虚拟化、容器 跨微服务平台 监控与服务质量引言随着微服务架构的流行,服务之间流量的管理变成了新的问题和话题。为了解决这类问题,以Istio为代表的开源软件提出了service mesh的概念,第一次把这个领域的问题、功能、解决办法做了汇总,完成了这个领域概念的标准化和体系化的工作。目前大多数的service mesh解决的问题都是依赖或者
2、绑定到微服务平台和框架上(比如Istio构建在K8s之上)。但是现实当中,使用环境往往是复杂的,尤其是企业环境,一般都包含多个版本、多种微服务平台(比如K8s,Dubbo,Spring Cloud等);同时部署环境也涵盖了公有云、虚拟机、物理机、容器等;在地域上也有着跨数据中心的需求。一起了解如何基于Kong来解决这些问题。分布式环境与服务网络问题:开通全链路访问是一个繁琐、容易出错的过程 访问规则的管理复杂、冗余、过期配置大量存在 防火墙无法有效实现应用层访问控制 缺乏应用层的统一视图 跨集群的服务间依赖关系管理复杂现状:分布式从一种架构选择,变成一种客观存在 多平台:Spring,Dubb
3、o,K8S 多堆栈:Java,Node.js,PHP,Python 多中心:两地三中心 传统系统:Core Banking、ESB、CRM、ERP“随着Service Mesh概念的提出和实践,分布式架构从“功能导向”向“服务质量导向”演化。”化繁为简,分而治之数据中心-1数据中心-2 统一数据中心的入口 统一数据中心的出口 统一集群的入口 统一集群的出口应用层解决框架层解决协议层解决更通用,更兼容Nginx家族:Nginx-OpenResty-Kong Lua开发,插件体系 采用数据库维护配置一致 高效、高速、高稳定 GitHub 20K+starKongNginx家族小伙伴春哥MarcoK
4、ong认证授权速控流控NginxLuaDAOCache软负载即服务 优良的LB是流量管理的基础 高吞吐、高可靠 扩容水平扩展 便捷的部署 REST 接口,基础设施可编程 配置同步 与已有体系集成监控、日志、跟踪 功能可扩展Route/插件Route/插件Route/插件Route/插件协议转换服务/插件分支/插件分支/插件服务实例服务实例服务实例服务实例Tips:HTTP为REQ/RES提供了标准模型 充分利用HTTP Keep-Alive 根据网络条件使用HTTP短连接南北流量:Ingress Egress南北向和东西向流量东西流量:服务调用 条件路由 全局路由服务管理:注册 发现 发布(蓝
5、绿/滚动)断路保护:熔断 降级 限速Spring CloudEurekaDubboZKK8setcd传统应用DNS统一配置/网关级联Tips:通过请求信息匹配规则 匹配和规则区分开 复用东西/南北通用规则Sidecar(istio):两次代理 Iptables拦截数据平面:Sidecar与代理代理:HTTP Socks5MS-AMS-BEnvoyEnvoyMixer(Policy/Rule)容器?Linux?物理机/容器/虚拟机 Linux/WindowsMS-AMS-BKong/HTTP(Policy/Rule)BC/Socks5(Policy/Rule)减少一次代理 配置同步更简单 无需i
6、ptablesTips:环境变量可以设置代理 Socks5支持域名和认证 全局化配置:不再“铁路警察各管一段”多租户与自服务:尽量授权给服务维护者做配置变更 自动化:从服务配置中心获取配置 可视化:操作可视化,结果可视化 流程:加入必要的审批和review 版本化:配置的回溯能力控制平面:多租户、配置和缓存SpringDubboK8sLegacyetcdDNSEurekaZookeeperGUIRESTCLIBotDB可视化GrafanaBI Tools监控PrometheusZabbix跟踪Zipkin*SkyWalking门户DrupalLiferayGWGWGWGW控制平面Tips:配置
7、用数据库 执行时用缓存 统一建模部署方式:yum install ;systemctl start docker run kubectl-f ansible-playbook 部署环境:物理机、云、虚拟化、容器好处:兼容既有的知识体系 配置不需要变成一门新的“语言”No*over*configuration 一致的方式Tips:Ansible具有很好的跨平台能力 脚本化、版本化、留日志跨微服务平台:Spring,Dubbo,K8sTips:全局规划内部域名内部域名 用域名,但是不用域名服务器 微服务注册信息-路由规则问题:不同的配置中心,信息一致化的管理 私有网络内的互通 网络之间的互通 跨集
8、群的访问控制 协议与数据格式EurekaDNS注册/发现/路由统一模型监控与服务质量TIPS:Metrics的推拉结合处理 分层采集、分层处理 微缩的“边缘计算”核心:服务质量是*目的*度量、监控、治理 微管理与宏观管理结合 海量指标、实时监控MS-AMS-B网关采集与处理:实时/一次计算/生成事件Prometheus/时序数据库/告警展示(Grafana/BI)QoS规则配置整体拓扑服务集群服务集群服务集群服务集群网关Kong+BC网关Kong+BC网关Kong+BC网关Kong+BC统一调度/规则管理/集群间路由Metrics汇总/事件管理UI(REST/CLI/Portal)组件:Kon
9、g:HTTP流量管理 BC-PX:非HTTP流量管理 BC-MON:实时监控 BC:统一调度 BC-BOT:自动化配置 Prometheus:汇总监控 Grafana/BI:展示 Liferay/Drupal:门户 PostgreSQL:All-in-one DataStoreBC-*应用流量管理套件BC-*Socks5 ServerSocks5 ClientMetrics实时计算注册中心调度C+Lua/Node.jsRestQLCacheKongPortal插件全局调度器$java Dhttp.proxyHost$java DsocksProxyHost$bc-px java 安全Sec F
10、irst应用层安全的采集和实施点 全链路加密(如果需要)字段加解密(如果需要)每段链路的身份验证(如果需要)每段链路的访问控制(如果需要)安全事件识别与告警(暴力破解、薅羊毛)基于审批的工作流性能 HTTP Keep-Alive:长连接有效保障了网关间数据传输效率 Socks5:多一次建立连接操作;连接建立后,性能无损耗 流式的格式转换 策略、路由和配置信息在网关内存缓存 无阻塞操作 非控制操作采用旁路处理 可以基于域名路由,但是不做域名解析扩展与扩容扩展:C+扩展模块 协议适配、编解码、格式 Lua脚本code snippet Node.js扩展API Directus Node.js呈现 Gatsby 监控集成 Prometheus Tracing集成 zipkin,jeager,skywalking Portal集成 Liferay,Drupal IDM集成扩容:Ansible,加节点,加集群控制平面Node.jsBC-ProxyC+/LuaKongLuaUI层Node.js、Portal插件、REST API