Istio(十):istio多集群部署模式
一.模块概览
在本模块中,我们将了解在多个集群上安装 Istio 的不同方法。当决定在多集群场景下运行 Istio 时,有多种组合需要考虑。在高层次上,我们需要决定以下几点:
- 单个集群或多个集群
- 单个网络或多个网络
- 单个控制平面或多个控制平面
- 单个网格或多个网格
上述模式的任何组合都是可能的,然而,并非所有的模式都有意义。在本模块中,我们将重点讨论涉及多个集群的场景。
二.多集群部署
2.1 多集群部署
多集群部署(两个或更多的集群)为我们提供了更大程度的隔离和可用性,但我们付出的代价是增加了复杂性。如果场景要求高可用性(HA),我们将不得不在多个区域和地区部署集群。
我们需要做出的下一个决定是,决定我们是否要在一个网络内运行集群,或者是否要使用多个网络。
下图显示了一个多集群方案(集群 A、B 和 C),跨两个网络部署。
多集群服务网格图如下:

2.2 网络部署模式
当涉及到多个网络时,集群内部运行的工作负载必须使用 Istio 网关才能到达其他集群的工作负载。使用多个网络可以实现更好的容错和网络地址的扩展。
多网络服务网格图如下:

2.3 控制平面部署模型
Istio 服务网格使用控制平面来配置网格内工作负载之间的所有通信。工作负载所连接的控制平面取决于其配置。
在最简单的情况下,我们有一个服务网格,在一个集群中只有一个控制平面。这就是我们在本课程中一直使用的配置。
共享控制平面模型涉及多个集群,控制平面只在一个集群中运行。该集群被称为主集群,而部署中的其他集群被称为远程集群。这些集群没有自己的控制平面,相反,它们从主集群共享控制平面。
共享的控制平面图如下:

另一种部署模式是,我们把所有的集群都视为由外部控制平面控制的远程集群。这使我们在控制平面和数据平面之间有了完全的分离。一个典型的外部控制平面的例子是当一个云供应商在管理它。
为了实现高可用性,我们应该在多个集群、区域或地区部署多个控制平面实例,如下图所示。
多个控制平面图如下:

这种模式提供了更好的可用性和配置隔离。如果其中一个控制平面变得不可用,那么停机就只限于这一个控制平面。为了改善这一点,你可以实施故障转移,并配置工作负载实例,在发生故障时连接到另一个控制平面。
为了达到最高的可用性,我们可以在每个集群内部署一个控制平面。
2.4 网格部署模型
到目前为止,我们所看的所有图表和场景都是使用单一的网格。在单网格模型中,所有的服务都在一个网格中,不管它们跨越多少集群和网络。
将多个网格联合起来的部署模型被称为多网格部署。在这种模式下,服务可以跨网格边界进行通信。该模型为我们提供了一个更清晰的组织边界,更强的隔离性,并允许我们重复使用服务名称和命名空间。
当联合两个网格时,每个网格可以暴露一组服务和身份,所有参与的网格都可以识别这些身份。为了实现跨网格的服务通信,我们必须在两个网格之间实现信任。信任可以通过向网格导入信任包和为这些身份配置本地策略来建立。
2.5 租户模式
租户是一组共享工作负载的共同访问权和权限的用户。租户之间的隔离是通过网络配置和策略完成的。Istio 支持命名空间和集群租户。请注意,我们在这里谈论的租户是软多租户,而不是硬租户。当多个租户共享同一个 Istio 控制平面时,没有保证对诸如噪音邻居问题的保护。
在一个网格中,Istio 使用命名空间作为租户的单位。如果使用 Kubernetes,我们可以为每个命名空间的工作负载部署授予权限。默认情况下,来自不同命名空间的服务可以通过完全限定名相互通信。
在安全模块中,我们已经学会了如何使用授权策略来提高隔离度,并限制只对适当的调用者进行访问。
在多集群部署模型中,每个集群中共享相同名称的命名空间被认为是同一个命名空间。集群 A 中 default 命名空间的 Customers 服务与集群 B 中 default 命名空间中的 Customers 服务指的是同一个服务。当流量被发送到 Customers 服务时,负载均衡在两个服务的合并端点上进行,如下图所示。
多群集共享命名空间如下图所示:

为了在 Istio 中配置集群租约,我们需要将每个集群配置为一个独立的服务网格。网格可以由不同的团队控制和操作,我们可以将网格连接到一起,形成一个多网格部署。如果我们使用与之前相同的例子,在集群 A 的 default 命名空间中运行的服务 Customers 与集群 B 的 default 命名空间中的服务 Customers 所指的不是同一个服务。
租户的另一个重要功能是隔离不同租户的配置。目前,Istio 并没有解决这个问题,不过,它通过在命名空间级别上的范围配置来尝试解决这个问题。
2.6 最佳多集群部署
最佳的多集群部署拓扑结构是每个集群都有自己的控制平面。对于正常的服务网格部署规模,建议你使用多网格部署,并有一个单独的系统在外部协调网格。一般建议总是在集群间使用入口网关,即使它们在同一个网络中。直接的 pod 到 pod 的连接需要在多个集群之间填充终端数据,这可能会使事情变得缓慢和复杂。一个更简单的解决方案是让流量通过跨集群的入口来流动。
Istio(十):istio多集群部署模式的更多相关文章
- k8s集群部署(3)
一.利用ansible部署kubernetes集群环境准备 基于二进制方式部署和利用ansible-playbook实现自动化:既提供一键安装脚本,也可以分步执行安装各个组件,同时讲解每一步主要参数配 ...
- 第3篇K8S集群部署
一.利用ansible部署kubernetes准备: 集群介绍 本系列文档致力于提供快速部署高可用k8s集群的工具,并且也努力成为k8s实践.使用的参考书:基于二进制方式部署和利用ansible- ...
- RocketMQ的高可用集群部署
RocketMQ的高可用集群部署 标签(空格分隔): 消息队列 部署 1. RocketMQ 集群物理部署结构 Rocket 物理部署结构 Name Server: 单点,供Producer和Cons ...
- k8s集群部署(2)
一.利用ansible部署kubernetes准备阶段 1.集群介绍 基于二进制方式部署k8s集群和利用ansible-playbook实现自动化:二进制方式部署有助于理解系统各组件的交互原理和熟悉组 ...
- (十)RabbitMQ消息队列-高可用集群部署实战
原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...
- Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived
文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...
- kafka 集群部署 多机多broker模式
kafka 集群部署 多机多broker模式 环境IP : 172.16.1.35 zookeeper kafka 172.16.1.36 zookeeper kafka 172.16 ...
- RabbitMQ消息队列(十)-高可用集群部署实战
前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. RabbitMQ集群基本概念 Rabbit模式大概分为以下三种 ...
- 一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)
1)集群规划:主机名 IP 安装的软件 运行的进程master 192.168.199.130 jdk.hadoop ...
- Scala进阶之路-Spark独立模式(Standalone)集群部署
Scala进阶之路-Spark独立模式(Standalone)集群部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们知道Hadoop解决了大数据的存储和计算,存储使用HDFS ...
随机推荐
- Python 数组和列表:创建、访问、添加和删除数组元素
Python 没有内置支持数组,但可以使用 Python 列表来代替. 数组 本页将向您展示如何使用列表作为数组,但要在 Python 中使用数组,您需要导入一个库,比如 NumPy 库.数组用于在一 ...
- .NET周刊【4月第1期 2024-04-07】
国内文章 一个程序员的编年史 https://www.cnblogs.com/lunacy/p/18117213 作者拥有15年软件开发经验,曾在多家公司工作,项目和团队起伏充满变数.2007年,在太 ...
- 实时数仓构建:Flink+OLAP查询的一些实践与思考
今天是一篇架构分享内容. 1.概述 以Flink为主的计算引擎配合OLAP查询分析引擎组合进而构建实时数仓,其技术方案的选择是我们在技术选型过程中最常见的问题之一.也是很多公司和业务支持过程中会实实在 ...
- 跨域是什么?Vue项目中你是如何解决跨域的呢?
一.跨域是什么 跨域本质是浏览器基于同源策略的一种安全手段 同源策略(Sameoriginpolicy),是一种约定,它是浏览器最核心也最基本的安全功能 所谓同源(即指在同一个域)具有以下三个相同点 ...
- 持续定义Saas模式云数据仓库+BI
云数据仓库概述 今天和大家一起探讨一下我们Saas模式下云数据仓库加上商业智能BI能有什么新的东西出来.我们先来看一下云数据仓库的一些概述.预测到2025年, 全球数据增长至175ZB, 中国数据量增 ...
- 10亿+文件数压测,阿里云JindoFS轻松应对
简介: Apache Hadoop FileSystem (HDFS) 是被广为使用的大数据存储方案,其核心元数据服务 NameNode 将全部元数据存放在内存中,因此所能承载的元数据规模受限于内存, ...
- MaxCompute执行引擎核心技术DAG揭秘
简介: 作为业界少有的EB级数据分布式平台,MaxCompute每天支撑上千万个分布式作业的运行.这些作业特点各异,既有包含数十万计算节点的超大型作业,也有中小规模的分布式作业.不同用户对于不同规模 ...
- 当微服务遇上 Serverless | 微服务容器化最短路径,微服务 on Serverless 最佳实践
简介: 阿里云Serverless应用引擎(SAE)初衷是让客户不改任何代码,不改变应用部署方式,就可以享受到微服务+K8s+Serverless的完整体验,开箱即用免运维. 前言 微服务作为一种更 ...
- [FAQ] 为什么部署到 github pages 时自定义域名总失效 (push-dir)
Github_Pages 能方便我们部署静态页面,并且还支持 CNAME 自定义域名. $ yarn add --dev push-dir $ xxx build $ push-dir --dir=d ...
- WPF 编写一个测试 WM_TOUCH 触摸消息延迟的应用
我听说在 Win10 到 Win11 的系统版本左右,微软加上了一大波触摸性能优化,准确来说是 HID 性能优化.我想测试一下在这些系统下,采用从 Windows 消息接收到 WM_TOUCH 触摸消 ...