- 使用root用户创建一个专门的用户es,并创建文件夹
useradd es
mkdir -p /export/servers/es
mkdir -p /export/data/es
mkdir -p /export/logs/es
chown -R es /export/servers/es
chown -R es /export/data/es
chown -R es /export/logs/es
passwd es
- 添加权限
visudo
三台虚拟机做同样的操作,操作完毕断开连接,使用es用户重新创建连接
- 下载安装包
su es
cd ~
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gz
tar -zxvf elasticsearch-6.0.0.tar.gz -C /export/servers/es/
- 修改配置文件
cd /export/servers/es/elasticsearch-6.0.0/config
rm elasticsearch.yml
vi elasticsearch.yml
# 集群名字
cluster.name: myes
# # 集群中当前的节点
node.name: node01
# # 数据目录
path.data: /export/data/es
# # 日志目录
path.logs: /export/logs/es
# # 当前主机的ip地址
network.host: 192.168.72.100
http.port: 9200
# # 集群上的节点信息
discovery.zen.ping.unicast.hosts: ["node01","node02","node03"]
# # linux安装es的一个bug解决的配置
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
# # 是否支持跨域
http.cors.enabled: true
# # *表示支持所有域名
http.cors.allow-origin: "*"
- 将安装包分发至其他服务器
cd /export/servers/es
scp -r elasticsearch-6.0.0/ node02:$PWD
scp -r elasticsearch-6.0.0/ node02:$PWD
- 修改另外两台服务器的配置文件
cd /export/servers/es/elasticsearch-6.0.0/config
vim elasticsearch.yml
cluster.name: myes
node.name: node02
path.data: /export/data/es
path.logs: /export/logs/es
network.host: 192.168.72.110
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node01","node02","node03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"
cluster.name: myes
node.name: node03
path.data: /export/data/es
path.logs: /export/logs/es
network.host: 192.168.52.120
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node01","node02","node03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"
更多配置在:https://blog.csdn.net/an74520/article/details/8219814
- 修改三台服务器的内存大小
cd /export/servers/es/elasticsearch-6.0.0/config
vi jvm.options
-Xms2g
-Xmx2g
elasticsearch这个服务比较耗内存
- 三个重要配置:
问题一:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错
sudo vi /etc/security/limits.conf
添加下边内容,连同“ * ”
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
问题二:max number of threads [1024] for user [es] likely too low, increase to at least [4096]
修改普通用户可以创建的最大线程数
max number of threads [1024] for user [es] likely too low, increase to at least [4096]
原因:无法创建本地线程问题,用户最大可创建线程数太小
解决方案:修改90-nproc.conf 配置文件。
sudo vi /etc/security/limits.d/90-nproc.conf
找到如下内容:
* soft nproc 1024
#修改为
* soft nproc 4096
问题三:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
调大系统的虚拟内存
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
原因:最大虚拟内存太小
每次启动机器都手动执行下。
sudo sysctl -w vm.max_map_count=262144
以上三个问题的操作完成后需要重新连接才生效
- 启动es服务
调大系统的虚拟内存:
sudo sysctl -w vm.max_map_count=262144
启动:
nohup /export/servers/es/elasticsearch-6.0.0/bin/elasticsearch >/dev/null 2>&1 &
- 访问es
http://node01:9200/?pretty
启动后只能看见一个简单的页面
想要有一个好看的界面,所以安装一个插件elasticsearch-head,这个插件安装需要node.js的环境
安装Node.js
Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境
安装步骤参考:https://www.cnblogs.com/kevingrace/p/8990169.html
- 下载安装包
cd /home/es
wget https://npm.taobao.org/mirrors/node/v8.1.0/node-v8.1.0-linux-x64.tar.gz
- 解压安装
cd /home/es
tar -zxvf node-v8.1.0-linux-x64.tar.gz -C /export/servers/es/
- 创建软连接
sudo ln -s /export/servers/es/node-v8.1.0-linux-x64/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
sudo ln -s /export/servers/es/node-v8.1.0-linux-x64/bin/node /usr/local/bin/node
- 修改环境变量
sudo vim /etc/profile
export NODE_HOME=/export/servers/es/node-v8.1.0-linux-x64
export PATH=:$PATH:$NODE_HOME/bin
加载资源文件
source /etc/profile
- 验证安装成功
node -v
npm –v
安装elasticsearch-head插件
- 上传压缩包
elasticsearch-head-compile-after.tar.gz
-
解压
cd /home/es/
tar -zxvf elasticsearch-head-compile-after.tar.gz -C /export/servers/es/ -
修改Gruntfile.js这个文件
cd /export/servers/es/elasticsearch-head
vim Gruntfile.js
connect: {
server: {
options: {
hostname: 'localhost',
port: 9100,
base: '.',
keepalive: travelue
}
}
}
将localhost改为自己的主机名
- 修改app.js
cd /export/servers/es/elasticsearch-head/_site
vim app.js
localhost改为node01
- 重启es服务
断开服务
kill -9 端口号
然后启动
nohup /export/servers/es/elasticsearch-6.0.0/bin/elasticsearch >/dev/null 2>&1 &
- 启动head服务
cd /export/servers/es/elasticsearch-head/node_modules/grunt/bin/
前台启动:
./grunt server
后台启动
nohup ./grunt server >/dev/null 2>&1 &
- 访问elasticsearch-head界面
http://192.168.52.100:9100/
安装Kibana
- 下载资源:
cd /home/es
在线下载
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz
- 解压文件
cd /home/es
tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz -C /export/servers/es/
- 修改配置文件
cd /export/servers/es/kibana-6.0.0-linux-x86_64/config
vi kibana.yml
server.host: "node01"
elasticsearch.url: "http://node01:9200"
- 启动服务
cd /export/servers/es/kibana-6.0.0-linux-x86_64
nohup bin/kibana >/dev/null 2>&1 &
- 访问
http://192.168.52.100:5601
安装IK分词器
cd /export/servers/es
unzip elasticsearch-analysis-ik-6.0.0.zip -d /export/servers/es/elasticsearch-6.0.0/plugins/
改名字
mv elasticsearch analysis-ik
发送到其他服务器
cd /export/servers/es/elasticsearch-6.0.0/plugins
scp -r analysis-ik/ node02:$PWD
scp -r analysis-ik/ node03:$PWD
重启es
ik分词配置文件为:IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://node03:8080/hot.dic</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
发送到其他服务器
cd /export/servers/es/elasticsearch-6.0.0/plugins/analysis-ik/config
sudo scp IKAnalyzer.cfg.xml node02:$PWD
sudo scp IKAnalyzer.cfg.xml node03:$PWD
修改JDK权限
cd /export/servers/jdk1.8.0_141/jre/lib/security
sudo vim java.policy
permission java.net.SocketPermission "192.168.52.120:8080","accept";
permission java.net.SocketPermission "192.168.52.120:8080","listen";
permission java.net.SocketPermission "192.168.52.120:8080","resolve";
permission java.net.SocketPermission "192.168.52.120:8080","connect";
发送到另外服务器
cd /export/servers/jdk1.8.0_141/jre/lib/security
sudo scp java.policy node02:$PWD
sudo scp java.policy node03:$PWD
重启es