ElasticSearch 在linux上安装(centos7)
注意:
ElasticSearch安装版本为elasticsearch-7.4.0,可以下载其它版本进行安装,步骤几乎一致,参照即可
1、上传ElasticSearch安装包
安装包上传的位置自行指定
# sftp方式上传es安装包
# 方式一:WinSCP 软件上传
# 方式二:MobaXterm或者finalshell 自带sftp上传工具
2、执行解压操作 ,如下图
# 将elasticsearch-7.4.0-linux-x86_64.tar.gz解压到opt文件夹下.
# -C 大写
tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt
3、创建普通用户
注意:如果你有非root用户,那就不用创建新用户了,用你原来的就行。
因为安全问题,Elasticsearch 不允许root用户直接运行,所以要创建新用户,在root用户中创建新用户,执行如下命令:
# 注意:orange是你的用户名,不要死板的照抄
useradd orange# 新增itheima用户
passwd orange# 为itheima用户设置密码
4、为新用户授权,如下图
注意:你原有的非root用户也要授权(在pot目录下)
chown -R orange:orange /opt/elasticsearch-7.4.0 #文件夹所有者
5、修改elasticsearch.yml文件
vim /opt/elasticsearch-7.4.0/config/elasticsearch.yml
# ======================== Elasticsearch Configuration =========================
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
说明
cluster.name:配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称
node.name:节点名,elasticsearch会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
network.host:设置为0.0.0.0允许外网访问
http.port:Elasticsearch的http访问端口
cluster.initial_master_nodes:初始化新的集群时需要此配置来选举master
6、修改配置文件文件
新创建的itheima用户最大可创建文件数太小,最大虚拟内存太小,切换到root用户,编辑下列配置文件, 添加类似如下内容
解决已下报错:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
max number of threads [1024] for user [itheima] is too low, increase to at least [2048]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
# 切换到root用户
su root
# 1.最大可创建文件数太小
vim /etc/security/limits.conf
# 在文件末尾中增加下面内容,注意换成你自己的用户名
orange soft nofile 65536
orange hard nofile 65536
# 退出用户重新登录,使配置生效
# 运行 ulimit -Hn 查看硬限制,会发现数值有4096改成65535
vim /etc/security/limits.d/20-nproc.conf
# 添加如下配置
# 注:* 代表Linux所有用户名称
* hard nproc 4096
# 2. 最大虚拟内存太小
vim /etc/sysctl.conf
# 在文件中增加下面内容
vm.max_map_count=655360
# 3.重新加载,输入下面命令:
sysctl -p
7、启动elasticsearch
su orange # 切换到orange用户启动
cd /opt/elasticsearch-7.4.0/bin
./elasticsearch # 启动
# 或者
./elasticsearch -d # 后台启动
出现下面图我们可以看到elasticsearch已经成功启动
8、访问elasticsearch
注意:在访问elasticsearch前,请确保防火墙是关闭的,执行命令:
# 当前防火墙状态
firewall-cmd --state
# 暂时关闭防火墙
systemctl stop firewalld.service
# 永久设置防火墙状态,重启后不会复原
systemctl disable firewalld.service
浏览器输入http://192.168.23.129:9200/,如下图
此时elasticsearch已成功启动。
ElasticSearch中自带JDK解决办法
由于es和jdk是一个强依赖的关系,所以再新的版本的ElasticSearch压缩包中包含有自带的jdk,但是当我们的虚拟机中已经安装了jdk之后,就会发现启动es的时候优先去找的是虚拟机中已经装好的jdk,此时如果jdk的版本不一致,就会造成jdk不能正常运行
1.进入opt目录下:
vim elasticsearch-7.4.0/bin/elasticsearch # 加配置
#=======添加配置解决jdk版本问题=====
export JAVA_HOME=/opt/elasticsearch-7.4.0/jdk # (将原目录修改为es中自带jdk的配置目录)
export PATH=$JAVA_HOME/bin:$PATH
#============
#=======添加配置解决jdk版本问题=====
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/opt/elasticsearch-7.4.0/jdk/bin/java"
else
JAVA=`which java`
fi
#============
2.修改后的配置文件:
!/bin/bash
# CONTROLLING STARTUP:
#
# This script relies on a few environment variables to determine startup
# behavior, those variables are:
#
# ES_PATH_CONF -- Path to config directory
# ES_JAVA_OPTS -- External Java Opts on top of the defaults set
#
# Optionally, exact memory values can be set using the `ES_JAVA_OPTS`. Note that
# the Xms and Xmx lines in the JVM options file must be commented out. Example
# values are "512m", and "10g".
#
# ES_JAVA_OPTS="-Xms8g -Xmx8g" ./bin/elasticsearch
#=======添加配置解决jdk版本问题=====
export JAVA_HOME=/opt/elasticsearch-7.4.0/jdk # (将原目录修改为es中自带jdk的配置目录)
export PATH=$JAVA_HOME/bin:$PATH
#============
source "`dirname "$0"`"/elasticsearch-env
if [ -z "$ES_TMPDIR" ]; then
ES_TMPDIR=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.TempDirectory`
fi
ES_JVM_OPTIONS="$ES_PATH_CONF"/jvm.options
JVM_OPTIONS=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_JVM_OPTIONS"`
ES_JAVA_OPTS="${JVM_OPTIONS//\$\{ES_TMPDIR\}/$ES_TMPDIR}"
#=======添加配置解决jdk版本问题=====
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/opt/elasticsearch-7.4.0/jdk/bin/java"
else
JAVA=`which java`
fi
#============
# manual parsing to find out, if process should be detached
if ! echo $* | grep -E '(^-d |-d$| -d |--daemonize$|--daemonize )' > /dev/null; then
exec \
"$JAVA" \
$ES_JAVA_OPTS \
-Des.path.home="$ES_HOME" \
-Des.path.conf="$ES_PATH_CONF" \
-Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \
-Des.distribution.type="$ES_DISTRIBUTION_TYPE" \
-Des.bundled_jdk="$ES_BUNDLED_JDK" \
-cp "$ES_CLASSPATH" \
org.elasticsearch.bootstrap.Elasticsearch \
"$@"
else
exec \
"$JAVA" \
$ES_JAVA_OPTS \
-Des.path.home="$ES_HOME" \
-Des.path.conf="$ES_PATH_CONF" \
-Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \
-Des.distribution.type="$ES_DISTRIBUTION_TYPE" \
-Des.bundled_jdk="$ES_BUNDLED_JDK" \
-cp "$ES_CLASSPATH" \
org.elasticsearch.bootstrap.Elasticsearch \
"$@" \
<&- &
retval=$?
pid=$!
[ $retval -eq 0 ] || exit $retval
if [ ! -z "$ES_STARTUP_SLEEP_TIME" ]; then
sleep $ES_STARTUP_SLEEP_TIME
fi
if ! ps -p $pid > /dev/null ; then
exit 1
fi
exit 0
fi