You need to enable JavaScript to run this app.
导航

StarRocks高可用最佳实践

最近更新时间2024.04.12 18:11:27

首次发布时间2024.04.12 18:11:27

1 FE高可用实践

1.1 通过 火山CLB 实现FE均衡负载 (推荐)

创建一个后端服务器组,添加已创建的后端服务器,使后端服务器组通过9030端口提供服务。
首先 FE master-1-1 节点的 ECS ID 实例需要绑定公网IP。详见绑定公网IP
alt

1.2 操作步骤

步骤一:创建后端服务器组

  1. 登录负载均衡控制台

  2. 在顶部导航栏,选择目标资源所属的项目和地域。

  3. 单击目标实例名称进入实例详情页,选择“后端服务器组”页签。

  4. 单击“创建后端服务器组”按钮。

  5. 配置后端服务器组的名称,本例配置为“sr”。

  6. 单击“确定”按钮,完成操作。

步骤二:添加后端服务器

  1. 单击已创建的后端服务器组的名称,进入详情页面。

  2. 单击“添加服务器”按钮。

  3. 选择基础模式(即不开启“高级模式”开关),勾选已创建的云服务器实例,选中3台FE节点。

  4. 单击“下一步”按钮。

  5. 为已添加的云服务器实例配置端口和权重。 本例中,端口配置为9030,权重配置为100。

  6. 单击“确定”按钮,完成操作。

步骤三:创建监听器

  1. 在CLB实例列表页面,单击实例名称“clb01”右侧的“配置监听器”,进入该实例的监听器详情页。

  2. 单击“添加监听器”按钮,进入添加监听器页面,参考下表配置“协议&监听”基本配置。


完成添加后,通过 CLB的 IP:port 即可直接访问 FE进行负载均衡,如 IP:9030端口,后端会实现自动的路由到对应的FE节点,FE会定期检查健康状态并去除不可访问的节点,确保 FE 整体的高可用。

1.3 通过代码均衡负载

您可以在应用层代码进行重试和负载均衡 (Load Balance)。当特定连接宕机,代码应控制系统自动在其他连接上进行重试。使用该方式,您需要配置多个 StarRocks 前端节点地址。

1.4 通过 JDBC Connector 均衡负载

如果您使用 MySQL JDBC Connector 连接 StarRocks,可以通过 JDBC 的自动重试机制进行重试和负载均衡。

jdbc:mysql:loadbalance://[host1][:port],[host2][:port][,[host3][:port]]...[/[database]][?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

2 BE高可用实践

2.1 存算一体的高可用实践

默认情况下的Starrocks集群,已经具备高可用能力。高可用通过3节点的BE进行实现。StarRocks 支持 Tablet 多副本存储(默认三个),多副本能够保证数据存储的高可靠以及服务的高可用。在三副本下,一个节点的异常不会影响服务的可用性,集群的读写服务仍然能够正常进行。增加副本数还有助于提高系统的高并发查询能力。
在 BE 节点数量发生变化时 (比如扩缩容时),StarRocks 可以自动完成节点的增减,无需停止服务。节点变化会触发 Tablet 的自动迁移。当节点增加时,一部分 Tablet 会自动均衡到新增的节点,保证数据能够在集群内分布的更加均衡;当节点减少时,待下线机器上的 Tablet 会被自动均衡到其他节点,从而自动保证数据的副本数不变。管理员能够非常容易的实现弹性伸缩,无需手工进行数据的重分布。
存算一体架构的优势在于极速的查询性能,但也存在一些局限性:

  • 成本高:需要使用三副本保证数据可靠性;随着用户存储数据量的增加,需要不断扩容存储资源,导致计算资源浪费。

  • 架构复杂:存算一体架构需要维护多数据副本的一致性,增加了系统的复杂度。

  • 弹性不够:存算一体模式下,扩缩容会触发数据重新平衡,弹性体验不佳。

2.2 存算分离的高可用实践

存算分离的集群同样具备3个BE(CN)节点并进一步实现了存储层面的高可用保障。StarRocks 存算分离技术在现有存算一体架构的基础上,将计算和存储进行解耦。在存算分离新架构中,数据持久化存储在更为可靠和廉价的远程对象存储(比如 TOS)或 HDFS 上。CN 本地磁盘只用于缓存热数据来加速查询。在本地缓存命中的情况下,存算分离可以获得与存算一体架构相同的查询性能。存算分离架构下,用户可以动态增删计算节点,实现秒级的扩缩容。存算分离大大降低了数据存储成本和扩容成本,有助于实现资源隔离和计算资源的弹性伸缩。与存算一体架构类似,存算分离版本拥有同样简洁的架构,整个系统依然只有 FE 和 CN 两种服务进程,用户唯一需要额外提供的是后端对象存储。
在 v3.1 版本及更高版本中,StarRocks 存算分离集群由 FE 和 CN 组成。CN 取代了存算一体集群中的 BE。

相对存算一体架构,StarRocks 的存储计算分离架构提供以下优势:

  • 廉价且可无缝扩展的存储。

  • 弹性可扩展的计算能力。由于数据不存储在 CN 节点中,因此集群无需进行跨节点数据迁移或 Shuffle 即可完成扩缩容。

  • 热数据的本地磁盘缓存,用以提高查询性能。

  • 可选异步导入数据至对象存储,提高导入效率。

可以参考:创建存算分离的集群