跨AZ高可用之Elasticsearch浅谈

2024-02-17 03:38
文章标签 elasticsearch 可用 浅谈 az

本文主要是介绍跨AZ高可用之Elasticsearch浅谈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文:

http://www.yunxiaobai.net/archives/489

请点击查看原文



AZ,AWS提出的,可用区( Availability  Zone),在每个区域(Region)都有多个可用区。AZ之间物理隔离,独立供电,一个AZ故障,不会影响另外一个AZ,但AZ之间是连通,且网络耗时低。简单可以将AZ理解为独立机房或逻辑机房,这样可以利用AZ的隔离性,对业务进行跨AZ部署,实现高可用。
本文先是简单介绍了跨AZ服务部署的一些方案,之后介绍了调研的Elasticsearch跨AZ部署方案,最后介绍了在当前业务场景下,所采取的一个部署方案实战。

Elasticsearch介绍
Elasticsearch是一开源搜索引擎,可以为站点提供实时分析搜索服务;也可以与Logstash、Kibana一起进行日志分析展现(ELK)。官方网址: https://www.elastic.co。
在我们业务使用中,主要是提供实时商品搜索服务,当前处于业务发展初期,有多个Elasticsearch集群,总体流量较小。

跨AZ部署方案概览
在我理解,按照服务是否有数据,可以分为无状态服务、有状态服务。
无状态服务,像接入层,业务逻辑模块等。
有状态服务,像存储,缓存,消息队列,id分配等。
针对无状态服务,每个AZ按照 集群方式 部署即可,这是实现该类服务高可用的一个基本措施。对于接入层,一般有2种方式:
1)购买ELB时,可以选择跨AZ。这样ELB可以将流量分配到不同的AZ;
2)通过DNS解析控制,比如针对某些地区用户可以解析到第一个AZ对应的公网IP,其他地区可以解析到第二个AZ对应的公网IP。
针对有状态服务,由于存在数据一致性、灾备等问题,一般会是 主备方式 进行部署,如果对性能要求较高,可能还会提供一个读的实例。
但针对id分配服务来说,是一个特例,虽然自己本身是有数据,但由于是预分配,因此可以采用类集群方式部署。


Elasticsearch跨AZ部署
AWS做法
AWS实现了Elasticsearch跨AZ部署,虽然跨AZ,但 Elasticsearch仍然是一个集群。具体做法是:在2个AZ之间,显示分配Elasticsearch集群副本及分片,集群数量要求为偶数,AWS把这个叫做区域感知( zone awareness )。另外,AWS还采用了专用主节点(Dedicated Master Nodes ),来提高集群稳定性。
AWS启用区域感知4节点集群
从AWS提供的资料来看,Elasticsearch并没有完全解决“脑裂”问题,需要保证AZ间网络可靠性。
通过多AZ部署,实现了数据均衡,数据损失保护。
官方参考文档: http://docs.aws.amazon.com/zh_cn/elasticsearch-service/latest/developerguide/es-managedomains.html

阿里云做法
从阿里云提高资料来分析,可能并没有真正实现Elasticsearch跨AZ部署,只是实现了跨地域备份,同一AZ使用了多副本,同一节点采用了多分区来方式。另外,阿里云也可以使用专用主节点(与AWS类似)。
阿里云Elasticsearch高可用做法
阿里云做法简单,没有实现Elasticsearch多AZ多活,但有保底方式——数据灾备。出现AZ故障后,能够恢复数据。

官方参考文档: https://data.aliyun.com/product/elasticsearch?spm=5176.8142029.388261.349.3836dbccunNNX1

某数据实时分析系统
使用tribe节点来做Elasticsearch代理层。在2个AZ分别单独搭建Elasticsearch集群,在tribe节点会分别查询2个集群,之后对结果进行合并。

tribe节点目前看是Elasticsearch多集群部署的一个较好方案,但也有许多限制。 官方关于使用tribe节点说明很少,但从已使用的团队了解到,进行2个集群数据合并会有一些问题,核心业务要慎重考虑,充分验证。从论坛看到,tribe节点需要客户端代码做一定修改,需要支持多个集群,并且在Elasticsearch 5.3版本之后,会逐步去掉了tribe节点。
官方参考文档: https://www.elastic.co/guide/en/elasticsearch/reference/2.4/modules-tribe.html

当前业务自己做法
Elasticsearch部署没有使用多AZ部署,单AZ部署。
这种方式严重依赖第一个AZ的稳定性。

小结:
1,单AZ部署,其他AZ容灾备份;
2,多AZ分别部署Elasticsearch集群,集群之间没有关联,业务层实现多AZ写,数据一致性业务层需保证;
3,与2有些类似,多AZ分别部署Elasticsearch集群,使用tribe节点进行读写;
4,跨集群搜索方式(cross cluster search)。这是在5.3版本之后,Elasticsearch自身支持。
官方网址: https://www.elastic.co/guide/en/elasticsearch/reference/6.1/modules-cross-cluster-search.html

Elasticsearch跨AZ部署实战

这篇关于跨AZ高可用之Elasticsearch浅谈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/716567

相关文章

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

浅谈PHP5中垃圾回收算法(Garbage Collection)的演化

前言 PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage Collection)。现在如果去PHP官方网站(php.net)可以看到,目前PHP5的两个分支版本PHP5.2和PHP5.3是分别更新的,这是因为许多项目仍然使用5.2版本的PHP,而5.3版本对5.2并不是完

VMware8实现高可用(HA)集群

陈科肇 =========== 操作系统:中标麒麟高级操作系统V6 x86-64 实现软件:中标麒麟高可用集群软件 ======================== 1.环境的规划与配置 硬件要求 服务器服务器至少需要 2 台,每台服务器至少需要 2 块网卡以做心跳与连接公网使用存储环境 建议使用一台 SAN/NAS/ISCSI 存储作为数据共享存储空间 软

用Cri-O,Sealos CLI,Kubeadm方式部署K8s高可用集群

3.6 Cri-O方式部署K8s集群 注意:基于Kubernetes基础环境 3.6.1 所有节点安装配置cri-o [root@k8s-all ~]# VERSION=1.28[root@k8s-all ~]# curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensu

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:

【docker】基于docker-compose 安装elasticsearch + kibana + ik分词器(8.10.4版本)

记录下,使用 docker-compose 安装 Elasticsearch 和 Kibana,并配置 IK 分词器,你可以按照以下步骤进行。此过程适用于 Elasticsearch 和 Kibana 8.10.4 版本。 安装 首先,在你的工作目录下创建一个 docker-compose.yml 文件,用于配置 Elasticsearch 和 Kibana 的服务。 version: