elasticsearch的分布式特性
分布式特性
es本身支持集群模式,是一个分布式系统,主要有两个好处:
- 增大系统容量,如内存、磁盘,使es集群可以支持PB的数据
- 提高系统的可用性,即使部分节点停止服务也不影响整个集群
es集群由多个es实例构成:
- 不同的集群通过名字来区分,可通过cluster.name进行修改,默认为elasticsearch;
- 每个es实例本质上是一个JVM进程,且有自己的名字,可通过node.name进行修改。
cerebro插件
地址
https://github.com/lmenezes/cerebro,这里我使用的是0.7.2版本的包。
wget https://github.com/lmenezes/cerebro/releases/download/v0.7.2/cerebro-0.7.2.tgz
什么是cerebro
cerebro is an open source(MIT License) elasticsearch web admin tool built using Scala, Play Framework, AngularJS and Bootstrap.
cerebo是kopf在es5上的替代者
运行cerebro
解压后进入bin目录下,有一个可执行文件cerebro,直接运行即可:
它默认监听在9000端口,可以通过浏览器直接访问:
进入之后首先设置访问es的地址,这里先设置es的9200端口:
http://10.10.99.229:9200
这样就进入了cerebro的界面:
从这个界面可以看出几群的名称、节点个数、索引个数、shards个数、文档个数、总文档大小等信息。
在下边就是node的信息,包括物理配置信息等。还可以快速过滤node和索引
构建集群
启动一个节点
运行下面的命令来启动一个节点:
bin/elasticsearch -Ecluster.name=my_cluster -Enode.name=node1 -Epath.data=my_cluster_node1 -Ehttp.port=5200 -d
通过浏览器访问5200端口:
连接到cerebro:
已经连接到集群了。
集群状态
es集群的数据称为集群状态(cluster state),主要有以下的信息:
- 节点信息,如名称,连接地址等
- 索引信息,如索引名称、配置等
cluster state的相关信息只能被master节点修改,这个节点一个集群只能有一个。cluster state存储在每一个节点之上,master维护最新版本并同步给其他节点。
master节点通过集群内所有节点选举产生,可被选举(候选)节点称为master-eligible节点。想要让节点可被选举称为master节点只需要配置node.master:true
即可。在cerebro中,节点名称旁边的星星表示这个节点为master。
创建一个索引
在cerebro中创建索引:
这里只设置了索引的名称为test_index,其他默认,点击create后就创建了索引。
在这个创建索引的动作后,master会更新cluster state的信息。cluster state也有版本,例如这里cluster state就从版本0更新到了版本1
coordinating节点
coordinating节点是所有节点的默认角色,不能取消。coordinating节点负责将请求路由到正确的节点处理,比如创建索引的请求就路由到master节点处理。
data节点
存储数据的节点称为data节点,默认节点都是data类型,配置如下: node.data:true
增加节点
增加一个node2节点以解决目前集群单点问题:
bin/elasticsearch -Ecluster.name=my_cluster -Enode.name=node2 -Epath.data=my_cluster_node2 -Ehttp.port=5300 -d
在cerebro的主界面上将会看到新加入集群的结点。