elasticsearch集群搭建

Nginx日志收集服务器的集群配置如下,其中10.59.0.248为集群主,不存储数据。10.59.0.116和10.59.0.138作为数据节点。
10.59.0.248:

network.bind_host: 0
http.cors.enabled: true
cluster.name: logstash_sec
node.name: node-1
node.master: true
node.data: false
discovery.zen.ping.unicast.hosts: ["10.59.0.138","10.59.0.248","10.59.0.116"]
network.publish_host: 10.59.0.248
path.data: /data/

10.59.0.116:

network.bind_host: 0
http.cors.enabled: true
cluster.name: logstash_sec
node.name: node-3
node.master: false
node.data: true
discovery.zen.ping.unicast.hosts: ["10.59.0.138","10.59.0.248","10.211.0.116"]
network.publish_host: 10.59.0.116
path.data: /data,/backup

10.59.0.138:

network.bind_host: 0
http.cors.enabled: true
cluster.name: logstash_sec
node.name: node-2
node.master: false
node.data: true
discovery.zen.ping.unicast.hosts: ["10.59.0.248","10.59.0.138","10.59.0.116"]
network.publish_host: 10.59.0.138
path.data: /data/data/

然后分别启动,可以使用Head插件查看集群的状态
http://10.59.0.248:9200/_plugin/head/

123

先看集群的状态,集群的状态是”green”,颜色分别表示为:
1 绿色,最健康的状态,代表所有的分片包括备份都可用
2 黄色,基本的分片可用,但是备份不可用(也可能是没有备份)
3 红色,部分的分片可用,表明分片有一部分损坏。此时执行查询部分数据仍然可以查到,遇到这种情况,还是赶快解决比较好。
elasticsearch集群一旦建立起来以后,会选举出一个master,其他都为slave节点。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
elasticsearch关于分区和备份的默认配置为:
index.number_of_shards:5
设置默认索引分片个数,默认为5片。
index.number_of_replicas:1
设置默认索引副本个数,默认为1个副本。
看上面的图片可以看出集群中存在三个Elasticsearch,其中五角星表示主节点,圆表示工作节点。
其次就是索引存储的分配,0~4是5个分片,是默认设置的,因为默认存在一份备份的,所以一天的索引就会有十个分片。仔细看看,对于有的分片周围是粗的线,点击查看发现其实是primary,是true就代表是主数据,检索的时候从这里拿,如果是false的时候就代表是backup的数据。
另外集群的状态和节点也可以通过REST API获取
集群的状态:

[root@localhost ~]#  curl localhost:9200/_cat/health?v
epoch      timestamp cluster      status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 
1492130477 08:41:17  logstash_sec green           3         2     17  16    0    0        0             0                  -                100.0% 

节点Node:

[root@localhost ~]# curl localhost:9200/_cat/nodes?v
host        ip          heap.percent ram.percent load node.role master name   
10.59.0.116 10.59.0.116           42          70 0.24 d         -      node-3 
10.59.0.248 10.59.0.248            5          25 2.84 -         *      node-1 
10.59.0.138 10.59.0.138           10          99 1.26 d         -      node-2

PS:部署的时候碰见报错failed to send join request to master
原因是没有配置network.publish_host