Armbian离线安装ES+SkyWalking并注册系统服务

Armbian离线安装ES+SkyWalking并注册系统服务

前言

本文基于Armbian ARM64 架构,实现Elasticsearch 7.17 + SkyWalking 9.7.0 离线部署,完成系统服务注册、端口自定义、ES认证连接、远程访问等核心配置,同时解决部署中遇到的启动失败127错误、端口占用、ES连接异常、服务无法自启等问题,全程无外网依赖,配置精准无错误。

一、环境准备

  1. 离线安装包(ARM64架构)

  2. 部署路径:/mnt/sda1/(所有软件统一存放,便于管理)

二、JDK11离线安装与环境配置

1. 解压JDK11

Bash 复制代码
tar -zxvf OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.30_7.tar.gz -C /mnt/sda1/
mv /mnt/sda1/jdk-11.0.30+7 /mnt/sda1/jdk11

2. 配置环境变量

Bash 复制代码
vi /etc/profile

添加以下配置:

Bash 复制代码
export JAVA_HOME=/mnt/sda1/jdk11
export PATH=$JAVA_HOME/bin:$PATH

生效配置:

Bash 复制代码
source /etc/profile

3. 验证JDK

Bash 复制代码
java -version

出现JDK11版本信息即配置成功。

三、Elasticsearch 7.17 离线安装与配置

1. 解压ES

Bash 复制代码
tar -zxvf elasticsearch-7.17.29-linux-aarch64.tar.gz -C /mnt/sda1/
mv /mnt/sda1/elasticsearch-7.17.29 /mnt/sda1/elasticsearch

2. 核心配置修改

Bash 复制代码
vi /mnt/sda1/elasticsearch/config/elasticsearch.yml

替换为以下配置(单节点+密码认证+远程访问):

YAML 复制代码
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: false

3. 设置ES密码

启动ES后执行(密码自定义,本文示例:12345644):

Bash 复制代码
/mnt/sda1/elasticsearch/bin/elasticsearch-setup-passwords auto

记住elastic用户密码,后续SkyWalking连接需用。

4. 注册ES系统服务

Bash 复制代码
vi /etc/systemd/system/elasticsearch.service

写入配置:

TOML 复制代码
[Unit]
Description=Elasticsearch
After=network.target

[Service]
User=root
Environment=JAVA_HOME=/mnt/sda1/jdk11
WorkingDirectory=/mnt/sda1/elasticsearch
ExecStart=/mnt/sda1/elasticsearch/bin/elasticsearch
Restart=always

[Install]
WantedBy=multi-user.target

四、SkyWalking 9.7.0 离线安装与核心配置

1. 解压SkyWalking

Bash 复制代码
tar -zxvf apache-skywalking-apm-9.7.0.tar.gz -C /mnt/sda1/
mv /mnt/sda1/apache-skywalking-apm-9.7.0 /mnt/sda1/skywalking

2. 配置SkyWalking OAP连接ES

修改OAP核心配置,对接ES存储:

Bash 复制代码
vi /mnt/sda1/skywalking/config/application.yml

找到storage模块,修改为:

YAML 复制代码
storage:
  selector: ${SW_STORAGE:elasticsearch}
  elasticsearch:
    namespace: ${SW_NAMESPACE:""}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
    protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
    user: ${SW_ES_USER:"elastic"}
    password: ${SW_ES_PASSWORD:"12345644"}
    indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1}
    indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}

关键修改

  • 存储类型改为elasticsearch

  • 填写ES的elastic账号密码

  • 单节点ES将副本数改为0(避免告警)

3. 修改SkyWalking UI端口为9201

SkyWalking UI默认端口8080,修改为9201并开启远程访问:

Bash 复制代码
vi /mnt/sda1/skywalking/webapp/application.yml

修改端口配置:

YAML 复制代码
serverPort: ${SW_SERVER_PORT:-9201}
oapServices: ${SW_OAP_ADDRESS:-http://localhost:12800}
zipkinServices: ${SW_ZIPKIN_ADDRESS:-http://localhost:9412}

说明 :SkyWalking 9.7.0 UI默认监听0.0.0.0,无需额外配置远程访问。

五、SkyWalking 系统服务注册

1. 注册OAP服务

Bash 复制代码
vi /etc/systemd/system/skywalking-oap.service

写入配置(解决systemd找不到JDK的127错误):

TOML 复制代码
[Unit]
Description=Apache SkyWalking OAP
After=network.target elasticsearch.service
Requires=elasticsearch.service

[Service]
User=root
Environment=JAVA_HOME=/mnt/sda1/jdk11
Environment=PATH=/mnt/sda1/jdk11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
WorkingDirectory=/mnt/sda1/skywalking
ExecStart=/mnt/sda1/skywalking/bin/oapService.sh
Restart=always

[Install]
WantedBy=multi-user.target

2. 注册UI服务

Bash 复制代码
vi /etc/systemd/system/skywalking-ui.service

写入配置:

TOML 复制代码
[Unit]
Description=Apache SkyWalking UI
After=network.target skywalking-oap.service
Requires=skywalking-oap.service

[Service]
User=root
Environment=JAVA_HOME=/mnt/sda1/jdk11
Environment=PATH=/mnt/sda1/jdk11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
WorkingDirectory=/mnt/sda1/skywalking
ExecStart=/mnt/sda1/skywalking/bin/webappService.sh
Restart=always

[Install]
WantedBy=multi-user.target

六、服务启动与开机自启

1. 重载系统服务

Bash 复制代码
systemctl daemon-reload

2. 设置开机自启

Bash 复制代码
systemctl enable elasticsearch skywalking-oap skywalking-ui

3. 启动服务

Bash 复制代码
systemctl start elasticsearch
//过一会再启动skywalking
systemctl start skywalking-oap skywalking-ui

4. 查看服务状态

Bash 复制代码
systemctl status elasticsearch
systemctl status skywalking-oap
systemctl status skywalking-ui

服务显示active (running)即启动成功。

七、核心问题解决(部署必看)

问题1:服务启动报错code=exited, status=127

  • 原因:systemd无法识别系统环境变量,找不到JDK

  • 解决:服务文件中添加Environment=JAVA_HOME=/mnt/sda1/jdk11指定JDK路径

问题2:SkyWalking OAP无法连接ES

  • 原因:ES密码错误、存储类型未改、单节点副本数未设为0

  • 解决:核对ES账号密码;storage.selector设为elasticsearchindexReplicasNumber设为0

问题3:端口占用导致启动失败

  • 原因:残留进程占用12800/3100/9200端口

  • 解决:

Bash 复制代码
pkill -f 'skywalking'
fuser -k 12800/tcp 3100/tcp 9200/tcp

问题4:SkyWalking UI无法远程访问

  • 解决:UI配置文件serverPort修改为目标端口,防火墙放行端口,SkyWalking 9.7.0默认支持远程访问,无需额外配置host

八、访问验证

  1. Elasticsearch验证
Bash 复制代码
curl -u elastic:12345644 http://服务器IP:9200

返回ES版本信息即正常。

  1. SkyWalking UI访问

浏览器打开:http://服务器IP:9201

默认账号:admin,密码:admin

九、总结

本文完成了Armbian ARM64架构下ES+SkyWalking离线部署、系统服务注册、端口自定义、ES认证连接全流程配置,解决了部署中核心的启动失败、连接异常、端口修改等问题,服务可开机自启、远程访问,满足生产环境基础使用需求。

相关推荐
AC赳赳老秦16 小时前
OpenClaw与思维导图工具联动:自动生成工作规划脑图、拆解任务节点,适配职场管理
java·大数据·服务器·数据库·python·php·openclaw
阳艳讲ai16 小时前
中小企业AI技术方案选型评估框架:四类架构与评估指标分析
大数据·人工智能·企业ai培训·ai获客·九尾狐ai·ai应用工具
易观Analysys16 小时前
中美Agent生态的路径差异——《重构与崛起——OpenClaw时代的中国Agent产业生态报告》解读三
大数据·人工智能
zhojiew17 小时前
AWS云上使用Redshift Test Drive进行负载重放测试的实践
大数据·redshift
移动云开发者联盟17 小时前
存智赋能 共筑AI存储新生态,移动云聚力技术创新夯实AI数据基石
大数据·人工智能
TDengine (老段)17 小时前
TDengine 数据库创建与参数详解
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
面向Google编程18 小时前
从零学习Kafka:调优
大数据·kafka
不是株18 小时前
ElasticSearch
大数据·elasticsearch·搜索引擎
随身数智备忘录18 小时前
拆解合理化建议系统的三大流程,合理化建议如何解决建议征集难与落地慢
大数据·人工智能
逸Y 仙X18 小时前
文章三十四:ElasticSearch Script脚本实战
大数据·elasticsearch·搜索引擎·全文检索