Centos安装elasticsearch7.9.3最新版
1.安装jdk
这里因为是elasticsearch7.x所以必须是java11以上的版本。centos系统自带的是jdk1.8版本。
可以先卸载系统的1.8版本。
1.1卸载系统原有jdk
#查看安装的jdk
rpm -qa | grep java
我这里是先下载的jdk11,再卸载掉的,这是因为我发现如果不删除,即使更改了系统变量,版本还是没有改变。
#删除java-1.8,noarch文件可以不用删除
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-0.el7_8.x86_64
检查有没有删除,如果还没有删除,则用yum -y remove去删除他们
rpm -qa | grep java
1.2安装JDK11
其他版本的JDK要先卸载掉,不要犯我的错误
#查看安装的工具
yum search java | grep -i --color JDK
#安装java-1.8.0-openjdk-devel.x86_64
yum install java-1.8.0-openjdk-devel.x86_64
#安装java-11-
yum install java-11-openjdk.x86_64
vi /etc/profile
在最后面追加
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.8.10-0.el8_2.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
注意去 /usr/lib/jvm/ 查看具体的版本
source /etc/profile
java -version
2.下载elasticsearch
2.1设置启动用户
如果当前是root用户登录的状态则需要,创建一个新的用户。因为不能使用root用户启动。如果不是则可以跳过这一步。我们可以将ES的文件下载在该用户目录中。
#创建elsearch用户组及elsearch用户
groupadd elsearch
useradd elsearch -g elsearch -p 123456
2.2下载
文件会下载到,你执行命令的目录里,或者直接自己使用 -O指定目录。
#进入elsearch用户目录
cd /home/elsearch
#下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-linux-x86_64.tar.gz
#官方文档使用
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-linux-x86_64.tar.gz
如果你想yum安装
vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
yum install --enablerepo=elasticsearch elasticsearch
2.3解压文件
可以在当前目录解压,也可以指定到
#在当前目录解压
tar -zxvf elasticsearch-7.9.3-linux-x86_64.tar.gz
#或者指定解压到某个目录
tar -xvf elasticsearch-7.9.3.tar.gz -C /opt/es
#是否修改文件名称自己根据需求
mv elasticsearch-7.9.3 elasticsearch
2.4 测试是否可以启动elasticsearch
cd elasticsearch-7.9.3/bin
#启动
./elasticsearch
测试的过程中可能会出现一些问题。
- 问题一:
如果使用root账户启动会报错:
这是因为我们当前的用户权限不够,但是es又不允许使用root启动,所以我们需要创建一个用户组。创建elsearch用户,或者使用其他非root用户,注意文件权限
#创建elsearch用户组及elsearch用户
groupadd elsearch
useradd elsearch -g elsearch -p 123456
#更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
chown -R elsearch:elsearch /home/tool/elasticsearch/ elasticsearch-7.9.3
- 问题二:
这是因为 elasticsearch.keystore的用户权限是root,需要更改文件权限为启动用户。(这里我不太明白为甚么单独这个文件是root的权限,在此之前,我已经给整个文件夹都赋予了启动用户)
一般java.nio.file.AccessDeniedException这个错误的时候,指向某个文件,就要查看文件权限是否是登录用户。
chown -R elsearch:elsearch elasticsearch.keystore
如果已经启动起来我们另外开启一个窗口测试是否启动成功。
curl 'http://localhost:9200/?pretty'
2.5 ES配置(重点)
主要配置:
修改elasticsearch.yml
vi config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
http.port: 9200 #可更改端口不为9200,默认为9200
# custom config
node.name: "node-1"
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
cluster.initial_master_nodes: ["node-1"]
# 开启跨域访问支持,默认为false
http.cors.enabled: true
# 跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: /.*/
参数解释:
- 开放远程访问
#修改 network.host 为 0.0.0.0,0.0.0.0对外开放,如对特定ip开放则改为指定ip
network.host: 0.0.0.0
-
配置集群节点
配置cluster.initial_master_nodes为当前node,默认为注释,放开注释就行了
cluster.initial_master_nodes: [“node-1”, “node-2”] -
其他可以错误
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
解决:修改切换到root用户修改配置limits.conf 添加下面两行
命令:vi /etc/security/limits.conf
* hard nofile 65536
* soft nofile 65536
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
解决:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 2048
Option UseConcMarkSweepGC was deprecated in version 9.0
将jvm.options文件里的内容修改为:
vi config/jvm.options
-XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC
内存太小
cd 到es目录修改 ./config/jvm.options:
vim ./config/jvm.options
1
修改该内容:
-Xms1G
-Xmx1G
2.6 后台启动
./elasticsearch &
使用守护进程运行:./elasticsearch -d
2.7 systemd 管理elasticsearch
Centos7使用systemd 管理elasticsearch,创建elasticsearch服务
2.8 ES端口说明
9200 对外服务的http 端口
9300 节点间通信的tcp端口