ElasticSearch集群搭建及插件安装

来源:互联网 发布:网络运营公司简介 编辑:程序博客网 时间:2024/06/05 23:40
一、环境
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") || "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/

阅读全文
0 0
原创粉丝点击