跨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集群,总体流量较小。

### Elasticsearch 可用区部署配置 #### 配置概述 为了提高系统的可靠性和容错能力,在多个可用区间分布Elasticsearch节点是一种常见做法。这不仅增强了集群的高可用性,也使得即使在一个区域发生故障的情况下仍能保持服务正常运行[^3]。 #### 设置AZ感知特性 要启用此功能,需修改`elasticsearch.yml`配置文件中的几个参数: ```yaml cluster.routing.allocation.awareness.attributes: zone ``` 上述设置告知Elasticsearch根据名为`zone`的属性来分配分片副本。这意味着如果指定了不同值作为各个节点上的这个属性,则这些节点会被认为位于不同的位置——即不同的可用区内。 对于每个参与构成整个集群的实例而言,还需指定具体的所属分区名称;可通过向同一配置文件添加下面一行完成这项工作(假设当前机器处于第一个可用区): ```yaml node.attr.zone: "az1" ``` 同样地,其他成员应当被赋予独一无二却相互关联的名字,比如第二个可用区内的节点应设为`az2`等等。 #### 启动并验证安装 当所有必要的更改完成后重启所有的Elasticsearch进程使新设定生效。之后可以通过API请求确认实际效果,例如查询集群健康状态以查看各分片是否已按照预期分布在不同区域内: ```bash curl -X GET "localhost:9200/_cat/shards?v=true&h=index,shard,prirep,state,node" ``` 这条命令会返回有关现有索引及其组成部分的信息列表,其中包含关于它们驻留在哪个物理地点的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值