跳到主要内容

SkyWalking 存储集群部署

介绍

SkyWalking的后端存储用于持久化收集到的分布式追踪、指标和日志数据。它支持多种存储后端,包括Elasticsearch、H2、MySQL、TiDB等。在生产环境中,通常使用Elasticsearch集群作为存储后端,因为它能够处理大规模数据并提供高性能查询。本章将重点介绍如何部署和配置SkyWalking的存储集群。

存储后端选项

SkyWalking支持以下存储后端:

  1. Elasticsearch:适合生产环境,支持集群部署,具有高可用性和可扩展性。
  2. H2:嵌入式数据库,适合开发和测试环境。
  3. MySQL/TiDB:关系型数据库,适合中小规模部署。
提示

生产环境推荐使用Elasticsearch集群,因为它能够轻松扩展并处理高吞吐量的数据。

部署Elasticsearch集群

1. 准备工作

在部署Elasticsearch集群之前,确保满足以下条件:

  • 至少3个节点(推荐奇数个节点以避免脑裂问题)。
  • 每个节点至少有4GB内存和2个CPU核心。
  • 安装了Java 11或更高版本。

2. 安装Elasticsearch

以下是在Linux系统上安装Elasticsearch的步骤:

bash
# 下载并安装Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.16.2-linux-x86_64.tar.gz
cd elasticsearch-7.16.2/

3. 配置Elasticsearch集群

编辑config/elasticsearch.yml文件,配置集群名称、节点名称和网络设置:

yaml
cluster.name: skywalking-cluster
node.name: node-1
network.host: 0.0.0.0
discovery.seed_hosts: ["node1-ip", "node2-ip", "node3-ip"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
警告

确保discovery.seed_hostscluster.initial_master_nodes中的节点名称和IP地址与实际环境一致。

4. 启动Elasticsearch

在每个节点上启动Elasticsearch:

bash
./bin/elasticsearch

验证集群状态:

bash
curl -X GET "localhost:9200/_cluster/health?pretty"

输出示例:

json
{
"cluster_name" : "skywalking-cluster",
"status" : "green",
"number_of_nodes" : 3,
"active_shards" : 10
}

部署H2数据库(开发和测试环境)

对于开发和测试环境,可以使用H2嵌入式数据库。SkyWalking默认使用H2,无需额外配置。

1. 配置H2

编辑config/application.yml文件,确保存储配置如下:

yaml
storage:
selector: ${SW_STORAGE:h2}
h2:
driver: org.h2.jdbcx.JdbcDataSource
url: jdbc:h2:mem:skywalking-oap-db
user: sa
metadataQueryMaxSize: 5000

2. 启动SkyWalking

启动SkyWalking OAP服务:

bash
./bin/oapService.sh

实际案例

案例:电商平台的SkyWalking存储集群

假设一个电商平台使用SkyWalking监控其微服务架构。平台每天产生数TB的追踪数据,因此选择Elasticsearch集群作为存储后端。

  1. 集群规模:6个Elasticsearch节点(3个主节点,3个数据节点)。
  2. 配置
    • 每个节点16GB内存,8个CPU核心。
    • 数据保留策略设置为30天。
  3. 效果
    • 查询延迟低于100ms。
    • 集群能够处理每秒10万条追踪数据。

总结

部署SkyWalking存储集群是确保监控系统稳定性和性能的关键步骤。对于生产环境,Elasticsearch集群是最佳选择,而H2适合开发和测试。通过合理的配置和优化,可以满足不同规模的需求。

附加资源

  1. Elasticsearch官方文档
  2. SkyWalking存储配置指南
  3. H2数据库文档

练习

  1. 尝试在本地部署一个单节点的Elasticsearch实例,并配置SkyWalking使用它。
  2. 使用curl命令检查Elasticsearch集群的健康状态。
  3. 修改application.yml文件,将存储后端从H2切换到Elasticsearch。