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

相关推荐
D愿你归来仍是少年3 小时前
Apache Spark 第 13 章 附加篇 · Apache Spark Real-Time Mode 实时计算
大数据·spark·apache
菜鸡00013 小时前
把一个项目传到 GitLab 的某个群组
大数据·elasticsearch·gitlab
北京软秦科技有限公司11 小时前
AI审核如何助力合规取证?IACheck打造环境检测报告电子存证与法律风险防控新路径
大数据·人工智能
Kethy__11 小时前
计算机中级-数据库系统工程师-计算机体系结构与存储系统
大数据·数据库·数据库系统工程师·计算机中级
云原生指北13 小时前
命令行四件套:fd-rg-fzf-bat
java·大数据·elasticsearch
Datacarts14 小时前
AI大模型时代:微店商品数据API如何重构反向海淘决策
大数据·人工智能·重构
ws20190714 小时前
技术交流与商贸融合,2026广州汽车测试测量展释放产业协同新动能
大数据·人工智能·科技·汽车
运维老曾16 小时前
Flink 自定义数据源开发流程
大数据·flink
umeelove3516 小时前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins