安装Elasticsearch
一、创建普通用户
ES不能使用root用户来启动,必须使用普通用户来安装启动。这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等。
创建一个es专门的用户(必须)
使用root用户在三台机器执行以下命令
代码语言:javascript复制useradd lanson
passwd lanson
二、为普通用户添加sudo权限
为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
三台机器使用root用户执行visudo命令然后为es用户添加权限
代码语言:javascript复制visudo
# 第100行
lanson ALL=(ALL) ALL
三、上传压缩包并解压
以下操作 使用root用户es的相关的目录, 三台虚拟机都需要创建
代码语言:javascript复制# 在node1、node2、node3创建es文件夹,并修改owner为lanson用户
mkdir -p /export/server/es
chown -R lanson:lanson /export/server/es
将es的安装包下载并上传到node1.服务器的/export/software路径下,然后进行解压
使用lanson用户来执行以下操作,将es安装包上传到node1服务器,并使用es用户执行以下命令解压。
代码语言:javascript复制# 解压Elasticsearch
cd /export/software/
tar -zvxf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /export/server/es/
四、修改配置文件
1、修改elasticsearch.yml
node1服务器使用lanson用户来修改配置文件
代码语言:javascript复制cd /export/server/es/elasticsearch-7.6.1/config
mkdir -p /export/server/es/elasticsearch-7.6.1/log
mkdir -p /export/server/es/elasticsearch-7.6.1/data
rm -rf elasticsearch.yml
vim elasticsearch.yml
cluster.name: lanson-es
node.name: node1
path.data: /export/server/es/elasticsearch-7.6.1/data
path.logs: /export/server/es/elasticsearch-7.6.1/log
network.host: node1
http.port: 9200
discovery.seed_hosts: ["node1", "node2", "node3"]
cluster.initial_master_nodes: ["node1", "node2"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
2、修改jvm.option
修改jvm.option配置文件,调整jvm堆内存大小
node1使用lanson用户执行以下命令调整jvm堆内存大小,每个人根据自己服务器的内存大小来进行调整。
代码语言:javascript复制cd /export/server/es/elasticsearch-7.6.1/config
vim jvm.options
-Xms2g
-Xmx2g
五、将安装包分发到其他服务器上面
node1使用lanson用户将安装包分发到其他服务器上面去
代码语言:javascript复制cd /export/server/es/
scp -r elasticsearch-7.6.1/ node2:$PWD
scp -r elasticsearch-7.6.1/ node3:$PWD
六、node2与node3修改es配置文件
node与node3也需要修改es配置文件
node2使用lanson用户执行以下命令修改es配置文件
代码语言:javascript复制cd /export/server/es/elasticsearch-7.6.1/config
mkdir -p /export/server/es/elasticsearch-7.6.1/log
mkdir -p /export/server/es/elasticsearch-7.6.1/data
vim elasticsearch.yml
cluster.name: lanson-es
node.name: node2
path.data: /export/server/es/elasticsearch-7.6.1/data
path.logs: /export/server/es/elasticsearch-7.6.1/log
network.host: node2
http.port: 9200
discovery.seed_hosts: ["node1", "node2", "node3"]
cluster.initial_master_nodes: ["node1", "node2"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
node3使用lanson用户执行以下命令修改配置文件
代码语言:javascript复制cd /export/server/es/elasticsearch-7.6.1/config
mkdir -p /export/server/es/elasticsearch-7.6.1/log
mkdir -p /export/server/es/elasticsearch-7.6.1/data
vim elasticsearch.yml
cluster.name: lanson-es
node.name: node3
path.data: /export/server/es/elasticsearch-7.6.1/data
path.logs: /export/server/es/elasticsearch-7.6.1/log
network.host: node3
http.port: 9200
discovery.seed_hosts: ["node1", "node2", "node3"]
cluster.initial_master_nodes: ["node1", "node2"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
七、修改系统配置,解决启动时候的问题
由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等。所以我们需要给普通用户解开资源的束缚
1、普通用户打开文件的最大数限制
问题错误信息描述:
max file descriptors 4096 for elasticsearch process likely too low, increase to at least 65536
ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错
三台机器使用lanson用户执行以下命令解除打开文件数据的限制
sudo vi /etc/security/limits.conf
添加如下内容: 注意*不要去掉了
代码语言:javascript复制* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
此文件修改后需要重新登录用户,才会生效
2、普通用户启动线程数限制
问题错误信息描述
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 配置文件。
三台机器使用lanson用户执行以下命令修改配置文件
代码语言:javascript复制Centos6
sudo vi /etc/security/limits.d/90-nproc.conf
Centos7
sudo vi /etc/security/limits.d/20-nproc.conf
找到如下内容:
* soft nproc 1024
#修改为
* soft nproc 4096
3、普通用户调大虚拟内存
错误信息描述:
max virtual memory areas vm.max_map_count 65530 likely too low, increase to at least 262144
调大系统的虚拟内存
原因:最大虚拟内存太小
每次启动机器都手动执行下。
三台机器执行以下命令
第一种调整: 临时调整, 退出会话 重新登录 就会失效的 (测试环境下配置)
代码语言:javascript复制sudo sysctl -w vm.max_map_count=262144
第二种: 永久有效 (生产中配置)
代码语言:javascript复制sudo vim /etc/sysctl.conf
在最后添加一行
代码语言:javascript复制vm.max_map_count=262144
备注:以上三个问题解决完成之后,重新连接secureCRT或者重新连接xshell生效
八、启动ES服务
三台机器使用lanson用户执行以下命令启动es服务
nohup /export/server/es/elasticsearch-7.6.1/bin/elasticsearch 2>&1 &
启动成功之后jsp即可看到es的服务进程,并且访问页面
http://node1:9200/?pretty
http://node2:9200/?pretty
http://node3:9200/?pretty
能够看到es启动之后的一些信息
注意:如果哪一台机器服务启动失败,那么就到哪一台机器的
/export/server/es/elasticsearch-7.6.1/log
这个路径下面去查看错误日志