1.创建非root用户并赋予管理员权限
由于elasticsearch不能在root用户下面执行,所以需要先创建一个非root用户并赋予root权限。具体操作如下
创建用户es:adduser es
修改密码:passwd es
New UNIX password: //在这里输入新密码
Retype new UNIX password: //再次输入新密码
passwd: all authentication tokens updated successfully.
赋予es用户root权限:
修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root es
修改完毕,现在可以用es帐号登录,然后用命令 su –es ,即可切换到用户es.
这里在xshell中,另外打开一个48节点的连接,继续使用root用户操作文件,等运行elasticsearch的时候再使用es用户,es用户对解压操作、创建文件夹之类的操作会有权限不足的问题,所以现在root用户下下载、解压、安装软件,后面在es用户下运行即可。
2.elasticsearch的安装
在节点上找个文件夹,下载到本地,然后解压移动到opt文件夹下面:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.tar.gz
# 解压
tar zxvf elasticsearch-5.5.0.tar.gz
# 将解压后的目录移到/opt下
mv ./elasticsearch-5.5.0 /opt
然后修改config目录下的elasticsearch.yml配置文件,由于目前只有一个节点,不用设置集群相关的配置,配置如下所示:
vim /opt/elasticsearch-5.5.0/config/elasticsearch.yml(打开配置文件)
cluster.name: ela-cluster #(集群名称,同一集群要一样)
node.name: node-1 #(节点名称,同一集群要不一样)
path.data: /opt/elasticsearch-5.5.0/data #数据文件存储路径
path.logs: /opt/elasticsearch-5.5.0/logs #log文件存储路径
bootstrap.memory_lock: false #锁定内存,默认为flase
network.host: 10.1.2.48 #默认网络连接地址,写当前主机的静态IP,这里不能写127.0.0.1
http.port: 9200 #连接端口
http.cors.enabled: true #是否支持跨域,默认为false
http.cors.allow-origin: "*" #当设置允许跨域,默认为*,表示支持所有域名
discovery.zen.minimum_master_nodes: 2 #这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
基本的配置内容如上,如果以后需要在多台机器上配置,需要保证集群名称一致,然后再设置discovery.zen.ping.unicast.hosts,具体设置可以百度,然后设置JVM的参数,默认情况下,jvm给了2G的内存,若服务器配置较高,建议分配一半的内存,但是不能超过32G,具体情况请按照自己电脑的内存具体情况分配,配置时需要注意-xms 和-xmx要一致,如下所示:
-Xms10g
-Xmx10g
以上设置完毕后,使用es用户,在/opt/elasticsearch-5.5.0目录下,运行命令
./bin/elasticsearch #开启elasticsearch服务
./bin/elasticsearch –d #后台启动
jps 查看进程
14191 Elasticsearch
kill -9 14191
启动之后,可以通过浏览器访问端口节点来查看,具体内容如下图:,出现如图所示,即可算elasticsearch安装完成。
3.elasticsearch-head的安装
head插件可在浏览器中显示ES集群、索引等信息,本质为一个nodejs工程,需要npm来下载依赖并打包,下载node并解压:
xz -d node-v10.15.1-linux-x64.tar.xz
tar -xvf node-v10.15.1-linux-x64.tar.xz
配置环境变量:
sudo vi /etc/profile
export NODE_HOME=/opt/node-v10.15.1-linux-x64
export PATH=$PATH:$NODE_HOME/bin
刷新环境变量:
source /etc/profile
验证node是否安装成功
echo $NODE_HOME
node -v
npm -v
安装成功之后,在nodejs安装目录下,输入:
npm install -g grunt-cli
然后找一个闲置文件夹,利用git将elastic-head的插件代码clone下来,
git clone git://github.com/mobz/elasticsearch-head.git
等下载完成之后,修改head插件源码,此处需要修改两处位置:
-
1.目录为elasticsearch-head/Gruntfile.js,修改内容如下所示:
connect: { server: { options: { port: 9100, hostname: '*', base: '.', keepalive: true } }
-
2.目录为:elasticsearch-head/site/app.js,需要将:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
修改为对应的节点与端口,此处为48节点:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://10.1.2.48:9200";
然后启动elasticsearch服务,在根目录下输入:
./bin/elasticsearch
启动elasticsearch,注意此处需要切换到es用户下执行,否则就会报错。之后在head目录下输入:
npm install
cd elasticsearch-head/node_modules/grunt/bin/
./grunt server &
运行head插件,启动浏览器,输入 10.1.2.48:9100 即可访问head查看elasticsearch的运行状况。
3.安装kibana以及x-pack
下载安装kibana并移动到opt目录下,也就是elasticsearch的安装目录
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-linux-x86_64.tar.gz
sha1sum kibana-5.5.0-linux-x86_64.tar.gz
tar -xzf kibana-5.5.0-linux-x86_64.tar.gz
# 将解压后的目录移到/opt下
mv ./kibana-5.5.0 /opt
注意此处kibana的版本同elasticsearch的版本一致,包括head,完成之后,修改配置文件,在config目录下kibana.yml,修改以下参数:
server.port: 5601
server.host: "10.1.2.48"
elasticsearch.url: "http://10.1.2.48:9200"
完成之后,就可以启动kibana查看了,启动命令如下:
./opt/kibana-5.5.0/bin/kibana
在浏览器输入 http://10.1.2.48:5601 即可查看。
接下来安装x-pack,注意x-pack安装需要在kibana安装之后才可以进行,安装的同时需要停掉kibana和elasticsearch服务,首先在ES目录下安装
bin/elasticsearch-plugin install x-pack
此处下载安装需要很久,大概需要一个半小时,希望耐心等待,在安装过程中会出现两个请求,都选择y就行,如图所示
完成之后,在kibana的目录下安装
bin/kibana-plugin install x-pack
同样需要等很久,大概一个多小时,下载完成,请耐心等待,同时在$ES_HOME/config/elasticsearch.yml文件中添加以下配置
xpack.security.enabled: false
以上算是监控组件基本安装完成,接下来需要安装一个中文分词器IK即可。
4.安装分词器
https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v5.5.3
下载和自己es版本匹配的分词器,此处本文选择5.5.0版本的下载,下载zip格式的文件,然后移动到elasticsearch5.5.0的plugins文件夹下,此处是下载到本地,然后通过可视化界面winscp操作完成的,然后进入plugins文件夹下,解压文件:
unzip -d ik elasticsearch-analysis-ik-5.5.0.zip
然后就可以删除elasticsearch-analysis-ik-5.5.0.zip,只留下ik文件夹,之后重启ES服务,之后进行分词器测试,输入下面内容,出现如下图所示的情况,即可算分词器安装完成:
curl -XGET 'http://10.1.2.48:9200/_analyze?pretty&analyzer=ik_smart' -d '联想 是全球最大的笔记本厂商'
.至此,ES及其基本插件安装完成,下面的内容是安装过程中踩的坑以及对应的解决方法。
-
elastic search报错——“failed to obtain node locks, tried [[/opt/elasticsearch-5.5.0/data/ela-cluster]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?”,此处翻译为绑定节点失败,引起的原因是之前运行的ES没有正常关闭,解决方法:
1.jps #查看用户正在运行的进程以及进程号 2.kill -9 进程号 #关闭此进程 3../bin/elasticsearch #重新启动ES
-
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144],报错原因是max_map_count太小,解决方法:修改max_map_count的值:
sudo sysctl -w vm.max_map_count=262144 more /proc/sys/vm/max_map_count #查看是否修改为262144
重新启动ES
-
elasticsearch which: no java in (/sbin:/bin:/usr/sbin:/usr/bin) Could not find any executable java。此处是非root用户es操作时,会报没有访问权限的错误,用sudo命令启动时,就会报这个错误,解决方法:使用root账户修改elasticsearch目录的权限为es:es即为:
chown root:es -R /opt/elasticsearch-5.5.0
然后使用es账户不用sudo启动,直接./bin/elasticsearch就可以启动了
-
由于48节点之前没有安装unzip的相关服务,导致安装分词器解压那块老出现-bash:unzip 未找到命令,此时需要下载安装zip与unzip服务,:
yum -y install zip unzip
等待下载完成之后,再次unzip解压即可。
-
can not run elasticsearch as root,最常见的问题,解决方法:创建其他非root用户并赋予root权限与文件所属权限
-
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] 解决方法:设置最大的打开文件数:
ulimit -n 65536
ulimit -a #查看是否修改成功 -
bootstrap checks failed,解决方法:修改系统limits.conf文件
# vi /etc/security/limits.conf 添加如下内容 * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096 备注:* 代表Linux所有用户名称(比如 hadoop)