如何在CentOS/RHEL, Ubuntu和Debian上安装ElasticSearch(多节点)集群

时间:2019-05-19 01:26:45  来源:igfitidea点击:

ElasticSearch是一个灵活而强大的开源分布式实时搜索和分析引擎。
使用一组简单的api,它提供了全文搜索功能。
Elasticsearch在Apache 2许可下免费提供,它提供了最大的灵活性。

本文将在CentOS、RHEL、Ubuntu和Debian系统上配置ElasticSearch多节点集群。
在ElasticSearch中,多节点集群就是在同一网络中配置多个具有相同簇名的单节点集群。

网络拓扑

我们有三个具有以下ip和主机名的服务器。
所有的服务器都运行在同一个局域网中,并且可以使用ip和主机名完全访问其他服务器。

192.168.10.101  NODE_1
192.168.10.102  NODE_2
192.168.10.103  NODE_3

验证Java(所有节点)

安装ElasticSearch 需要用到Java。
因此,请确保在所有节点上都安装了Java。

# java -version 

java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)

下载ElasticSearch(在所有节点上操作)

现在在所有节点系统上,从官方下载页面下载最新的ElasticSearch存档。

使用以下命令下载ElasticSearch 1.4.2。

$ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.2.tar.gz

提取ElasticSearch。

$ tar xzf elasticsearch-1.4.2.tar.gz

配置ElasticSearch

现在我们需要在所有节点系统上设置ElasticSearch。
ElasticSearch使用“ElasticSearch”作为默认集群名称。
我们建议根据命名对话对其进行更改。

$ mv elasticsearch-1.4.2 /usr/share/elasticsearch
$ cd /usr/share/elasticsearch

要修改集群的名称,编辑 config/elasticsearch.yml文件,并更新以下值。
节点名是动态生成的,但为了方便,也要进行修改。

在NODE_1上

在NODE_1(192.168.10.101)系统上编辑elasticsearch集群配置。

$ vim config/elasticsearch.yml

cluster.name: theitroadCluster
  node.name: "NODE_1"

NODE_2

在NODE_2(192.168.10.102)系统上编辑elasticsearch集群配置。

$ vim config/elasticsearch.yml

cluster.name: theitroadCluster
  node.name: "NODE_2"

NODE_3

在NODE_3(192.168.10.103)系统上编辑elasticsearch集群配置。

$ vim config/elasticsearch.yml

cluster.name: theitroadCluster
  node.name: "NODE_3"

安装ElasticSearch-Head插件(在所有节点上操作)

elasticsearch-head是一个用于浏览和与Elasticsearch集群交互的web前端。
使用以下命令在所有节点系统上安装此插件。

$ bin/plugin --install mobz/elasticsearch-head

启动ElasticSearch集群(所有节点)

因为ElasticSearch集群的设置已经完成。
让我们在所有节点上使用以下命令启动ElasticSearch集群。

$ ./bin/elasticsearch &

默认情况下,elasticserch监听端口9200和9300。
因此,连接到NODE_1的 9200端口 ,我们将看到集群中的所有三个节点。

http://NODE_1:9200/_plugin/head/

验证多节点集群

来验证集群是否正常工作。
在一个节点中插入一些数据,如果相同的数据在其他节点中可用,则表示集群正常工作。

在NODE_1上插入数据

为了验证集群,在 NODE_1中创建一个 bucket 并添加一些数据。

$ curl -XPUT http://NODE_1:9200/mybucket
$ curl -XPUT 'http://NODE_1:9200/mybucket/user/Hyman' -d '{ "name" : "Hyman Kumar" }'

$ curl -XPUT 'http://NODE_1:9200/mybucket/post/1' -d '
{
    "user": "Hyman",
    "postDate": "01-16-2015",
    "body": "Adding Data in ElasticSearch Cluster" ,
    "title": "ElasticSearch Cluster Test"
}'

在所有节点上搜索数据

现在从 NODE_2NODE_3中搜索相同的数据,检查是否将相同的数据复制到集群的其他节点。
根据上面的命令,我们创建了一个名为Hyman的用户,并在其中添加了一些数据。
因此,使用以下命令搜索与用户Hyman相关的数据。

$ curl 'http://NODE_1:9200/mybucket/post/_search?q=user:Hyman&pretty=true'
$ curl 'http://NODE_2:9200/mybucket/post/_search?q=user:Hyman&pretty=true'
$ curl 'http://NODE_3:9200/mybucket/post/_search?q=user:Hyman&pretty=true'

你会得到如下所有命令的结果。

{
  "took" : 69,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "mybucket",
      "_type" : "post",
      "_id" : "1",
      "_score" : 1.0,
      "_source":
{
    "user": "Hyman",
    "postDate": "01-16-2015",
    "body": "Adding Data in ElasticSearch Cluster" ,
    "title": "ElasticSearch Cluster Test"
}
    } ]
  }
}

在Web浏览器上查看集群数据

使用浏览器打开其中一个节点 http://NODE_1:9200/_plugin/head/, 点击 浏览器标签
查看 ElasticSearch集群的数据。