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

相关推荐
Linux-18747 小时前
分布式链路追踪系统之docker-compose安装skywalking
云原生·docker-compose·skywalking·分布式链路追踪系统·应用程序性能监控
大模型码小白9 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
阿里云大数据AI技术11 小时前
更快、更稳、更省:揭秘阿里云 Elasticsearch 存算分离与弹性扩缩
elasticsearch
延凡科技11 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
ifenxi爱分析12 小时前
爱分析最新报告解读:AI数据基础设施与数据中台的区别
大数据·人工智能
阿里云大数据AI技术12 小时前
Search Lake:ES x Paimon 让湖上多模态数据可搜可用
人工智能·elasticsearch·搜索引擎
品牌全球行13 小时前
共商共建共享 链接数字未来——“一带一路数字新城(深圳)会客厅筹备办”揭牌仪式在深圳隆重举行
大数据·人工智能
数智化管理手记15 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
ApacheSeaTunnel15 小时前
Apache SeaTunnel AI CLI Benchmark:7 款大模型、100 个 ETL 任务实测,谁真正能跑起来?
大数据·ai·开源·大模型·数据集成·cli·seatunnel·技术分享·数据同步
电商API_1800790524716 小时前
企业ERP进销存场景|京东商品详情接口自动同步方案|凭证鉴权批量调用技术实操
大数据·运维·人工智能·爬虫·数据挖掘·网络爬虫