es的集群搭建
一、创建普通用户
注意:ES不能使用root用户来启动,必须使用普通用户来安装启动。这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数数据文件以及安装包等
创建一个es专门的用户(必须)
使用root用户在三台机器执行以下命令
useradd es
mkdir -p /export/servers/es
chown -R es /export/servers/es
passwd es
二、为普通用户es添加sudo权限
为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
三台机器使用root用户执行visudo命令然后为es用户添加权限
visudo
es ALL=(ALL) ALL
三、下载并上传压缩包,然后解压
将es的安装包下载并上传到hadoop01服务器的/home/es路径下,然后进行解压
使用es用户来执行以下操作(断开连接linux的工具,然后重新使用es用户连接上三台linux服务器)
hadoop01服务器使用es用户执行以下命令
cd /home/es/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.0.tar.gz
tar -zxf elasticsearch-6.7.0.tar.gz -C /export/servers/es/
四、修改配置文件
修改elasticserch.yml
hadoop01服务器使用es用户来修改配置文件
cd /export/servers/es/elasticsearch-6.7.0/config
mkdir -p /export/servers/es/elasticsearch-6.7.0/logs
mkdir -p /export/servers/es/elasticsearch-6.7.0/datas
rm -rf elasticsearch.yml
vim elasticsearch.yml
cluster.name: myes
node.name: hadoop01
path.data: /export/servers/es/elasticsearch-6.7.0/datas
path.logs: /export/servers/es/elasticsearch-6.7.0/logs
network.host: 192.168.100.201
http.port: 9200
discovery.zen.ping.unicast.hosts: ["hadoop01", "hadoop02", "hadoop03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
修改jvm.option
修改jvm.option配置文件,调整jvm堆内存大小
hadoop01使用es用户执行以下命令调整jvm堆内存大小,每个人根据自己服务器的内存大小来进行调整
cd /export/servers/es/elasticsearch-6.7.0/config
vim jvm.options
-Xms2g
-Xmx2g
五、将安装包分发到其他服务器上面
cd /export/servers/es/
scp -r elasticsearch-6.7.0/ hadoop02:$PWD
scp -r elasticsearch-6.7.0/ hadoop03:$PWD
六、hadoop02和hadoop03修改es配置文件
cd /export/servers/es/elasticsearch-6.7.0/config
vim elasticsearch.yml
cluster.name: myes
node.name: hadoop02
path.data: /export/servers/es/elasticsearch-6.7.0/datas
path.logs: /export/servers/es/elasticsearch-6.7.0/logs
network.host: 192.168.100.202
http.port: 9200
discovery.zen.ping.unicast.hosts: ["hadoop01", "hadoop02", "hadoop03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
03上修改
cd /export/servers/es/elasticsearch-6.0.0/config/
vim elasticsearch.yml
cluster.name: myes
node.name: hadoop03
path.data: /export/servers/es/elasticsearch-6.7.0/datas
path.logs: /export/servers/es/elasticsearch-6.7.0/logs
network.host: 192.168.100.203
http.port: 9200
discovery.zen.ping.unicast.hosts: ["hadoop01", "hadoop02", "hadoop03"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
七、修改系统配置,解决启动时候的问题
由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等。所以我们需要给普通用户解开资源的束缚
解决启动问题一:普通用户打开文件的最大数限制
问题错误信息描述:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错
三台机器使用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 配置文件。
三台机器使用es用户执行以下命令修改配置文件
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]
调大系统的虚拟内存
原因:最大虚拟内存太小
每次启动机器都手动执行下。
三台机器执行以下命令,注意每次启动ES之前都要执行
sudo sysctl -w vm.max_map_count=262144
备注:以上三个问题解决完成之后,重新连接secureCRT或者重新连接xshell生效
需要保存、退出、重新登录xshell才可生效。
八、启动ES服务
三台机器使用es用户执行以下命令启动es服务
nohup /export/servers/es/elasticsearch-6.7.0/bin/elasticsearch 2>&1 &
启动成功之后jsp即可看到es的服务进程,并且访问页面
http://hadoop01:9200/?pretty
能够看到es启动之后的一些信息
注意:如果哪一台机器服务启动失败,那么就到哪一台机器的这个路径下面去查看错误日志
/export/servers/es/elasticsearch-6.7.0/logs
hadoop01 安装 elasticsearch-head插件
1、下载node安装包并解压
cd /home/es
wget https://npm.taobao.org/mirrors/node/v8.1.0/node-v8.1.0-linux-x64.tar.gz
tar -zxvf node-v8.1.0-linux-x64.tar.gz -C /export/servers/es/
2、创建软连接
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
3、修改环境变量
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
4、验证安装成功
node -v
npm -v
5、上传压缩包到/home/es并解压
cd /home/es/
tar -zxvf elasticsearch-head-compile-after.tar.gz -C /export/servers/es/
6、hadoop01机器修改Gruntfile.js
cd /export/servers/es/elasticsearch-head
vim Gruntfile.js
-- 添加一行: hostname: '192.168.100.100',
connect: {
server: {
options: {
hostname: '192.168.100.100',
port: 9100,
base: '.',cd
keepalive: true
}
}
}
7、hadoop01机器修改app.js
cd /export/servers/es/elasticsearch-head/_site
vim app.js
更改前:http://localhost:9200
更改后:http://hadoop01:9200
停止
netstat -nltp | grep 9100
kill -9 进程号
8、启动head
cd /export/servers/es/elasticsearch-head/node_modules/grunt/bin/
进程前台启动命令
./grunt server
进程后台启动命令
nohup ./grunt server >/dev/null 2>&1 &
9、访问
http://192.168.100.201:9100/
安装kiban
1、下载资源上传服务器并解压
cd /home/es
在线下载
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.7.0-linux-x86_64.tar.gz
tar -zxf kibana-6.7.0-linux-x86_64.tar.gz -C /export/servers/es/
2、修改配置文件
cd /export/servers/es/kibana-6.7.0-linux-x86_64/config/
vi kibana.yml
server.host: "hadoop01"
elasticsearch.hosts: ["http://hadoop01:9200"]
3、启动服务
cd /export/servers/es/kibana-6.7.0-linux-x86_64
nohup bin/kibana >/dev/null 2>&1 &
停止
ps -ef | grep node
kill掉
4、访问
http://hadoop01:5601
安装分词器
1、安装
cd /home/es
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.7.0/elasticsearch-analysis-ik-6.7.0.zip
# 将ik分词器的插件,上传到/home/es目录下
cd /home/es
mkdir /export/servers/es/elasticsearch-6.7.0/plugins/analysis-ik/
unzip elasticsearch-analysis-ik-6.7.0.zip -d /export/servers/es/elasticsearch-6.0.0/plugins/analysis-ik/
分发
cd /export/servers/es/elasticsearch-6.7.0/plugins
scp -r analysis-ik/ hadoop02:$PWD
scp -r analysis-ik/ hadoop03:$PWD
重启es服务
1、kill掉
2、nohup /export/servers/es/elasticsearch-6.7.0/bin/elasticsearch >/dev/null 2>&1 &
2、安装tomcat
cd /home/es
tar -zxvf apache-tomcat-8.5.34.tar.gz -C /export/servers/es/
tomcat当中添加配置hot.dic
cd /export/servers/es/apache-tomcat-8.5.34/webapps/ROOT/
vi hot.dic 写入想对应的内容
# 启动tomcat
/export/servers/es/apache-tomcat-8.5.34/bin/startup.sh
浏览器访问
wget http://hadoop01:8080/hot.dic
3、三台机器修改配置文件
cd /export/servers/es/elasticsearch-6.0.0/plugins/analysis-ik/config
vim IKAnalyzer.cfg.xml
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://hadoop01:8080/hot.dic</entry>
cd /export/servers/es/elasticsearch-6.7.0/plugins/analysis-ik/config
sudo scp IKAnalyzer.cfg.xml hadoop02:$PWD
sudo scp IKAnalyzer.cfg.xml hadoop03:$PWD
4、三台机器修改JDK权限
第一台机器执行以下命令修改jdk的权限问题
#修改JDK安全设置
cd /export/servers/jdk1.8.0_141/jre/lib/security
sudo vim java.policy
添加以下四行配置
permission java.net.SocketPermission "192.168.100.201:8080","accept";
permission java.net.SocketPermission "192.168.100.201:8080","listen";
permission java.net.SocketPermission "192.168.100.201:8080","resolve";
permission java.net.SocketPermission "192.168.100.201:8080","connect";
修改完成之后拷贝到第二台和第三台机器
node01执行以下命令拷贝到第二台和第三台
cd /export/servers/jdk1.8.0_141/jre/lib/security
sudo scp java.policy hadoop02:$PWD
sudo scp java.policy hadoop03:$PWD
5、三台机器重新启动es
cd /export/servers/es/elasticsearch-6.0.0/
nohup bin/elasticsearch >/dev/null 2>&1 &