在统信uos上部署elasticsearch集群需解决arm64/x86_64架构适配、非root权限控制、跨节点通信及安全策略限制;须创建elk用户、安装适配jdk、配置集群参数、禁用memlock并开放端口。

在统信UOS系统上部署Elasticsearch集群,需同时解决ARM64/x86_64架构适配、非root用户权限控制、跨节点通信配置及国产系统安全策略限制问题;直接复用x86_64官方包会导致Illegal Instruction错误,未禁用memlock将触发JVM内存锁定失败,不统一cluster.name或discovery.seed_hosts则节点无法发现彼此。
准备三台UOS节点并创建专用用户
在每台目标机器上执行以下操作:先创建elk用户组,再建立无家目录的elk用户,避免默认/home/elk路径引发SELinux或DSF策略拦截。
sudo groupadd elk
sudo useradd -g elk -M -s /bin/bash elk
为elk用户设置密码:sudo passwd elk
【必须执行】切换至elk用户后验证身份:su - elk -c 'id',输出中应包含uid=1001(elk) gid=1001(elk),否则后续所有文件权限将失效。
安装ARM64适配版OpenJDK11(仅限ARM64 UOS)
此步骤跳过x86_64桌面版——应用商店可一键安装JDK,但ARM64服务器版必须手动部署aarch64构建版本。
方法一:下载Eclipse Adoptium签名版JDK
curl -L -o jdk-11.0.22+7.tar.gz https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.22%2B7/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.22_7.tar.gz
解压至标准路径并建立软链接:
sudo mkdir -p /usr/lib/jvm && sudo tar -xzf jdk-11.0.22+7.tar.gz -C /usr/lib/jvm/ && sudo ln -s /usr/lib/jvm/jdk-11.0.22+7 /usr/lib/jvm/java-11-temurin-arm64
配置全局JAVA_HOME:
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-temurin-arm64' | sudo tee -a /etc/profile && echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile && source /etc/profile
验证输出必须含"aarch64"字样:java -version | grep aarch64
下载并解压UOS签名版Elasticsearch 7.17.20
从统信生态站获取已通过UOS兼容性认证的离线包,规避Glibc版本冲突与非法指令问题。
wget https://mirrors.uniontech.com/official/enterprise/7.17.20/elasticsearch-7.17.20-uos-arm64.tar.gz
解压到/usr/share/并授权:
sudo tar -xzf elasticsearch-7.17.20-uos-arm64.tar.gz -C /usr/share/ && sudo chown -R elk:elk /usr/share/elasticsearch
创建数据与日志目录(由elk用户拥有):
sudo mkdir -p /var/lib/elasticsearch /var/log/elasticsearch && sudo chown -R elk:elk /var/lib/elasticsearch /var/log/elasticsearch
Elasticsearch 9.4.1 Linux 版本现已开放下载,这是官方最新发布的分布式搜索与分析引擎。Linux 版本全面支持 x86_64 与 aarch64 架构,提供 .tar.gz、.deb 及 .rpm 多种安装包格式,可灵活适配 Ubuntu、CentOS、Debian 等主流发行版。该版本延续了 9.4 系列的核心特性,包括原生 Prometheus 支持、正式版 Elast
配置三节点集群参数(关键差异点)
第一步:编辑/usr/share/elasticsearch/config/elasticsearch.yml
cluster.name: my-uo-es-cluster
node.name: node-1(第二台改为node-2,第三台改为node-3)
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["192.168.28.129:9300","192.168.28.130:9300","192.168.28.131:9300"]
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
第二步:禁用内存锁定(UOS默认禁止unlimited memlock):
echo 'elk soft memlock unlimited' | sudo tee -a /etc/security/limits.conf && echo 'elk hard memlock unlimited' | sudo tee -a /etc/security/limits.conf
第三步:降低swap使用率防止GC停顿:
sudo sysctl -w vm.swappiness=1
启动集群并验证节点发现
在每台机器上以elk用户后台启动:
sudo -u elk /usr/share/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch/elasticsearch.pid
等待约90秒后,在任一节点执行:
curl -X GET "localhost:9200/_cat/nodes?v&h=ip,heap.percent,role,master,name"
输出应显示三行记录,其中master列有*号标记主节点,role列含ml、data、ingest等标识,name列对应node-1/node-2/node-3。
若返回空或报connection refused,检查防火墙是否放行9200和9300端口:sudo ufw allow 9200 && sudo ufw allow 9300










