Armbian离线安装ES+SkyWalking并注册系统服务
前言
本文基于Armbian ARM64 架构,实现Elasticsearch 7.17 + SkyWalking 9.7.0 离线部署,完成系统服务注册、端口自定义、ES认证连接、远程访问等核心配置,同时解决部署中遇到的启动失败127错误、端口占用、ES连接异常、服务无法自启等问题,全程无外网依赖,配置精准无错误。
一、环境准备
-
离线安装包(ARM64架构)
-
部署路径:
/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设为elasticsearch;indexReplicasNumber设为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
八、访问验证
- Elasticsearch验证
Bash
curl -u elastic:12345644 http://服务器IP:9200
返回ES版本信息即正常。
- SkyWalking UI访问
浏览器打开:http://服务器IP:9201
默认账号:admin,密码:admin
九、总结
本文完成了Armbian ARM64架构下ES+SkyWalking离线部署、系统服务注册、端口自定义、ES认证连接全流程配置,解决了部署中核心的启动失败、连接异常、端口修改等问题,服务可开机自启、远程访问,满足生产环境基础使用需求。