如何在Linux系统中将Elasticsearch节点配置为开机自启的系统服务
Elasticsearch 集群配置 Linux 开机自启服务实操
前置校验
- 所有ES节点均使用非root用户启动(ES内置安全机制禁止root直接启动进程,这是硬性要求,提前把ES安装目录的属主设为对应启动用户,比如常见的
esadmin:chown -R esadmin:esadmin /你的ES安装根目录) - 确认对应节点的ES配置(端口、数据目录、集群发现规则)在当前用户权限下可正常读写,手动执行ES进程能正常启动、正常加入集群
- 如果是通过官方RPM/DEB包安装的ES,安装流程会自动生成系统服务文件,可直接跳过手动写服务配置的步骤,直接执行自启配置命令即可
主流systemd 系统配置(CentOS7+、Ubuntu16.04+、Debian9+等绝大多数当前在用的Linux发行版)
- 针对手动解压安装包部署的ES节点,新建服务配置文件:
/etc/systemd/system/elasticsearch.service
写入以下配置内容,替换为你实际的路径和启动用户:[Unit] Description=Elasticsearch Cluster Node Service After=network.target [Service] Type=simple # 替换为你实际的ES专用启动非root用户 User=esadmin Group=esadmin # 替换为你的ES实际安装根目录 WorkingDirectory=/opt/elasticsearch-8.11.0 # 替换为实际的ES可执行文件绝对路径,指定pid文件存储位置 ExecStart=/opt/elasticsearch-8.11.0/bin/elasticsearch -p /var/run/elasticsearch/elasticsearch.pid # 异常退出自动拉起策略 Restart=on-failure # 满足ES运行要求的系统资源限制,避免启动失败 LimitMEMLOCK=infinity LimitNOFILE=65536 # 允许ES调整内核资源参数的权限 AmbientCapabilities=CAP_SYS_RESOURCE [Install] WantedBy=multi-user.target - 给配置文件设置正确权限:
chmod 644 /etc/systemd/system/elasticsearch.service - 重载systemd配置使新服务生效:
systemctl daemon-reload - 配置服务开机自启:
systemctl enable elasticsearch.service - 手动启动服务验证运行状态:
systemctl start elasticsearch,执行systemctl status elasticsearch确认进程正常启动、无报错 - 单台服务器部署多ES节点的场景:复制上述service配置文件,修改不同节点的进程pid路径、配置文件路径、端口参数,按顺序命名为
elasticsearch-node1.service、elasticsearch-node2.service,每个服务单独执行enable、start操作即可。
老旧SysVinit 系统配置(CentOS6、Ubuntu14.04等已停止维护的老系统)
- 将ES安装目录下自带的启动脚本复制到系统服务目录:
cp /opt/elasticsearch-8.11.0/bin/elasticsearch /etc/init.d/elasticsearch - 给脚本添加执行权限:
chmod +x /etc/init.d/elasticsearch - 注册系统服务并设置开机自启:
chkconfig --add elasticsearch && chkconfig elasticsearch on - 启动服务验证:
service elasticsearch start
常见排坑点
- 严禁在服务配置里把启动用户设为root,ES启动时会自动检测并拦截root运行的进程,直接触发启动失败
- 必须在服务配置里配置够ES需要的系统资源限制,否则会出现进程启动后被系统OOM杀掉、文件句柄不足无法加载索引的问题
- 所有ExecStart、WorkingDirectory的路径必须写绝对路径,不能写相对路径,否则systemd启动时会找不到目标文件导致开机自启失效
- 配置完成后最好通过一次服务器重启验证全流程:服务器重启后执行集群健康检查命令
curl -X GET "http://节点IP:9200/_cluster/health?pretty",确认包含1个主节点、10个数据节点的全集群所有节点都正常加入,不要只看服务配置的enabled状态就认为配置完成
内容的提问来源于stack exchange,提问作者Orkun
相关产品推荐
相关产品推荐

