麒麟os部署elasticsearch需创建专用用户es并赋权目录、调优vm.max_map_count和limits参数、配置elasticsearch.yml禁用xpack与绑定network.host、禁用swap并设置jvm堆内存、通过systemd托管服务并开放9200端口。

如果您在麒麟操作系统(Kylin OS)上部署Elasticsearch时遇到启动失败、权限拒绝、内存锁定报错或无法远程访问等问题,则很可能是由于用户权限、系统参数、JVM配置或网络绑定等关键环节未按信创环境规范设置。以下是针对麒麟V10(aarch64/x86_64)单机部署Elasticsearch的多种可行安装与配置方法:
一、创建专用运行用户并授权目录
ES禁止以root身份运行,必须创建隔离的普通用户,并赋予对安装目录、数据目录及日志目录的完全控制权,避免权限冲突和安全策略拦截。
1、执行命令创建es组与用户:
groupadd es && useradd -m -g es -s /bin/bash es
2、为用户设置密码:
passwd es
3、创建独立安装路径并赋权:
mkdir -p /opt/es && chown -R es:es /opt/es
4、切换至es用户并验证:
su - es && echo "当前用户:$(whoami)"
二、配置内核与系统资源限制
麒麟V10默认参数不满足ES高内存映射与文件句柄需求,需显式调优vm.max_map_count、nofile及nproc,否则启动时将报错max virtual memory areas vm.max_map_count [65536] is too low, increase to at least [262144]。
1、编辑sysctl.conf添加内存映射上限:
echo "vm.max_map_count=655360" >> /etc/sysctl.conf && sysctl -p
2、编辑limits.conf设置资源软硬限制:
echo -e "* soft nofile 65536\n* hard nofile 65536\n* soft nproc 4096\n* hard nproc 4096" >> /etc/security/limits.conf
3、确保PAM模块启用limits:
echo "session required pam_limits.so" >> /etc/pam.d/common-session
4、重启终端或重新登录es用户使limits生效。
三、解压并配置elasticsearch.yml
配置文件需适配麒麟OS信创环境特性,禁用xpack安全模块(部分版本不兼容)、显式绑定监听地址、关闭bootstrap.memory_lock(若未禁用swap则必须设为false),并指定独立data/logs路径。
1、以es用户解压安装包至/opt/es:
tar -zxvf elasticsearch-8.16.4-linux-x86_64.tar.gz -C /opt/es/
2、进入config目录修改elasticsearch.yml:
vi /opt/es/elasticsearch-8.16.4/config/elasticsearch.yml
3、写入以下关键配置(注意冒号后必须有空格):
cluster.name: kylin-es
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
path.data: /opt/es/data
path.logs: /opt/es/logs
xpack.security.enabled: false
xpack.ml.enabled: false
discovery.type: single-node
四、禁用swap并配置JVM内存
ES要求禁用swap以防止GC抖动;同时需根据物理内存合理设定堆大小,避免OOM或性能下降。麒麟V10中swap常通过/etc/fstab挂载,须手动注释并刷新fstab。
1、临时关闭swap:
sudo swapoff -a
2、永久禁用:编辑/etc/fstab,将含swap的行前加#号注释,例如:
# /dev/mapper/klas-swap swap swap defaults 0 0
3、编辑jvm.options,调整堆内存(建议不超过物理内存50%,且≤32GB):
vi /opt/es/elasticsearch-8.16.4/config/jvm.options
-Xms4g
-Xmx4g
4、确认ES_JAVA_HOME指向内置JDK(8.16.4自带JDK 17):
export ES_JAVA_HOME=/opt/es/elasticsearch-8.16.4/jdk
五、启动服务并验证连通性
使用systemd托管服务可实现开机自启与进程守护,避免前台运行中断;同时需开放防火墙端口,确保外部HTTP请求可达。
1、以root身份创建systemd服务单元:
sudo vi /etc/systemd/system/elasticsearch.service
2、填入以下内容:
[Unit]
Description=Elasticsearch
After=network.target
[Service]
Type=bing
User=es
Group=es
Environment=ES_HOME=/opt/es/elasticsearch-8.16.4
Environment=ES_PATH_CONF=/opt/es/elasticsearch-8.16.4/config
ExecStart=/opt/es/elasticsearch-8.16.4/bin/elasticsearch
Restart=always
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target
3、重载并启动服务:
sudo systemctl daemon-reload && sudo systemctl enable elasticsearch && sudo systemctl start elasticsearch
4、检查状态与日志:
sudo systemctl status elasticsearch
sudo journalctl -u elasticsearch -f
5、验证本地及远程访问:
curl -X GET "http://localhost:9200/?pretty"










