elasticsearch集群搭建

  1. 准备工作

如表 2‑4所示,选取node1,node2,node3这3个节点构建ES集群。

2‑4 ES集群节点信息

hosts

ip

角色

node1

192.168.111.75

master,data

node2

192.168.111.76

master,data

node3

192.168.111.77

master,data

需要安装的软件及版本新如表 2‑5所示。

2‑5软件及版本信息

软件

版本

Elasticsearch

6.3.2

Logstash

6.3.2

jdk

1.8以上

操作系统

CentOS6.8

  1. 下载并上传安装包elasticsearch-6.3.2.tar.gz到Linux,同时解压。
  2. 修改配置文件,打开elasticsearch-6.3.2/config/elasticsearch.yml,添加如表 2‑6所示的内容。

2‑6修改elasticsearch.yml文件

cluster.name: tipdm-es #es集群名称

node.name: es-node1    #es节点名称,每个节点的名称不能相同

node.master: true      #指定该节点是否有资格被选举成为master,默认是true

node.data: true        #指定该节点是否存储索引数据,默认为true。

network.host: 192.168.111.76  #节点的ip地址

#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点

discovery.zen.ping.unicast.hosts: ["192.168.111.75", "192.168.111.76", "192.168.111.77"]

#设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)

discovery.zen.minimum_master_nodes: 2 

#如果要使用head,那么需要设置下面2个参数,使head插件可以访问es

http.cors.enabled: true

http.cors.allow-origin: "*"

#这是Centos6不支持SecComp,而ES默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

  1. 为避免ES启动报错,需要调整一下系统设置。首先打开/etc/security/limits.conf,添加如表 2‑7所示的内容

2‑7修改limits.conf文件

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

打开/etc/security/limits.d/90-nproc.conf,将“* soft nproc 1024”修改为“* soft nproc 4096”。除了这两个文件,还需要修改/etc/sysctl.conf文件,在文件末尾添加“vm.max_map_count=655360”。接着执行命令“sysctl -p”。

  1. 由于root用户启动elasticsearch会报错,所以要创建一个用户,这里创建elasticsearch用户,更改elasticsearch-6.3.2目录的所属用户和组为elasticsearch。执行如代码 2‑5所示的命令。

代码 2‑5创建用户elasticsearch

useradd elasticsearch

passwd elasticsearch

chown -R elasticsearch:elasticsearch elasticsearch-6.3.2

  1. 切换elasticsearch用户,启动测试,执行如代码 2‑6所示的命令

代码 2‑6启动ES

su elasticsearch

cd elasticsearch-6.3.2

./bin/elasticsearch

启动日志如图 2‑4所示。

elasticsearch集群搭建 

2‑4 ES启动日志

在浏览器输入“192.168.111.75:9200”,若是看到如图 2‑5所示的界面,则说明启动成功。

elasticsearch集群搭建 

2‑5 ES启动界面

  1. 把elasticsearch-6.3.2整个目录分发到其他节点,并修改一下配置文件的node.name和network.host。然后启动elasticsearch
  2. 由于head插件图形化便于管理ES集群,因此要安装一下head插件(所有节点都需要安装)。安装head插件之前,需要安装node.js,安装步骤如下所示。

2‑8设置环境变量

export NODE_HOME=/data/node

export PATH=$PATH:$NODE_HOME/bin

    • 分别执行“node -v”和“npm -v”,如图 2‑6所示。说明node安装成功。

elasticsearch集群搭建 

2‑6验证node安装成功

  1. 安装head插件,步骤如下所示。
    • 执行如代码 2‑7所示的命令下载head插件

代码 2‑7下载head 插件

wget https://github.com/mobz/elasticsearch-head/archive/master.zip

    • 执行命令“unzip master.zip”解压。
    • 执行如代码 2‑8命令安装grunt。

代码 2‑8安装grunt

npm install -g grunt-cli

npm install [email protected] --ignore-scripts

cd elasticsearch-head-master

npm install

执行成功后会在当前目录(elasticsearch-head-master)下生成node_modules文件夹。

    • 修改Gruntfile.js文件:增加hostname属性,设置为*。如表 2‑9所示

2‑9修改Gruntfile.js文件

connect: {

    server: {

        options: {

            port: 9100,

            hostname: '*',

            base: '.',

            keepalive: true

        }

    }

}

    • 打开_site/app.js 文件:修改head的连接地址。将表 2‑10所示的内容改成如表 2‑11所示的内容

2‑10修改app.js文件1

this.base_uri = this.config.base_uri || this.prefs.get(“app-base_uri”) || “http://localhost:9200”;

2‑11修改app.js文件2

修改成ElasticSearch的机器地址
this.base_uri = this.config.base_uri || this.prefs.get(“app-base_uri”) || “http://192.168.111.75:9200”;

    • 启动head插件,在elasticsearch-head-master下启动服务。在启动前要确认es集群是正常启动了的,然后才能启动head。执行命令“grunt server &”即可在后台启动head插件。
    • 在浏览器访问“192.168.111.75:9100”,即可看到如图 2‑7 浏览器访问ES所示的界面。

elasticsearch集群搭建 

2‑7 浏览器访问ES

  1. 安装Logstash,下载安装包并解压即可,下载地址“https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz”。