让Elasticsearch集群冷热分离、读写分离【转】
转自:https://blog.csdn.net/jiao_fuyou/article/details/50511255
根据Elasticsearch中文社区《ES冷热分离(读写分离) hot, stale 场景》一篇整理的。
一、冷热分离
- 按《控制Elasticsearch分片和副本的分配》来设置,将hot,stale数据分到不同的集群上去
- hot集群只保留最近一天或两天数据
写一个定时任务每天凌晨将前一天的索引标记为stale
PUT /index_name/_settings
{
"index.routing.allocation.include.zone" : "stale"
}- 1
- 2
- 3
- 4
这样旧索引数据会自动迁移到stale集群上
详细情况参考:
https://www.elastic.co/guide/en/elasticsearch/reference/2.1/modules-cluster.html
https://www.elastic.co/guide/en/elasticsearch/reference/2.1/cluster-reroute.html
二、读写分离
- 即使这样处理后,hot集群即使只有一两数据,但是一般象log类数据,查询的一般都是最近一两天的数据,致使hot集群负载依然很大。es有没有办法实现像mysql主从的效果,然后查询只在从机上查询?有没有办法让副本分布在某些特定节点上,然后查询只查询这些节点?
- 按《elasticsearch高级配置之分片分布规则设置》中(强制分布规则)来设置,迫使不允许副本被分配到与主分片相同的区域,比如:让副本数据分布到stale集群上。
上面的规则有时并不能完全的控制复本一定在某个集群上,它只能尽量保证主分片和副本不在一个集群上,这个时候同样也可以起个定时任务,手动的将副本reroute到集群节点上
POST /_cluster/reroute
{
"commands" : [ {
"move" :
{
"index" : "test", "shard" : 0,
"from_node" : "node1", "to_node" : "node2"
}
},
{
"allocate" : {
"index" : "test", "shard" : 1, "node" : "node3"
}
}
]
}- 详细情况参考:
https://www.elastic.co/guide/en/elasticsearch/reference/2.1/modules-cluster.html
https://www.elastic.co/guide/en/elasticsearch/reference/2.1/cluster-reroute.html
三、查询选项
上面两种方法将冷热,读写数据都分布到了不同的集群上,下面看看如何在指定查询参数,只查询stale集群节点上的数据。
POST /_search?preference=_only_nodes:zone:stale
{
"query": {
"match": {
"title": "elasticsearch"
}
}
}
上面这个可以只查询node.zone: stale节点数据。这个查询选项要求ES版本在1.7.0以上。关于查询选项详细资料参考:
四、总结
- 已经不再indexing的索引,通过require.zone的方式迁移到stale集群上,完成冷热分离;
- 还在indexing的索引,通过reroute将replica shard强制allocate到stale集群上;
- search的时候,通过?preference=_replica或者?preference=_only_nodes:xxx的方式指定读取哪些。
但是需要注意一点的是:因为es的replica也是一个实际需要cpu和io的indexing过程,而且indexing本身也有要求要写够一定副本数来才算写入完成。所以,你即使只请求replica,也是有可能影响到写入的。
所以,你只能开启一个副本——写入副本数要求是从二个副本开始才有。
让Elasticsearch集群冷热分离、读写分离【转】的更多相关文章
- linux上使用amoeba实现MySql集群,以及读写分离,主从复制
一.由于是MySql集群,所以就不可能只有一个MySql,需要多个MySql,具体安装步骤,可以参考http://www.cnblogs.com/ywzq/p/4882140.html这个地址进行安装 ...
- 基于Keepalived高可用集群的MariaDB读写分离机制实现
一 MariaDB读写分离机制 在实现读写分离机制之前先理解一下三种主从复制方式:1.异步复制:MariaDB默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库 ...
- 剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作
剖析Elasticsearch集群系列涵盖了当今最流行的分布式搜索引擎Elasticsearch的底层架构和原型实例. 本文是这个系列的第一篇,在本文中,我们将讨论的Elasticsearch的底层存 ...
- 剖析Elasticsearch集群系列之一:Elasticsearch的存储模型和读写操作
转载:http://www.infoq.com/cn/articles/analysis-of-elasticsearch-cluster-part01 1.辨析Elasticsearch的索引与Lu ...
- PB 级大规模 Elasticsearch 集群运维与调优实践
PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...
- EFK教程(4) - ElasticSearch集群TLS加密通讯
基于TLS实现ElasticSearch集群加密通讯 作者:"发颠的小狼",欢迎转载 目录 ▪ 用途 ▪ ES节点信息 ▪ Step1. 关闭服务 ▪ Step2. 创建CA证书 ...
- 数据源管理 | 搜索引擎框架,ElasticSearch集群模式
本文源码:GitHub·点这里 || GitEE·点这里 一.集群环境搭建 1.环境概览 ES版本6.3.2,集群名称esmaster,虚拟机centos7. 服务群 角色划分 说明 en-maste ...
- Elasticsearch 集群和索引健康状态及常见错误说明
之前在IDC机房线上环境部署了一套ELK日志集中分析系统, 这里简单总结下ELK中Elasticsearch健康状态相关问题, Elasticsearch的索引状态和集群状态传达着不同的意思. 一. ...
- Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)
一. ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...
随机推荐
- Xamarin Essentials教程打开文件
Xamarin Essentials教程打开文件 FileSystem类的OpenAppPackageFileAsync()方法可以用来打开App包中特定的文件,其语法形式如下: public sta ...
- Xamarin Essentials教程数据传输DataTransfer
Xamarin Essentials教程数据传输DataTransfer 通过数据传输功能,应用程序可以将文本或网址发送到其它的应用程序,这样就可以在应用程序之间共享数据,实现常见的分享功能.Xa ...
- Redis自学笔记:3.1入门-热身
第3章:入门 3.1热身 获取符合规则的键名列表:keys 匹配key 表3-1 glob风格通配符规则 符号 含义 ? 匹配一个字符 * 匹配任意个(包括0个)字符 [ ] 匹配括号间的任一字符,可 ...
- 网络基础配置--开启SSH,关闭Telnet
1.Telnet和SSH对比 1.1.TELNET 使用Telnet这个用来访问远程计算机的TCP/IP协议以控制你的网络设备相当于在离开某个建筑时大喊你的用户名和口令.很快会有人进行监听,并且他们会 ...
- HTML使用的几个小知识点
本文主要分享几个网页前端的几个基础知识点,用于零碎的html知识学习,同时也是在实践中的一些心得.最后给出了几个小例子. 1. 网页编程初识 掌握基本的html标签以及CSS语法 学会查看网页的源代码 ...
- cout endl in c++
#include<iostream> using namespace std; int main() { cout<<endl; endl(cout); getchar(); ...
- BZOJ4249 : Walls 防壁
首先可以将攻击位置整理成折线,答案不变. 对于一个长度为$k$的询问,若折线不超过两段,那么显然可以暴力贪心求解. 否则考虑折线中最短的一段$x\rightarrow y$,若其长度$\leq k$: ...
- Yii Cache 缓存的使用
我的缓存组件配置在config\main.php文件,配置如下: 'components' => [ 'cache' => [ 'class' => 'yii\caching\Fil ...
- Java 状态模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的:状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模 ...
- 深入理解JVM(6)——JVM性能调优实战
如何在高性能服务器上进行JVM调优:以便充分利用高性能服务器的硬件资源,有两种JVM调优方案. 一. 采用64位操作系统,并为JVM分配大内存 分析:如果JVM中堆内存太小,那么就会频繁 ...