云服务器内容精选

  • 什么是云容器实例? 云容器实例(Cloud Container Instance,CCI)服务提供 Serverless Container(无服务器容器)引擎,让您无需创建和管理服务器集群即可直接运行容器。 Serverless 是一种架构理念,是指不用创建和管理服务器、不用担心服务器的运行状态(服务器是否在工作等),只需动态申请应用需要的资源,把服务器留给专门的维护人员管理和维护,进而专注于应用开发,提升应用开发效率、节约企业IT成本。传统上使用 Kubernetes 运行容器,首先需要创建运行容器的 Kubernetes 服务器集群,然后再创建容器负载。云容器实例的 Serverless Container 就是从使用角度,无需创建、管理 Kubernetes 集群,也就是从使用的角度看不见服务器(Serverless),直接通过控制台、kubectl、Kubernetes API 创建和使用容器负载,且只需为容器所使用的资源付费。 云容器实例有如下功能: 自动化持续交付 一键运行DevOps的CI流程生成的容器镜像,保障CI/CD流程全自动化。 应用运行时全托管 提供无状态工作负载的运行时托管,保障应用稳定运行。 极速弹性扩缩容 支持用户自定义弹性伸缩策略,且能在1秒内实现弹性扩缩容。 应用高可用保障 支持多实例同时对外提供服务,保障用户业务高可靠,并提供全局负载均衡能力。 应用容器状态监控 提供容器健康状态检查和容器的运行时指标实时监控。 数据持久化存储 支持挂载网络存储卷,保障业务数据持久化存储。 父主题: 基本概念类
  • 分区表(母表) 实际对用户体现的表,用户对该表进行常规DML语句的增、删、查、改操作。通常使用在建表DDL语句显式的使用PARTITION BY语句进行定义,创建成功以后在pg_class表中新增一个entry,并且parttype列内容为'p'(一级分区)或者's'(二级分区),表明该entry为分区表的母表。分区母表通常是一个逻辑形态,对应的表文件并不存放数据。 示例1:t1_hash为一个一级分区表,分区类型为hash: gaussdb=# CREATE TABLE t1_hash (c1 INT, c2 INT, c3 INT) PARTITION BY HASH(c1) ( PARTITION p0, PARTITION p1, PARTITION p2, PARTITION p3, PARTITION p4, PARTITION p5, PARTITION p6, PARTITION p7, PARTITION p8, PARTITION p9 ); gaussdb=# \d+ t1_hash Table "public.t1_hash" Column | Type | Modifiers | Storage | Stats target | Description --------+---------+-----------+---------+--------------+------------- c1 | integer | | plain | | c2 | integer | | plain | | c3 | integer | | plain | | Partition By HASH(c1) Number of partitions: 10 (View pg_partition to check each partition range.) Has OIDs: no Options: orientation=row, compression=no, storage_type=USTORE, segment=off --查询t1_hash分区类型 gaussdb=# SELECT relname, parttype FROM pg_class WHERE relname = 't1_hash'; relname | parttype ---------+---------- t1_hash | p (1 row) --清理示例 gaussdb=# DROP TABLE t1_hash; 示例2:t1_sub_rr为一个二级分区表,分区类型为range-list: gaussdb=# CREATE TABLE t1_sub_rr ( c1 INT, c2 INT, c3 INT ) PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2) ( PARTITION p_2021 VALUES LESS THAN (2022) ( SUBPARTITION p_2021_1 VALUES (1), SUBPARTITION p_2021_2 VALUES (2), SUBPARTITION p_2021_3 VALUES (3) ), PARTITION p_2022 VALUES LESS THAN (2023) ( SUBPARTITION p_2022_1 VALUES (1), SUBPARTITION p_2022_2 VALUES (2), SUBPARTITION p_2022_3 VALUES (3) ), PARTITION p_2023 VALUES LESS THAN (2024) ( SUBPARTITION p_2023_1 VALUES (1), SUBPARTITION p_2023_2 VALUES (2), SUBPARTITION p_2023_3 VALUES (3) ), PARTITION p_2024 VALUES LESS THAN (2025) ( SUBPARTITION p_2024_1 VALUES (1), SUBPARTITION p_2024_2 VALUES (2), SUBPARTITION p_2024_3 VALUES (3) ), PARTITION p_2025 VALUES LESS THAN (2026) ( SUBPARTITION p_2025_1 VALUES (1), SUBPARTITION p_2025_2 VALUES (2), SUBPARTITION p_2025_3 VALUES (3) ), PARTITION p_2026 VALUES LESS THAN (2027) ( SUBPARTITION p_2026_1 VALUES (1), SUBPARTITION p_2026_2 VALUES (2), SUBPARTITION p_2026_3 VALUES (3) ) ); gaussdb=# \d+ t1_sub_rr Table "public.t1_sub_rr" Column | Type | Modifiers | Storage | Stats target | Description --------+---------+-----------+---------+--------------+------------- c1 | integer | | plain | | c2 | integer | | plain | | c3 | integer | | plain | | Partition By RANGE(c1) Subpartition By LIST(c2) Number of partitions: 6 (View pg_partition to check each partition range.) Number of subpartitions: 18 (View pg_partition to check each subpartition range.) Has OIDs: no Options: orientation=row, compression=no, storage_type=USTORE, segment=off --查询t1_sub_rr分区类型 gaussdb=# SELECT relname, parttype FROM pg_class WHERE relname = 't1_sub_rr'; relname | parttype -----------+---------- t1_sub_rr | s (1 row) --清理示例 gaussdb=# DROP TABLE t1_sub_rr; 父主题: 基本概念
  • 分区表(母表) 实际对用户体现的表,用户对该表进行常规DML语句的增、删、查、改操作。通常使用在建表DDL语句显式的使用PARTITION BY语句进行定义,创建成功以后在pg_class表中新增一个entry,并且parttype列内容为'p',表明该entry为分区表的母表。分区母表通常是一个逻辑形态,对应的表文件并不存放数据。 示例1:t1_hash为一个分区表,分区类型为hash: gaussdb=# CREATE TABLE t1_hash (c1 INT, c2 INT, c3 INT) PARTITION BY HASH(c1) ( PARTITION p0, PARTITION p1, PARTITION p2, PARTITION p3, PARTITION p4, PARTITION p5, PARTITION p6, PARTITION p7, PARTITION p8, PARTITION p9 ); gaussdb=# \d+ t1_hash Table "public.t1_hash" Column | Type | Modifiers | Storage | Stats target | Description --------+---------+-----------+---------+--------------+------------- c1 | integer | | plain | | c2 | integer | | plain | | c3 | integer | | plain | | Partition By HASH(c1) Number of partitions: 10 (View pg_partition to check each partition range.) Distribute By: HASH(c1) Location Nodes: ALL DATANODES Has OIDs: no Options: orientation=row, compression=no --查询t1_hash分区类型 gaussdb=# SELECT relname, parttype FROM pg_class WHERE relname = 't1_hash'; relname | parttype ---------+---------- t1_hash | p (1 row) --删除t1_hash。 gaussdb=# DROP TABLE t1_hash; 父主题: 基本概念
  • 分区表(母表) 实际对用户体现的表,用户对该表进行常规DML语句的增、删、查、改操作。通常使用在建表DDL语句显式的使用PARTITION BY语句进行定义,创建成功以后在pg_class表中新增一个entry,并且parttype列内容为'p',表明该entry为分区表的母表。分区母表通常是一个逻辑形态,对应的表文件并不存放数据。 示例:t1_hash为一个分区表,分区类型为hash: gaussdb=# CREATE TABLE t1_hash (c1 INT, c2 INT, c3 INT) PARTITION BY HASH(c1) ( PARTITION p0, PARTITION p1, PARTITION p2, PARTITION p3, PARTITION p4, PARTITION p5, PARTITION p6, PARTITION p7, PARTITION p8, PARTITION p9 ); gaussdb=# \d+ t1_hash Table "public.t1_hash" Column | Type | Modifiers | Storage | Stats target | Description --------+---------+-----------+---------+--------------+------------- c1 | integer | | plain | | c2 | integer | | plain | | c3 | integer | | plain | | Partition By HASH(c1) Number of partitions: 10 (View pg_partition to check each partition range.) Distribute By: HASH(c1) Location Nodes: ALL DATANODES Has OIDs: no Options: orientation=row, compression=no --查询t1_hash分区类型。 gaussdb=# SELECT relname, parttype FROM pg_class WHERE relname = 't1_hash'; relname | parttype ---------+---------- t1_hash | p (1 row) --删除t1_hash。 gaussdb=# DROP TABLE t1_hash; 父主题: 基本概念
  • 分区表(母表) 实际对用户体现的表,用户对该表进行常规DML语句的增、删、查、改操作。通常使用在建表DDL语句显式的使用PARTITION BY语句进行定义,创建成功以后在pg_class表中新增一个entry,并且parttype列内容为'p'(一级分区)或者's'(二级分区),表明该entry为分区表的母表。分区母表通常是一个逻辑形态,对应的表文件并不存放数据。 示例1:t1_hash为一个一级分区表,分区类型为hash: gaussdb=# CREATE TABLE t1_hash (c1 INT, c2 INT, c3 INT) PARTITION BY HASH(c1) ( PARTITION p0, PARTITION p1, PARTITION p2, PARTITION p3, PARTITION p4, PARTITION p5, PARTITION p6, PARTITION p7, PARTITION p8, PARTITION p9 ); gaussdb=# \d+ t1_hash Table "public.t1_hash" Column | Type | Modifiers | Storage | Stats target | Description --------+---------+-----------+---------+--------------+------------- c1 | integer | | plain | | c2 | integer | | plain | | c3 | integer | | plain | | Partition By HASH(c1) Number of partitions: 10 (View pg_partition to check each partition range.) Has OIDs: no Options: orientation=row, compression=no, storage_type=USTORE, segment=off --查询t1_hash分区类型 gaussdb=# SELECT relname, parttype FROM pg_class WHERE relname = 't1_hash'; relname | parttype ---------+---------- t1_hash | p (1 row) gaussdb=# DROP TABLE t1_hash; 示例2:t1_sub_rr为一个二级分区表,分区类型为range-list: gaussdb=# CREATE TABLE t1_sub_rr ( c1 INT, c2 INT, c3 INT ) PARTITION BY RANGE (c1) SUBPARTITION BY LIST (c2) ( PARTITION p_2021 VALUES LESS THAN (2022) ( SUBPARTITION p_2021_1 VALUES (1), SUBPARTITION p_2021_2 VALUES (2), SUBPARTITION p_2021_3 VALUES (3) ), PARTITION p_2022 VALUES LESS THAN (2023) ( SUBPARTITION p_2022_1 VALUES (1), SUBPARTITION p_2022_2 VALUES (2), SUBPARTITION p_2022_3 VALUES (3) ), PARTITION p_2023 VALUES LESS THAN (2024) ( SUBPARTITION p_2023_1 VALUES (1), SUBPARTITION p_2023_2 VALUES (2), SUBPARTITION p_2023_3 VALUES (3) ), PARTITION p_2024 VALUES LESS THAN (2025) ( SUBPARTITION p_2024_1 VALUES (1), SUBPARTITION p_2024_2 VALUES (2), SUBPARTITION p_2024_3 VALUES (3) ), PARTITION p_2025 VALUES LESS THAN (2026) ( SUBPARTITION p_2025_1 VALUES (1), SUBPARTITION p_2025_2 VALUES (2), SUBPARTITION p_2025_3 VALUES (3) ), PARTITION p_2026 VALUES LESS THAN (2027) ( SUBPARTITION p_2026_1 VALUES (1), SUBPARTITION p_2026_2 VALUES (2), SUBPARTITION p_2026_3 VALUES (3) ) ); gaussdb=# \d+ t1_sub_rr Table "public.t1_sub_rr" Column | Type | Modifiers | Storage | Stats target | Description --------+---------+-----------+---------+--------------+------------- c1 | integer | | plain | | c2 | integer | | plain | | c3 | integer | | plain | | Partition By RANGE(c1) Subpartition By LIST(c2) Number of partitions: 6 (View pg_partition to check each partition range.) Number of subpartitions: 18 (View pg_partition to check each subpartition range.) Has OIDs: no Options: orientation=row, compression=no, storage_type=USTORE, segment=off --查询t1_sub_rr分区类型 gaussdb=# SELECT relname, parttype FROM pg_class WHERE relname = 't1_sub_rr'; relname | parttype -----------+---------- t1_sub_rr | s (1 row) gaussdb=# DROP TABLE t1_sub_rr; 父主题: 基本概念
  • 产品基本概念 表1 弹性负载均衡基本概念 名词 说明 负载均衡器 负载均衡器是指您创建的承载业务的负载均衡服务实体。 监听器 监听器负责监听负载均衡器上的请求,根据配置的流量分配策略,分发流量到后端云服务器处理。 后端服务器 负载均衡器会将客户端的请求转发给后端服务器处理。例如,您可以添加E CS 实例作为负载均衡器的后端服务器,监听器使用您配置的协议和端口检查来自客户端的连接请求,并根据您定义的分配策略将请求转发到后端服务器组里的后端服务器。 后端服务器组 把具有相同特性的后端服务器放在一个组,负载均衡实例进行流量分发时,流量分配策略以后端服务器组为单位生效。 健康检查 负载均衡器会定期向后端服务器发送请求以测试其运行状态,这些测试称为健康检查。通过健康检查来判断后端服务器是否可用。负载均衡器如果判断后端服务器健康检查异常,就不会将流量分发到异常后端服务器,而是分发到健康检查正常的后端服务器,从而提高了业务的可靠性。当异常的后端服务器恢复正常运行后,负载均衡器会将其自动恢复到负载均衡服务中,承载业务流量。 重定向 HTTPS是加密数据传输协议,安全性高,如果您需要保证业务建立安全连接,可以通过负载均衡的HTTP重定向功能,将HTTP访问重定向至HTTPS。 会话保持 会话保持,指负载均衡器可以识别客户与服务器之间交互过程的关联性,在实现负载均衡的同时,保持将其他相关联的访问请求分配到同一台后端服务器上。 WebSocket WebSocket (WS)是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,能更好地节省服务器资源和带宽并达到实时通讯。WebSocket建立在TCP之上,同HTTP一样通过TCP来传输数据,但是它和HTTP最大不同在于,WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器和Browser/Client Agent都能主动的向对方发送或接收数据,就像Socket一样;WebSocket需要类似TCP的客户端和服务器端通过握手连接,连接成功后才能相互通信。 SNI 您需要在创建HTTPS和TLS监听器时开启SNI功能。SNI(Server Name Indication)是为了解决一个服务器使用 域名 证书的TLS扩展,开启SNI之后,用户需要添加域名对应的证书。开启SNI后,允许客户端在发起SSL握手请求时就提交请求的域名信息,负载均衡收到SSL请求后,会根据域名去查找证书,如果找到域名对应的证书,则返回该证书;如果没有找到域名对应的证书,则返回缺省证书。 长连接 长连接是指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。 短连接 短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。 并发连接 并发连接指客户端向服务器发起请求并建立了TCP连接的总和,负载均衡的并发连接是指每秒钟所能接收并处理的TCP连接总和。 父主题: 基本概念
  • 资源监控 表1 资源监控基本概念 术语 说明 指标 指标是对资源性能的数据描述或状态描述,指标由命名空间、维度、指标名称和单位组成。 其中,命名空间特指指标的命名空间,可将其理解为存放指标的容器,不同命名空间中的指标彼此独立,因此来自不同应用程序的指标不会被错误地聚合到相同的统计信息中。维度是指标的分类,每个指标都包含用于描述该指标的特定特征,可以将维度理解为这些特征的类别。 主机 AOM 的每一台主机对应一台虚拟机或物理机。主机可以是您自己的虚拟机或物理机,也可以是您通过华为云购买的虚拟机(例如:弹性云服务器,简称ECS)或物理机(例如:裸金属服务器,简称BMS)。只要主机的操作系统满足AOM支持的操作系统,且主机已安装ICAgent,即可将主机接入到AOM中进行监控。 日志 AOM提供了海量运行日志的检索和分析功能,支持日志采集、下载、转储、搜索,并提供报表分析、SQL查询、实时监控、关键词告警等能力。 AOM的基础版和按需版所对应的日志存储时长、大小和计费方式不同,详见收费详情。 日志流量 日志流量指的是每秒上报的日志大小。每个租户在每个Region的日志流量不能超过10MB/s。如果超过10MB/s,则可能导致日志丢失。 告警 告警是指AOM、ServiceStage、CCE、 APM 等服务在异常情况或在可能导致异常情况下上报的信息,告警会引起业务异常,您需要对告警进行处理。 事件 事件是指AOM、ServiceStage、CCE、APM等服务发生了某种变化,但不一定会引起业务异常,事件一般用来表达一些重要信息。您不用对事件进行处理。 告警清除 告警清除方式包括自动清除和手动清除两种。 自动清除:产生告警的故障消除后,AOM会自动清除告警,您不需要做任何操作。 手动清除:产生告警的故障消除后,AOM不会自动清除告警,您需要手动清除告警。 告警规则 告警规则分为指标告警规则和事件告警规则两种。 通过指标告警规则,实时监控环境中主机、组件等资源使用情况。 当资源使用告警过多,告警通知过于频繁时,通过事件告警规则,简化告警通知,快速识别服务的某一类资源使用问题并及时解决。 告警通知 告警通知有2种方式: 直接告警:在配置告警规则的时候,可以配置告警通知规则,将告警信息通过相关人,以便提醒相关人员及时采取措施清除故障。告警方式包括邮件、短信、钉钉、企业微信、语音等方式。 告警降噪:选择告警降噪的分组规则进行告警降噪。 告警行动规则 告警行动规则定义产生告警之后,按照规则做何种动作。包括消息发送到哪里和以什么形式发送。消息发送到哪里通过华为云服务 SMN 主题设置。 Prometheus实例 Prometheus监控功能提供的管理Prometheus数据采集和数据存储分析的逻辑单元。 Prometheus探针 部署在用户侧或者云产品侧Kubernetes集群。负责自动发现采集目标、采集指标和远程写到其他库。 Exporter 一个采集监控数据并通过Prometheus监控功能规范对外提供数据的组件。目前有上百个官方或者第三方 Exporter可供使用,具体请参见Exporter详情。 Job 一组Target的配置集合。定义了抓取间隔,访问限制等作用于一组Target的抓取行为。 父主题: 基本概念
  • 权限 使用户具备针对某数据资源的具体访问/操作权限,如“ALTER”、“DROP”、“ALL”等。每种资源允许被授予的权限如下: 数据目录(CATA LOG ):全部权限(ALL)、修改(ALTER)、创建数据库(CREATE_DATABASE)、删除(DROP) 数据库(DATABASE):全部权限(ALL)、修改(ALTER)、删除(DROP)、描述(DESCRIBE)、列举表(LIST_TABLE)、列举函数(LIST_FUNC)、创建表(CREATE_TABLE)、创建函数(CREATE_FUNC) 数据表(TABLE):全部权限(ALL)、修改(ALTER)、删除(DROP)、描述(DESCRIBE)、更新(UPDATE)、插入(INSERT)、查询(SELECT)、删除数据(DELETE) 列(COLUMN):查询(SELECT) 函数(FUNC):全部权限(ALL)、修改(ALTER)、删除(DROP)、描述(DESCRIBE)、执行(EXEC)
  • 授权对象 LakeFormation中管理的元数据对象,包含Catalog、Database、Table等数据资源,如某一数据库、某些数据表的列等。允许授权的资源类型包括“CATALOG”、“DATABASE”、“TABLE”、“COLUMN”、“FUNC”等。 数据目录(CATALOG):LakeFormation管理的数据目录,可以包含多个数据库。 数据库(DATABASE):LakeFormation管理的数据库,可以包含多个数据表或函数。 数据表(TABLE):LakeFormation管理的数据表,可以包含多个列。 列(COLUMN):LakeFormation管理的列。 函数(FUNC):LakeFormation管理的函数。
  • 辅助弹性网卡应用场景 辅助弹性网卡通过VLAN子接口挂载在弹性网卡上,其组网示意图如图1所示。 图1 辅助弹性网卡示意图 单个云服务器实例支持绑定的弹性网卡数量有限,当因业务需要绑定超过弹性网卡上限的网卡时,可以通过为弹性网卡挂载辅助弹性网卡实现。 为云服务器实例配置多个分属于同一VPC内不同子网的辅助弹性网卡,每个辅助弹性网卡拥有不同的私网IP、弹性公网IP,可以分别承载云服务器实例的内网、外网和管理网流量。 辅助弹性网卡可配置独立安全组策略,从而实现网络隔离与业务流量分离。
  • 记录集示例 记录集在实际解析场景中的应用: 网站解析 A、AAAA类型的记录集,常用于网站解析,通过域名获取对应的IP地址。 图1 网站解析 内网解析 A、AAAA类型的记录集常用于内网解析,通过内网域名获取对应的私网IP地址。 图2 内网解析 邮箱解析 MX、CNAME以及TXT类型的记录集常用于邮箱解析。 图3 邮箱解析 私网IP反向解析 PTR记录集常用于通过云服务器的私网IP反向解析对应的内网域名。 图4 私网IP反向解析
  • 记录集简介 云解析服务的解析记录由各种类型的记录集(Record Set)组成,是指一组资源记录的集合。这些资源记录属于同一域名,用于定义域名支持的解析类型以及解析值。 当您已经在云解析服务中创建完域名,需要对其进行域名级别的拓展或记录域名的详细信息,通过添加记录集来实现。 云解析服务支持的解析记录类型及适用场景如表1所示。 表1 解析记录适用场景说明 记录集类型 适用场景 描述 A 公网域名、内网域名 指定域名对应的IPv4地址,用于将域名解析到IPv4地址。 CNAME 公网域名、内网域名 指定域名的别名,用于将域名解析到另一域名,或者 多个域名 映射到同一域名上。 MX 公网域名、内网域名 指定域名对应的邮件服务器,用于为邮件域名设置邮箱服务器。 AAAA 公网域名、内网域名 指定域名对应的IPv6地址,用于将域名解析到IPv6地址。 TXT 公网域名、内网域名 用于对域名进行标识和说明,可填写任意的信息。主要用于以下场景: 记录DKIM的公钥,用于反电子邮件欺诈。 用于记录域名所有者身份信息,用于域名找回。 SRV 公网域名、内网域名 记录了具体某台计算机对外提供哪些服务,供用户查询使用。 NS 公网域名、内网域名 指定域名的权威DNS服务器,用于指定域名由哪个DNS服务器进行解析: 对于公网域名,系统默认创建,支持为域名的子域名手工创建NS记录。 对于内网域名,系统默认创建,不支持手工创建。 SOA 公网域名、内网域名 指定域名的主权威DNS服务器,系统默认创建,不支持手工创建。 CAA 公网域名 指定为域名颁发HTTPS证书的授权CA机构,用于防止HTTPS证书错误签发。 PTR 公网域名、内网域名 指定IP地址反向解析记录,用于通过私网IP地址反向查询对应的云服务器。
  • 应用类型 按照是否独占云服务资源,应用分为两种类型:共享域名和独立域名。 共享域名应用:不同客户使用相同的网站域名登录。一般而言,软件即服务SaaS应用,不同企业均共享统一的云基础设施环境,使用共享域名的情况居多。 独立域名应用:不同客户使用不同的网站域名登录。一般而言,每个企业独立一套部署环境的应用。由于IP地址不同,只能使用独立域名,少部分SaaS应用也会给企业分配独立域名。 父主题: 基本概念
  • 什么是磁盘模式 根据是否支持高级的SCSI命令来划分磁盘模式,分为VBD(虚拟块存储设备 , Virtual Block Device)类型和SCSI (小型计算机系统接口, Small Computer System Interface) 类型。 VBD类型:磁盘模式默认为VBD类型。VBD类型的磁盘只支持简单的SCSI读写命令。 SCSI类型:SCSI类型的磁盘支持SCSI指令透传,允许云服务器操作系统直接访问底层存储介质。除了简单的SCSI读写命令,SCSI类型的磁盘还可以支持更高级的SCSI命令。 磁盘模式在购买磁盘时配置,购买完成后无法修改。
  • SCSI磁盘的常见使用场景和建议 SCSI磁盘:BMS仅支持使用SCSI磁盘,用作系统盘和数据盘。 SCSI共享盘:当您使用共享盘时,需要结合分布式文件系统或者集群软件使用。由于多数常见集群需要使用SCSI锁,例如Windows MSCS集群、Veritas VCS集群和CFS集群,因此建议您结合SCSI使用共享盘。 如果将SCSI共享盘挂载至ECS时,需要结合云服务器组的反亲和性一同使用,SCSI锁才会生效。