SkyWalking 集群部署
介绍
SkyWalking是一个开源的分布式系统监控和追踪工具,用于收集、分析、聚合和可视化分布式系统的数据。在生产环境中,单节点的SkyWalking可能无法满足高可用性和性能需求,因此需要部署SkyWalking集群。集群部署可以确保系统的高可用性、负载均衡和数据冗余。
本指南将逐步介绍如何部署SkyWalking集群,包括配置存储后端、设置OAP(Observability Analysis Platform)集群和部署UI组件。
前置条件
在开始之前,请确保满足以下条件:
- 已安装Java 8或更高版本。
- 已安装并配置好存储后端(如Elasticsearch、MySQL等)。
- 至少两台服务器用于部署OAP节点。
存储后端配置
SkyWalking支持多种存储后端,包括Elasticsearch、MySQL、TiDB等。以下是配置Elasticsearch作为存储后端的示例:
-
修改
config/application.yml
文件:storage:
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} -
启动Elasticsearch集群:
# 在每台Elasticsearch节点上执行
./bin/elasticsearch
备注
确保Elasticsearch集群已正确配置,并且所有节点可以互相通信。
OAP集群部署
OAP(Observability Analysis Platform)是SkyWalking的核心组件,负责数据处理和分析。以下是部署OAP集群的步骤:
-
修改
config/application.yml
文件:cluster:
selector: ${SW_CLUSTER:standalone}
standalone:
# 使用ZooKeeper作为集群协调器
zookeeper:
hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
sessionTimeout: ${SW_CLUSTER_ZK_SESSION_TIMEOUT:100000} -
启动OAP节点:
# 在每台OAP节点上执行
./bin/oapService.sh -
验证集群状态:
# 检查日志文件,确认节点已加入集群
tail -f logs/skywalking-oap-server.log
提示
如果使用ZooKeeper,请确保所有OAP节点配置相同的ZooKeeper地址。
UI组件部署
SkyWalking UI是用户与监控数据交互的界面。以下是部署UI的步骤:
-
修改
webapp/webapp.yml
文件:server:
port: 8080
collector:
path: /graphql
ribbon:
listOfServers: ${SW_COLLECTOR_RIBBON_LISTOFSERVERS:localhost:12800,another-oap-node:12800} -
启动UI服务:
./bin/webappService.sh
警告
确保ribbon.listOfServers
包含所有OAP节点的地址,以实现负载均衡。
实际案例
假设你有一个由3台服务器组成的微服务系统,需要部署SkyWalking集群以实现高可用性监控:
-
架构图:
-
配置说明:
- 两台OAP节点(
oap-node1
和oap-node2
)共享同一个Elasticsearch集群。 - UI组件配置为同时连接两台OAP节点。
- 两台OAP节点(
总结
通过部署SkyWalking集群,你可以实现以下优势:
- 高可用性:单节点故障不会影响整体监控。
- 负载均衡:多OAP节点分担数据处理压力。
- 数据冗余:存储后端(如Elasticsearch)确保数据安全。
附加资源
练习
- 尝试部署一个包含2个OAP节点和1个UI组件的SkyWalking集群。
- 使用微服务框架(如Spring Cloud)生成追踪数据,并观察集群如何处理这些数据。
- 模拟一个OAP节点故障,验证集群的高可用性。