接上篇文章,上篇文章详细介绍了架构和单节点的搭建、配置和优化。本篇详细介绍集群方案。特别提醒没看上篇文章的请返回先看,本篇集群是在上篇文章的基础上配置的,并且上篇文章中的简单步骤,本篇不再说明,直接跳过。详解docker-compose安装sentry集群篇现在开始。
环境
上篇文章中的3个节点,并都已执行完install.sh没有报错。
主节点:192.168.1.100
从节点:192.168.1.101,192.168.1.102
教程
规划
任务目标
Sentry平台三台服务器集群部署
部署方式
采用docker平台,准确说应该是:docker-compose
主节点
服务端模块:redis、postgres、memcached、stmp、sentry-web、sentry-worker和sentry-corn
功能如下:
1 | redis #支持消息队列和任务调度 |
从节点
剩下2台作为从节点,组件有:sentry-worker、sentry-web和memcached。从节点可以随负载变化动态扩容
修改主节点配置
修改主节点配置文件docker-compose.yml,如下:
1 | version: '3.4' |
修改从节点配置
修改从节点配置文件docker-compose.yml,配置如下:
1 | version: '3.4' |
统一存储
集群分布式部署需要一个统一的存储服务,用于sourcemap等文件的存储。采用minio,部署在主节点。
安装
1 | mkdir -p /opt/minio/{data,config} |
创建bucket
访问minio页面
主从节点的配置文件config.yml添加filestore信息
1 | filestore.backend: 's3' |
启动
启动服务时,可worker数量可根据机器核数进行配置。
主节点启动
启动2个worker和1个web实例
1 | docker-compose up -d --scale worker=2 |
从节点启动
启动4个worker和一个web实例
1 | docker-compose up -d --scale worker=4 |
注意:以上配置需要根据服务器和流量的情况调整,以最大化利用机器资源。前端上传sourcemap文件较多时,worker耗费cpu资源会比较厉害
访问
然后负载均衡到所有节点的9000端口,访问即可,到这里集群搭建完成。
注意:这里做负载均衡时调用策略要用ip hash方式。如用轮训方式,web页面输入密码,会轮训到下个节点登录不了。
优化
redis拆分
上报时的并发太大,可以考虑将redis单独拆分出来。拆分出来redis,自行搭建集群。
sentry的配置更改如下:
连接外部redis集群环境配置需添加下面几项
1 | SENTRY_REDIS_HOST: xx.xx.xx.xx |
主节点docker-compose.yaml配置
从节点docker-compose.yml配置
添加清理定时任务
1 | docker exec -i onpremise-912_worker_1 sentry cleanup --days 60 && docker exec -i -u postgres onpremise-912_postgres_1 vacuumdb -U postgres -d postgres -v -f --analyze |
总结
sentry集群方案已全部搭建完成,当然该集群还可以横向扩展等等优化。