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认证连接全流程配置,解决了部署中核心的启动失败、连接异常、端口修改等问题,服务可开机自启、远程访问,满足生产环境基础使用需求。

相关推荐
桌面运维家17 小时前
IDV云桌面vDisk机房建设方案如何查看分组使用统计
大数据·人工智能
isNotNullX17 小时前
数据架构是什么?数据架构和其他架构的区别是什么?
大数据·微服务·架构
SiYuanFeng18 小时前
新手学Git:以一个小游戏项目为例,完成初始化、提交、查看历史与恢复版本
大数据·git·elasticsearch
DianSan_ERP18 小时前
淘宝订单接口集成中如何正确处理消费者敏感信息的安全与合规问题?
大数据·运维·网络·人工智能·安全·servlet
iiiiyu18 小时前
常用API(StringJoiner类 & Math类 & System类)
java·大数据·开发语言·数据结构·编程语言
常宇杏起19 小时前
AI安全进阶:AI系统日志审计与安全监控技巧
大数据·人工智能·安全
2501_9481142419 小时前
星链4SAPI中转枢纽深度技术解构:架构优势、工程实践与演进脉络
大数据·人工智能·ai·架构
赞奇科技Xsuperzone19 小时前
零售行业桌面端算力升级方案(含最新GPU选型指南)
大数据·人工智能·零售
AniShort19 小时前
从单兵作战到工业化量产!AniShort重构AI短剧生产革命
大数据·人工智能·重构
2501_9481142419 小时前
大模型API调用成本优化的工程路径:星链4SAPI聚合网关的技术实践
大数据·开发语言·人工智能·架构·php