SkyWalking 存储集群部署
介绍
SkyWalking的后端存储用于持久化收集到的分布式追踪、指标和日志数据。它支持多种存储后端,包括Elasticsearch、H2、MySQL、TiDB等。在生产环境中,通常使用Elasticsearch集群作为存储后端,因为它能够处理大规模数据并提供高性能查询。本章将重点介绍如何部署和配置SkyWalking的存储集群。
存储后端选项
SkyWalking支持以下存储后端:
- Elasticsearch:适合生产环境,支持集群部署,具有高可用性和可扩展性。
- H2:嵌入式数据库,适合开发和测试环境。
- 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_hosts
和cluster.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集群作为存储后端。
- 集群规模:6个Elasticsearch节点(3个主节点,3个数据节点)。
- 配置:
- 每个节点16GB内存,8个CPU核心。
- 数据保留策略设置为30天。
- 效果:
- 查询延迟低于100ms。
- 集群能够处理每秒10万条追踪数据。
总结
部署SkyWalking存储集群是确保监控系统稳定性和性能的关键步骤。对于生产环境,Elasticsearch集群是最佳选择,而H2适合开发和测试。通过合理的配置和优化,可以满足不同规模的需求。
附加资源
练习
- 尝试在本地部署一个单节点的Elasticsearch实例,并配置SkyWalking使用它。
- 使用
curl
命令检查Elasticsearch集群的健康状态。 - 修改
application.yml
文件,将存储后端从H2切换到Elasticsearch。