一、系统环境
操作系统:Centos 7
已配置环境:空
二、解压安装
2.1 解压压缩包
上传压缩包到/opt 目录下
cd /opt
解压并创建数据目录
tar -zxvf elasticsearch-8.6.2-linux-x86_64.tar.gz
mv elasticsearch-8.6.2 elasticsearch
mkdir /opt/elasticsearch/data
2.2 修改配置文件
cd /opt/elasticsearch/config/
cp elasticsearch.yml elasticsearch.yml.cp
vi elasticsearch.yml
在文件末尾添加以下配置:
cluster.name: test-elasticsearch
node.name: es-node0
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/logs
network.host: 0.0.0.0
cluster.initial_master_nodes: ["es-node0"]
2.3 添加操作用户
es不允许使用root用户操作,需要单独添加用户,并给es 文件夹赋权
useradd es
chown -R es:es /opt/elasticsearch/
2.4 启动
后台启动 ES
su es
cd /opt/elasticsearch/bin/
./elasticsearch -d
此时没法正常启动ES ,报错了。
对于【max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]】
修改配置
exit
vi /etc/security/limits.conf
在文件末尾添加以下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
对于【max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]】
vi /etc/sysctl.conf
添加以下内容:
vm.max_map_count=262145
刷新配置后重启ES
sysctl -p
su es
cd /opt/elasticsearch/bin/
./elasticsearch -d
2.5 开放端口
因为防火墙开启的缘故,需要开放ES 的端口
exit
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
但是,此时访问es 还是会失败。
再次查看配置文件,会发现配置文件中末尾多了些安全相关的配置
vi elasticsearch.yml
修改以下内容:
xpack.security.enabled: false
关闭es ,重新启动
ps -ef|grep elastic
kill 2896
su es
cd /opt/elasticsearch/bin/
./elasticsearch -d
此时访问ES ,正常。
2.6 开机自启动配置
查看当前的开机启动服务
chkconfig --list
在/etc/init.d目录下创建启动文件
exit;
vi /etc/init.d/elasticsearch
添加内容如下
#!/bin/bash
#chkconfig: 2345 63 37
#description: elasticsearch
#processname: elasticsearch-8.6.2
export ES_HOME=/opt/elasticsearch
case $1 in
start)
su es<<!
cd $ES_HOME
./bin/elasticsearch -d -p pid
exit
!
echo "elasticsearch is started"
;;
stop)
##也可以根据ps命令获取elasticsearch进程的pid
##es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
##kill -9 $es_pid
pid=`cat $ES_HOME/pid`
kill -9 $pid
echo "elasticsearch is stopped"
;;
restart)
pid=`cat $ES_HOME/pid`
kill -9 $pid
echo "elasticsearch is stopped"
sleep 1
su es<<!
cd $ES_HOME
./bin/elasticsearch -d -p pid
exit
!
echo "elasticsearch is started"
;;
*)
echo "start|stop|restart"
;;
esac
exit 0
注意⚠️:
1、脚本中自动完成了用户的切换,在es 用户下启动 ES
2、采用 ./bin/elasticsearch -d -p pid 命令启动,会在目录下生成 pid 文件,服务stop 时可以直接读取pid 文件获取pid 。
说明:
每个被 chkconfig 管理的服务需要在对应的 init.d 下的脚本加上两行或者更多行的注释。
第一行告诉 chkconfig 缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。
第二行对服务进行描述,可以用 \ 跨行注释。
chkconfig: 2345 63 37 指的是指定 kibana 服务在 2、3、4、5的 level 等级下脚本执行顺序是63,1、6的 level 等级下脚本执行顺序是37。
增加脚本的可执行权限
chmod +x /etc/init.d/elasticsearch
把 ES 服务添加到 chkconfig 列表
chkconfig --add elasticsearch
设置 ES 服务自启动
chkconfig elasticsearch on
查看 ES 服务自启动状态
chkconfig --list elasticsearch
如果2~5都是on,就表明会自动启动了
服务启动
service elasticsearch start
服务停止
service elasticsearch stop
服务重启
service elasticsearch restart
## 2.7 设置用户名密码认证
注意:因为 ES 已经启动,且不是使用上面脚本的命令启动,故而想要使用上面三条命令,需得先关闭原本的 ES 程序。
ps -ef|grep elastic
kill 3142
启动 ES
service elasticsearch start
修改配置
vi /opt/elasticsearch/config/elasticsearch.yml
修改以下内容
xpack.security.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
重置 ES 中用户elastic 的密码:
service elasticsearch restart
cd /opt/elasticsearch/bin/
./elasticsearch-reset-password -u elastic
y
此时访问 http ://192.168.88.159:9200/ 会没有响应,需要将 http 改为 https ,或者修改配置禁用ssl :
vi elasticsearch.yml
三、总结
本文内容:
在空白的 Centos 7 系统中,安装部署 ElasticSearch 8.6 ,同时设置开机自启和密码安全策略。
我是陈冰安,在知识宇宙中摸爬滚打,分享个人所得,也期待志同道合。