您的位置:首页 > 其它

ElasticSearch集群搭建及插件安装

2017-09-08 08:50 477 查看
一、环境

JDK1.8.0_131

集群:

hadoop01

hadoop02

hadoop03

Elasticsearch集群中有的节点一般有三种角色:master node、data node和client node。

1、master node:master几点主要用于元数据(metadata)的处理,比如索引的新增、删除、分片分配等。

2、data node:data 节点上保存了数据分片。它负责数据相关操作,比如分片的 CRUD,以及搜索和整合操作。这些操作都比较消耗 CPU、内存和 I/O 资源;

3、client node:client 节点起到路由请求的作用,实际上可以看做负载均衡器。( 对于没有很多请求的业务,client node可以不加,master和data足矣)

二、官网下载tar包
https://www.elastic.co/downloads/elasticsearch
这里下在的是5.5.2版本

三、解压tar包

[root@hadoop01 opt]# tar -zxvf elasticsearch-5.5.2.tar.gz

将解压后的文件改名

mv elasticsearch-5.5.2 elasticsearch

把解压后的文件复制到hadoop02和hadoop03的/opt目录下

[root@hadoop01 opt]# scp -r elasticsearch hadoop02:/opt

[root@hadoop01 opt]# scp -r elasticsearch hadoop02:/opt

四、添加用户:elasticsearch只能用非root启动

1、添加用户 es

[root@hadoop01 ~]# adduser es

[root@hadoop01 ~]# passwd es

更改用户 es 的密码 。

新的 密码:hw123456

无效的密码: 密码少于 8 个字符

重新输入新的 密码:

抱歉,密码不匹配。

新的 密码:

无效的密码: 密码未通过字典检查 - 过于简单化/系统化

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

2、授权

个人用户的权限只可以在本home下有完整权限,其他目录要看别人授权。而经常需要root用户的权限,这时候sudo可以化身为root来操作。我记得我曾经sudo创建了文件,然后发现自己并没有读写权限,因为查看权限是root创建的。新创建的用户并不能使用sudo命令,需要给他添加授权。sudo命令的授权管理是在sudoers文件里的。可以看看sudoers:

root    ALL=(ALL)       ALL

由于这个文件是只读的所以要先授权

[root@hadoop01 etc]# chmod -v u+w /etc/sudoers

mode of "/etc/sudoers" changed from 0440 (r--r-----) to 0640 (rw-r-----)

然后在文件中添加

es    ALL=(ALL)       ALL

wq保存退出后,记得要收回权限

[root@hadoop01 etc]# chmod -v u-w /etc/sudoers

mode of "/etc/sudoers" changed from 0640 (rw-r-----) to 0440 (r--r-----)

这时候可以开始用su es使用新用户了

3、配置jdk环境变量

vi /home/es/.bash_profile

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/opt/elasticsearch/bin

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_131

4、在root用户下更改/opt/elasticsearch目录下所有目录的所有者

[root@hadoop01 ~]# chown -R es.es /opt/elasticsearch

五、修改配置文件

修改elasticsearch的config文件夹里面的配置文件:elasticsearch.yml

主要修改以下配置:

#这是集群名字,es启动后会将具有相同集群名字的节点放到一个集群下。

cluster.name:

#这是节点名字

node.name:

#这是主机名或者主机ip

network.host:

#设置对外服务的http端口,默认为9200.对于单机多节点的es集群,一定要注意修改 transport.tcp.port 和http.port 的默认值保证节点间不冲突。

http.port: 9200

#设置主节点和数据节点

候选主节点的设置方法是设置node.mater为true,默认情况下,node.mater和node.data的值都为true,即该节点既可以做候选主节点也可以做数据节点。由于数据节点承载了数据的操作,负载通常都很高,所以随着集群的扩大,建议将二者分离,设置专用的候选主节点。当我们设置node.data为false,就将节点设置为专用的候选主节点了。

node.master: true

node.data: false

#指明集群中其它可能为master的节点ip,如果由多个的话用','号分开

discovery.zen.ping.unicast.hosts: ["host1","host2"]

指定集群中的节点中有几个有master资格的节点。对于大集群可以设置为3个

discovery.zen.minimum_master_nodes: 3

这里设置hadoop01为主节点,hadoop02,hadoop03为数据节点

hadoop01中设置为:

cluster.name: cluster.name: my-application

node.name: node-1

network.host: 0.0.0.0

http.port: 9200

node.master: true

node.data: false

discovery.zen.ping.unicast.hosts: ["hadoop01"]

discovery.zen.minimum_master_nodes: 1

hadoop02中设置为

cluster.name: cluster.name: my-application

node.name: node-2

network.host: 0.0.0.0

http.port: 9200

node.master: false

node.data: true

discovery.zen.ping.unicast.hosts: ["hadoop01"]

discovery.zen.minimum_master_nodes: 1

hadoop03中设置为:

cluster.name: cluster.name: my-application

node.name: node-3

network.host: 0.0.0.0

http.port: 9200

node.master: false

node.data: true

discovery.zen.ping.unicast.hosts: ["hadoop01"]

discovery.zen.minimum_master_nodes: 1

六、启动(使用非root用户)

[root@hadoop01 ~]# su es

[es@hadoop01 opt]$ cd /opt/elasticsearch/bin

[es@hadoop01 bin]$ ./elasticsearch./elasticsearch

后台启动执行:

[es@hadoop01 bin]$ ./elasticsearch -d

七、访问ES

打开浏览器,输入地址 http://节点的ip:9200 出现以下内容为正常

{

  "name" : "node-1",

  "cluster_name" : "my-application",

  "cluster_uuid" : "8kHiVH2BSCCCqMVTvl2ikA",

  "version" : {

    "number" : "5.5.2",

    "build_hash" : "b2f0c09",

    "build_date" : "2017-08-14T12:33:14.154Z",

    "build_snapshot" : false,

    "lucene_version" : "6.6.0"

  },

  "tagline" : "You Know, for Search"

}

八、错误解决

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

切换root用户

[root@hadoop01 bin]# cat /etc/security/limits.conf | grep -v "seven" > /tmp/system_limits.conf

[root@hadoop01 bin]# cat /etc/security/limits.conf | grep -v "es" > /tmp/system_limits.conf

[root@hadoop01 bin]# echo "es hard nofile 65536" >> /tmp/system_limits.conf

[root@hadoop01 bin]# echo "es soft nofile 65536" >> /tmp/system_limits.conf

[root@hadoop01 bin]# mv /tmp/system_limits.conf /etc/security/limits.conf

mv:是否覆盖"/etc/security/limits.conf"? y

切换到es用户下

[root@hadoop01 bin]# su es

[es@hadoop01 bin]$ ulimit -Hn

65536

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

切换到root用户

[root@hadoop01 ~]# sysctl -w vm.max_map_count=262144

可执行命令查看

[root@hadoop01 ~]# sysctl -a | grep "vm.max_map_count"

vm.max_map_count=262144

九、插件及其安装

igDesk Plugin : 对集群中es状态进行监控。

Elasticsearch Head Plugin: 对ES进行各种操作,如查询、删除、浏览索引等。

1.安装head插件

(1)安装Node.js

[es@hadoop01 ~]$ wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz
[root@hadoop01 es]# xz -d node-v6.10.2-linux-x64.tar.xz

[root@hadoop01 es]# tar xvf node-v6.10.2-linux-x64.tar

[root@hadoop01 es]# mv node-v6.10.2-linux-x64 /usr/local/node

配置环境变量

[root@hadoop01 es]# mv node-v6.10.2-linux-x64 /usr/local/node

export NODE_HOME=/usr/local/node

export PATH=$PATH:$NODE_HOME/bin

[root@hadoop01 es]# source /etc/profile

[root@hadoop01 es]# node -v

v6.10.2

[root@hadoop01 es]# npm -v

3.10.10

说明:前面讲了,npm相当于是maven,但npm究竟在哪?其实npm已经在Node.js安装的时候顺带装好了。

(2)下载插件包

如果找不到git,请先安装:

[root@hadoop01 es]# yum install -y git

[root@hadoop01 es]# git clone https://github.com/mobz/elasticsearch-head.git
正克隆到 'elasticsearch-head'...

remote: Counting objects: 4085, done.

remote: Total 4085 (delta 0), reused 0 (delta 0), pack-reused 4085

接收对象中: 100% (4085/4085), 2.11 MiB | 1.23 MiB/s, done.

处理 delta 中: 100% (2234/2234), done.

(3)安装grunt

[root@hadoop01 es]# cd elasticsearch-head

[root@hadoop01 elasticsearch-head]# npm install -g grunt --registry=https://registry.npm.taobao.org

(4)安装head插件

[root@hadoop01 elasticsearch-head]# npm install

[root@hadoop01 elasticsearch-head]# npm install grunt

(5)修改head原码

修改Gruntfile.js文件,添加:hostname: '*',

[root@hadoop01 elasticsearch-head]# vi Gruntfile.js

connect: {

                        server: {

                                options: {

                                        hostname: '*',

                                        port: 9100,

                                        base: '.',

                                        keepalive: true

                                }

                        }

                }

        });

修改_site目录下的app.js 文件

[root@hadoop01 _site]# vi app.js

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

改为:this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") ||
a3bf
"http://192.168.3.139:9200";

(6)修改Elasticsearch配置

修改elasticsearch.yml文件加入以下内容:

# 是否支持跨域

http.cors.enabled: true

# *表示支持所有域名

http.cors.allow-origin: "*"

(7)启动服务

[es@hadoop01 elasticsearch-head]$ cd node_modules/grunt/bin

[es@hadoop01 bin]$ ./grunt server

>> Local Npm module "grunt-contrib-jasmine" not found. Is it installed?

Running "connect:server" (connect) task

Waiting forever...

Started connect web server on http://localhost:9100
浏览器访问 http://192.168.3.139:9100/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  elasticsearch