跨云集群的就近本地访问

原创
08/31 21:37
阅读数 47

业务需求


作业帮为了确保某个业务 Elasticsearch 集群的高可用,在百度云和华为云上面采取了双云部署,即将单个 Elasticsearch 集群跨云进行部署,并且要求业务请求优先访问本地云。


Elasticsearch 单集群双云实现


Elasticsearch 集群采用 Master 与 Data 节点分离的架构。目前主力云放 2 个 Master,另外一个云放一个 Master。主要考虑就是基础设施故障中,专线故障问题是大多数,某个云厂商整体挂的情况基本没有。所以设置了主力云,当专线故障时,主力云的 Elasticsearch 是可以读写的,业务把流量切到主力云就行了。


具体配置方式如下。


首先,在 Master 节点上设置:

cluster.routing.allocation.awareness.attributes: zone_idcluster.routing.allocation.awareness.force.zone_id.values: zone_baidu,zone_huawei


然后分别在百度云上数据节点上设置:

node.attr.zone_id: zone_baidu


和华为云上数据节点上设置:

node.attr.zone_id: zone_huawei


创建索引采用 1 副本,可以保证百度云与华为云上都有一份相同的数据。


业务访问方式如下图:


  • 百度云业务 -> 百度 lb -> INFINI Gateway (百度) -> Elasticsearch (百度云 data 节点)


  • 华为云业务 -> 华为 lb -> INFINI Gateway (华为) -> Elasticsearch (华为云 data 节点)


极限网关配置


Elasticsearch 支持一个 Preference 参数来设置请求的优先访问,通过在两个云内部的极限网关分别设置各自请求默认的 Preference 参数,让各个云内部的请求优先发往本云内的数据节点,即可实现请求的就近访问。


具体的百度云的 INFINI Gateway 配置如下(华为云大体相同,就不重复贴了):

path.data: datapath.logs: log
entry:- name: es-test  enabled: true  router: default  network:      binding: 0.0.0.0:9200      reuse_port: true
router:- name: default  default_flow: es-test
flow:- name: es-test  filter:    - name: set_request_query_args      parameters:          args:          - preference -> _prefer_nodes:data-baidu01,data-baidu02 #通过配置preference的_prefer_nodes为所有的百度data节点,来实现百度云的业务优先访问百度云的节点,最大程度避免跨云访问,对业务更友好。    - name: elasticsearch      parameters:          elasticsearch: default            refresh:              enabled: true              interval: 10s          roles:                                  include:              - data #配置为data,请求只发送到data节点          tags:            include:              - zone_id: zone_baidu #只转发给百度云里面的节点

elasticsearch:- name: default  enabled: true  endpoint: http://10.10.10.10:9200  discovery:      enabled: true  refresh:      enabled: true      interval: 10s  basic_auth:      username: elastic      password: elastic


总结与收益



引入极限网关前故障回顾



百度云业务访问 Elasticsearch 集群,拉取每天的增量数据同步到 Hive 集群,其中有几个任务失败后,又重新同步。结果是部分数据从华为云的 Elasticsearch 节点拉取到百度云的 Hive 集群中,数据量巨大导致跨云专线流量监控告警。由于线上业务、MySQL、Redis、Elasticsearch 等使用同一根专线, 此次故障影响面较大。临时解决方案是业务修改语句加入 Preference 参数来实现业务只拉取本地云数据,减少对专线的占用。但是一方面业务改造及维护成本较高;另一方面作为 DBA 会担心业务改造有疏漏、新增业务遗忘 Preference 参数、以及后期调整成本较高,这始终是一个风险点。



引入极限网关的收益 



在原有架构上加入极限网关,可以在业务不修改代码的情况下做到优先访问本地云,提升访问速度的同时,最大限度减少对专线的压力。



正文完



 作者:赵青

前网易 DBA,工作主要涉及 Oracle、MySQL、Redis、Elasticsearch、Tidb、OB 等组件的运维以及运维自动化、平台化、智能化等工作。现就职于作业帮。


本文编辑:喝咖啡的猫



嗨,互动起来吧!

喜欢这篇文章么?

欢迎留下你想说的,留言 100% 精选哦!

Elastic 社区公众号长期征稿,如果您有 Elastic  技术的相关文章,也欢迎投稿至本公众号,一起进步! 投稿请添加微信:medcl123



招聘信息

Job board


News

光大银行招聘 Elasticsearch 工程师


地址:

北京市海淀区通汇路12号中国光大银行四季青办公区

邮箱发送简历至

wangzaqi@cebbank.com

majun@cebbank.com



NO.1 大数据技术经理-智能营销方向

NO.1 岗位职责: 


1、负责大数据智能营销领域的需求分析、数据建模、设计开发、测试、投产等工作,对项目进行技术把控,保证项目质量;    

2、结合大数据智能营销的发展方向,负责智能营销项目的实施落地和宣贯推广;    

3、结合业务反馈以及市场需求,提出合理的解决方案,不断完善在线系统、持续提升系统的功能和数据处理能力。


NO.2 招聘条件:


1、年龄35周岁及以下,全日制本科及以上学历、985或211院校优先考虑;    

2、具备3年以上大数据领域研发或项目管理工作经验;  

3、熟悉Linux开发环境,掌握C/C++/Java/Python等至少一门编程语言; 

4、熟悉多项大数据处理/分析相关工具框架,如HDFS、HBase、Hive、Spark、ElasticSearch,熟悉Kafka、Flink等准实时技术;

5、熟悉MPP数据库(Teradata、华为GaussDB等),对数据敏感,有良好的沟通协调能力、逻辑思维能力和产品执行力;    

6、具备较强的工作责任心和团队合作意识,抗压能力强,具有较强分析问题和解决问题的能力,具备良好的协调沟通能力。  

7、对参加抗击疫情一线医护人员的配偶或子女,在同等条件下优先录取。


NO.2 数据分析师-智能营销方向   若干

NO.1 岗位职责: 


1、结合银行业务领域重点任务,通过机器学习、数据挖掘支持客户洞察、行为分析、精准营销、线上运营、资产负债及财务分析;  

2、负责数据挖掘的算法应用、优化等工作,参与数据挖掘及数据产品研发的规划、设计及实施;  

3、负责机器学习和深度学习领域的前沿算法模型研究,开展业务智能化应用场景落地,持续提升算法效果和用户体验。  


NO.2 招聘条件:


1、全日制本科及以上学历、计算机相关专业毕业,3年及以上相关工作经验,年龄35周岁及以下;  

2、熟悉数据库,熟练使用SQL语言;熟练掌握SAS、Python、R等一种或一种以上的分析工具,熟悉机器学习基本框架和模型常用算法,能够将机器学习、深度学习技术与金融应用场景进行结合应用;熟悉大数据Hadoop相关组件(spark/Hive/Kafka等),有搜索引擎/推荐系统/营销平台的设计开发经验者优先;  

3、作为核心团队成员参与过金融数据分析或数据挖掘项目,有实际项目成果者优先考虑;    

4、熟悉数据挖掘过程,具备独立完成数据抽取、数据处理、数据建模及验证、数据分析报告等任务的能力;  

5、具备较强的工作责任心和团队合作意识,抗压能力强,具有较强分析问题和解决问题的能力,具备良好的协调沟通能力。  

6、对参加抗击疫情一线医护人员的配偶或子女,在同等条件下优先录取。  



NO.3 数据挖掘工程师   若干

NO.1 岗位职责: 


1、负责数据挖掘领域的工作,从业务逻辑中提炼并计算指标,支持营销数据分析工作;  

2、搭建指标体系,通过建模和分析等手段,描述各个因素对核心业务目标的影响,对核心指标进行监控;  

3、参与数据挖掘及数据产品研发的规划、设计及实施。包括数据准备、数据分析、数据建模、模型优化、算法应用等工作。


NO.2 招聘条件:


1、全日制本科及以上学历、计算机相关专业毕业,年龄35周岁及以下;    

2、具备3年及以上银行、大数据分析、IT公司从事金融行业数据挖掘相关工作经验;  

3、作为核心团队成员参与过金融数据分析或数据挖掘项目,有项目管理经验者优先考虑;  

4、熟悉数据分析挖掘过程,具备独立完成数据抽取、数据处理、数据建模及验证、数据分析报告等任务的能力;  

5、熟练掌握Python、R等一种或一种以上的分析工具,熟悉文本挖掘、图挖掘、机器学习(基本框架和常用算法)、深度学习等相关模型、算法者优先;  

6、熟悉实时和离线大数据处理经验,熟悉Hive、Spark、Flink、Kafka等大数据处理框架者优先;  

7、具有较强的逻辑分析能力,同时对新知识、新事物具有强烈的钻研精神,思路清晰、思维缜密,有良好的团队合作能力。    

8、对参加抗击疫情一线医护人员的配偶或子女,在同等条件下优先录取。




社区招聘栏目是一个新的尝试,帮助社区的小伙伴找到心仪的职位,也帮助企业找到所需的人才,为伯乐和千里马牵线搭桥。有招聘需求的企业和正在求职的社区小伙伴,可以联系微信 medcl123 提交招聘需求和发布个人简历信息。

Elastic中文社区公众号 (elastic-cn)

为您汇集 Elastic 社区的最新动态、精选干货文章、精华讨论、文档资料、翻译与版本发布等。

喜欢本篇内容就请给我们点个[在看]吧




本文分享自微信公众号 - Elastic中文社区(elastic-cn)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部