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

Sentry 高可用部署相关推荐

  1. Pod在多可用区worker节点上的高可用部署

    一.      需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布 ...

  2. Windows Admin Center 高可用部署

    本文老王将为大家实作Windows Admin Center的高可用部署,相信有了高可用的架构支持将更进一步推进该产品的落地 环境介绍 08dc2 lan 10.0.0.2 255.0.0.0 16s ...

  3. LYNC2013部署系列PART10:后端高可用部署

    前言:本篇文章介绍lync后端服务器高可用的部署,后端服务器的作用就不介绍了,系列第2篇文章中有介绍,目前已部署好了2台SQL服务器,分别为lync2013be.contoso.com和lync201 ...

  4. Pod在多可用区worker节点上的高可用部署 1

    一.      需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布 ...

  5. Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑

    Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑: ############################################################ # ...

  6. 节点部署_Pod在多可用区worker节点上的高可用部署

    一. 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可 ...

  7. Spark HA高可用部署、基于文件系统单点恢复、基于zookeeper的Standby Master、如何恢复到上一次活着master挂掉之前的状态 03

    1. Spark HA高可用部署 Spark Standalone集群时Master-Slaves架构的集群模式,和大部分的Master-Slaves结果集群一样,存在着Master单点故障的问题.如 ...

  8. rancher2.6.2 单机及高可用部署

    rancher2.6.2 单机及高可用部署 文章目录 rancher2.6.2 单机及高可用部署 前言 单机部署 高可用部署 k8s集成 前言 1.服务器准备 单机部署: 机器名 IP地址 部署内容 ...

  9. Exchange Server 2013 DAG高可用部署(一)-前期准备

    微软Exchange邮件服务器想必在当今这个信息产业发达的社会,大家都不陌生.我们的生活和工作现在已经离不开电子邮件,作为企业信息化的IT人员,如何给大家带来更高更好的邮件服务,这个应该是我们着重关注 ...

最新文章

  1. 批处理-取年月日、时分秒毫秒
  2. shell高级编程--引用
  3. python3.7知识点汇总
  4. php 添加失败是什么原因,安装zblog提示“创建c_option.php失败”的原因和解决办法...
  5. markdown编辑技巧
  6. 不会写代码也能当程序员?无代码来了,是福还是祸?
  7. phpserialize ,PHP 中变量序列化和反序列化在 Python 中的实现
  8. firework软件linux下,Linux 下的网页三剑客 都是免费的啊 (*^__^*)
  9. 【CISCN2021】第十四届全国大学生信息安全竞赛初赛-writeup
  10. 杰出人士的七种共性之7-独孤求败
  11. 《Linux运维总结:SVN提示Node remains in conflict解决办法》
  12. 国际反垃圾邮件组织有哪些?
  13. TypeScript 之 infer
  14. Android跳转qq进行聊天
  15. 【DASCTF2023】Misc mp3
  16. 产品的道、法、术(道篇)——老吴说产品
  17. 曲线救国: 使用 Markdown 编辑器来写 Confluence 文档
  18. 贪心算法:旅行商问题(TSP)
  19. 【转自知乎】5G关键技术之波束成形
  20. HTML5 DIV+CSS综合运用

热门文章

  1. Linux Mint 20 设定静态IP地址
  2. 嵌入式处理器DCD和SPACE区别,全局变量,局部变量,程序的栈,堆,程序编译结果的占用空间意思
  3. 2021HaaS新春大拜年
  4. Windos系统只在重启时会蓝屏,开关机正常
  5. cocos2dx 4.0入门之泡泡龙项目的分解(二)
  6. MongoDB(NoSQL)数据库入门及基本操作
  7. 有什么好的uni-app视频实战教程吗?
  8. java多线程详细理解
  9. VHDL语言基础-基本语句
  10. 超清大屏沉浸音效,用极米H6 4K版看剧更有代入感