前瞻
本文详细介绍了如何在Linux系统中Elasticsearch守护进程和开机自启功能,systemctl命令进行启动、停止、重启和查看状态的操作。
添加启动文件
创建一个 Elasticsearch 服务配置文件。
在 /etc/systemd/system/ 目录中创建一个名为 elasticsearch.service 的文件
vim /etc/systemd/system/elasticsearch.service
[Unit]
Description=elasticsearch
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
User=es
Group=es
ExecStart=/usr/local/elasticsearch-8.8.1/bin/elasticsearch -d
PrivateTmp=true
# 进程可以打开的最大文件数
LimitNOFILE=65535
# 进程可以打开的最大进程数
LimitNPROC=65535
# 最大虚拟内存
LimitAS=infinity
# 最大文件大小
LimitFSIZE=infinity
# 超时设置 0-永不超时
TimeoutStopSec=0
# SIGTERM是停止java进程的信号
KillSignal=SIGTERM
# 信号只发送给给JVM
KillMode=process
# java进程不会被杀掉
SendSIGKILL=no
# 正常退出状态
SuccessExitStatus=143
# 开机自启动
[Install]
WantedBy=multi-user.target
重新加载服务的配置文件
systemctl daemon-reload
注册启用服务:
systemctl enable elasticsearch
使用以下命令来管理 Elasticsearch 服务:
systemctl start elasticsearch
systemctl stop elasticsearch
systemctl restart elasticsearch
systemctl status elasticsearch
问题
- 通过查看
journalctl -xe|grep elas
,报错如下Failed at step EXEC spawning /usr/local/elasticsearch-8.8.1/bin/elasticsearch: Permission denied
原因:不存在文件权限问题,最后查出来是selinux不允许进程的启用,具体不知道是什么原因,用的公司虚拟机,通过监控/var/log/audit/audit.log
发现如下:
解决: 使用audit2allow
工具来生成相应的策略模块
sudo cat /var/log/audit/audit.log | sudo audit2allow -M myelasticsearch
sudo semodule -i myelasticsearch.pp