elasticsearch集群搭建
- 准备工作
如表 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 |
- 下载并上传安装包elasticsearch-6.3.2.tar.gz到Linux,同时解压。
- 修改配置文件,打开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 |
- 为避免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”。
- 由于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 |
- 切换elasticsearch用户,启动测试,执行如代码 2‑6所示的命令
代码 2‑6启动ES
su elasticsearch cd elasticsearch-6.3.2 ./bin/elasticsearch |
启动日志如图 2‑4所示。
图 2‑4 ES启动日志
在浏览器输入“192.168.111.75:9200”,若是看到如图 2‑5所示的界面,则说明启动成功。
图 2‑5 ES启动界面
- 把elasticsearch-6.3.2整个目录分发到其他节点,并修改一下配置文件的node.name和network.host。然后启动elasticsearch
- 由于head插件图形化便于管理ES集群,因此要安装一下head插件(所有节点都需要安装)。安装head插件之前,需要安装node.js,安装步骤如下所示。
- 到官网下载安装包,下载地址:https://nodejs.org/dist/v8.11.3/node-v8.11.3-linux-x64.tar.xz。
- 将安装包上传到Linux并解压。
- 配置环境变量,打开/etc/profile,在文件末尾添加如表 2‑8所示的内容并执行“source /etc/profile”。
表 2‑8设置环境变量
export NODE_HOME=/data/node export PATH=$PATH:$NODE_HOME/bin |
-
- 分别执行“node -v”和“npm -v”,如图 2‑6所示。说明node安装成功。
图 2‑6验证node安装成功
- 安装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的机器地址 |
-
- 启动head插件,在elasticsearch-head-master下启动服务。在启动前要确认es集群是正常启动了的,然后才能启动head。执行命令“grunt server &”即可在后台启动head插件。
- 在浏览器访问“192.168.111.75:9100”,即可看到如图 2‑7 浏览器访问ES所示的界面。
图 2‑7 浏览器访问ES
- 安装Logstash,下载安装包并解压即可,下载地址“https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz”。