Sentry 高可用部署

article/2025/10/12 16:09:26

Sentry 高可用部署,部署分析基于Sentry 10.1.0.dev 05e720a7
对应dockerhub镜像版本分别为:
getsentry/snuba:31c967e774759c0548652d986645fdff844e0a39
getsentry/sentry:8549f2a492c803bab77af26e7417272975b9369a
getsentry/symbolicator:94cdbb7b543ebe53744144305db21a56b6a0d5a8

Sentry官方对于自托管推荐的部署方式是Docker Compose,但这种方式有以下几个缺点:

  • 所有服务都部署在一台机器上
  • 所有的组件都不是高可用的

对于生产环境来说,组件高可用是一个必备的条件,所以有了下面的高可用部署,高可用部署分为两部分:

  • Sentry依赖中间件的高可用
  • Sentry本身组件的高可用

Sentry 服务

Sentry具体的服务关系及依赖,具体见下图:
在这里插入图片描述

需要注意以下几点:

  • symbolicator、symbolicator-cleanup 依赖挂载卷sentry-symbolicator:/data
  • web、cron、worker、post-process-forwarder、sentry-cleanup 也依赖挂载卷,具体可以可见:https://docs.sentry.io/server/filestore/

为什么需要关注挂载卷?

因为挂载卷依赖存储服务,如果没用高可用的存储服务,Sentry自身组件就难以做到全部高可用。

部署

Sentry依赖中间件

  • Sentry依赖中间件的高可用,可以通过购买云服务商的服务来实现或者自己搭建。
  • 通过修改sentry onpremise将Sentry依赖的服务替换为相关的ip或者域名,具体代码可以参考:jiankunking/onpremise。

Sentry自身服务

将Sentry服务拆分,部署到kubernetes集群中,具体设置参考onpremise中docker-compose.yml中的启动命令、端口、环境变量来设置。

其中有以下几点需要注意:

  • Sentry各个服务的启动命令,相比docker-compose.yml中command,不太一致,简单列一下:
    • snuba api
    • snuba consumer --auto-offset-reset=latest --max-batch-time-ms 750
    • snuba replacer --auto-offset-reset=latest --max-batch-size 3
    • symbolicator run
    • sentry run web --loglevel DEBUG
    • sentry run cron
    • sentry run worker
  • snuba api默认监听的是127.0.0.1,修改为0.0.0.0,具体修改位置参见:
    https://github.com/jiankunking/snuba/commit/69fee6253c6a78e7c2668bf6c86692e4df8fe012
  • sentry sentry/conf/server.py中KAFKA_CLUSTERS默认是localhost:9092,修改方式参见:
    https://github.com/jiankunking/onpremise/blob/master/sentry/cover/server.py#L1640
  • 构建sentry镜像,当启动命令为post-process-forwarder时,需要将自定义后的config.yml、sentry.conf.py拷贝到镜像/etc/sentry目录下,具体参见:
    https://github.com/jiankunking/onpremise/blob/master/sentry/Dockerfile#L10
  • sentry 环境变量中添加C_FORCE_ROOT=true,可以强制以root身份运行
  • install.sh脚本
    • 初始化clickhouse数据库结构
    • 添加初始用户
  • sentry worker依赖于sentry cron,所以不能只部署worker,否则会有下面的错误提示:Background workers haven’t checked in recently. This is likely an issue with your configuration or the workers aren’t running.

小结

总的来说,将sentry部署到kubernetes中,需要注意的点还是挺多的,很多细节需要看代码来排查。

2020-06-17 更新

Sentry 社区版不支持高可用的ClickHouse分布式表。

Distributed tables are not officially supported. 
DATASET_MODE would switch to distributed table names, but bootstrap won't work. 
You would have to manage your tables (create and all DDL operations) manually. 
This is not a support process, I can give you some hints, but you would be doing it at your own risk.On the other hand, we are working on this support though we cannot commit to a timeline at this time.

The environment variable DATASET_MODE does not work

二期

在这里插入图片描述

具体分析

在这里插入图片描述

关于本文的一些交流

https://forum.sentry.io/t/sentry-high-availability-deploy/11838/4

https://github.com/getsentry/onpremise/issues/747#issuecomment-729850059


http://chatgpt.dhexx.cn/article/tr0Nnh1l.shtml

相关文章

HA高可用

什么事应用程序的高可用 高可用性(high availability)通常用来描述一个系统经过专门的设计,从而减少停工的时间,而保持其服务的高度可用性 高可用程序的类型 主从方式(冷备) 两个相同的应用程序,一个对外提供服务,成为主程序,另一个平时不运行为备程序,就是一个主程序的备份,…

harbor高可用部署

harbor高可用简介 harbor目前有两种主流的高可用方案: 双主复制,harbor自带的镜像复制功能多harbor实例共享后端存储 双主复制架构在遇到大镜像时有同步延迟,并且一个实例故障后需要手动重新开启复制策略才能再次同步,下面以阿里…

HADOOP 高可用搭建

首先先说一下大概的步骤,就用四台为例,简单适合新手操作。 流程是:创建虚拟机,配置好;搭建linux系统;安装jdk(因为后面好多都依赖jkd);免密登录ssh;安装zook…

高可用详细概念及三种决策方式分析

文章目录 1.基本概念1.计算高可用2.存储高可用高可用状态决策1.独裁式2.协商式3.民主式 1.基本概念 这个定义的关键在于“无中断”,但恰好难点也在“无中断”上面,因为无论是单个硬件还是单 个软件,都不可能做到无中断,硬件会出故…

Nacos实现高可用

由于Nacos暂不支持Arm架构芯片的Mac集群搭建,本小节用Linxu云主机(Nacos比较吃内存,2个Nacos服务器集群,至少2G内存)环境演示。 通过前面的学习,我们已经了解了如何使用Nacos以及Nacos的功能等,…

浅谈高可用测试

前言 现今的互联网产品越来越注重可靠性,尤其是在生产环境中使用的系统,对高可用性都有一定的要求。而作为产品的提供方,在交付产品之前,也会对高可用进行验收测试。近期跟进过两个产品曾有高可用测试的需求,在此简单…

nginx高可用

Nginx高可用 为什么要使用nginx的高可用:因为nginx作为反向代理服务器时,有可能出现宕机的情况,而由于其反向代理的特性,就会导致其他服务器(tomcat等)无法被访问,这样项目就停止工作了。但是使…

RabbitMQ高可用

RabbitMQ高可用 各种消息队列对比使用推荐 RabbitMQ 高可用普通集群模式镜像集群模式保证消息队列的幂等性(消息不被重复消费)消息队列的可靠性传输生产者丢失数据RabbitMQ丢失数据消费者丢失数据 保证消息的顺序性消息积压问题 各种消息队列对比 特性ActiveMQRabbitMQRocketM…

系统高可用

系统高可用 1. 什么是高可用?可用性的判断标准是啥?1.1 可用性的判断标准是啥? 2. 哪些情况会导致系统不可用?3. 有哪些提高系统可用性的方法?3.1 注重代码质量,定时Review代码3.2 使用集群,减少…

HBase高可用

一、HBase高可用简介 HBase集群如果只有一个master,一旦master出现故障,将导致整个集群无法使用,所以在实际的生产环境中,需要搭建HBase的高可用,也就是让HMaster高可用,也就是需要再选择一个或多个节点也…

你管这破玩意儿叫高可用

大家好,我是坤哥 今天我们来聊一下互联网三高(高并发、高性能、高可用)中的高可用,看完本文相信能解开你关于高可用设计的大部分困惑 前言 高可用(High availability,即 HA)的主要目的是为了保障…

什么是高可用?高可用介绍:

前言: 高可用(High availability,即 HA)的主要目的是为了保障「业务的连续性」,即在用户眼里,业务永远是正常(或者说基本正常)对外提供服务的。高可用主要是针对架构而言&#xff0c…

HTML Responsive Web Page

注&#xff1a;参考网站 https://www.w3schools.com HTML Responsive Web Page index.html <!DOCTYPE html> <html><head><link rel"stylesheet" href"style.css"><title>Responsive web page</title><meta lan…

响应式布局【Responsive】 与 自适应布局 【adaptive】、单页面【SPA】 和多页面【MPA】

1、响应式布局 是一个网址能兼容多个terminate【终端】&#xff0c;而不是为每个终端做一个特定的版本 优点&#xff1a; 用户体验好节约开发时间、节省设计seo友好可以适用所有设备屏幕 缺点 设计与风格有局限性《自由度太低&#xff0c;局部性较大》灵活性有所欠缺 基于不…

Bootstrap:Responsive Design with Bootstrap(一)

1.Use Responsive Design with Bootstrap Fluid Containers 现在让我们回到我们的Cat Photo应用。这次&#xff0c;我们将用流行的响应式框架Bootstrap来美化它。 Bootstrap将会根据你的屏幕的大小来调整HTML元素的大小 —— 强调 响应式设计的概念。 通过响应式设计&#x…

responsive tables

以上内容原本是整理为ppt格式的&#xff0c;贴过来格式有点乱&#xff0c;请见谅。 其他responsive tables参考&#xff1a; http://gergeo.se/RWD-Table-Patterns/ 3种类型的代码参考 unseen column&#xff1a; http://runjs.cn/code/zrhodpx5 flip scroll&#xff1a; ht…

CSS之responsive image gallery

responsive image gallery 这次实例主要是练习如何讲不同的图片设置为一个栏目&#xff0c;并且能够根据屏幕的大小进行自适应的变换。需要注意的是&#xff0c;本次实例中运用到的重要的关键的内容是&#xff1a;float-left&#xff1b;box-sizing; media screen and (max-wi…

html5 响应式表格插件,响应式表格jQuery插件 – Responsive tables

响应式表格jQuery插件 – Responsive tables 4月 24, 2014 评论 (1) Sponsor 这个Responsive tables jQuery插件依赖于Bootstrap 3使用&#xff0c;比BS自带的自适应多了一些好用的功能&#xff0c;比如筛选显示&#xff0c;Focus选定、Table头滑动固定等&#xff0c;下来看看介…

SAP Fiori 设计准则里的 Responsive 表格概述

Responsive Table 是 SAP Fiori 中的默认表控件。 它包含一组 Line item 并且完全响应(fully responsive)。 根据具体情况&#xff0c;用户还可以从行项目导航到更多详细信息页面。 一个行项目包含多个数据点(data point)&#xff0c;这些数据点被分类到列中。 数据点是指一个…

Responsive Web测试

什么是Responsive Web设计 Ethan Marcotte曾于2010年5月25日在A List Apart发表了文章《Responsive Web Design》&#xff0c;首次提出了RWD(Responsive Web Design)的概念。其理念是&#xff0c;Web页面的设计能够自适应多种设备、平台和浏览器&#xff0c;同时减少缩放、平移…