悠悠楠杉
AzkabanTwoServer模式部署
一、为什么选择Two Server模式?
在金融级大数据场景中,单机版Azkaban的脆弱性逐渐显现。某证券公司的晨间报表系统曾因单节点故障导致200+关键作业中断,直接影响了开盘前的决策分析。Two Server模式通过主备双活架构,将系统可用性从99%提升至99.99%,故障切换时间控制在30秒内。
核心优势对比:
- 故障自动检测:通过ZK心跳机制实现秒级故障感知
- 无状态切换:Executor节点同时连接双Web Server
- 作业续跑能力:MySQL共享存储保障任务状态一致性
二、部署前的关键准备
2.1 硬件配置建议
生产环境推荐采用物理机部署:
- Web Server:16核/64GB内存/SSD阵列(需保障ZK连接稳定性)
- Executor:根据作业复杂度动态扩展(建议初始配置32核/128GB)
某电商大促期间因虚拟机资源争用导致任务堆积的教训表明,容器化部署需谨慎评估资源隔离方案。
2.2 软件环境清单
- JDK 1.8+(需验证JVM参数)
- MySQL 5.7+(必须配置主从复制)
- ZooKeeper 3.5+(建议3节点集群)
- Azkaban 3.90.0+(注意插件兼容性)
三、分步部署实战
3.1 数据库层配置
sql
CREATE DATABASE azkaban DEFAULT CHARSET utf8mb4;
GRANT ALL ON azkaban.* TO 'az_user'@'%' IDENTIFIED BY 'Complex@Pass123';
-- 关键配置项
innodb_buffer_pool_size = 12G
sync_binlog = 1
3.2 双机协同配置
azkaban.properties
核心参数:properties
主备节点差异化配置
azkaban.node.type=web
azkaban.webserver.external.https.port=8443
共享配置
memcached.servers=192.168.1.10:11211,192.168.1.11:11211
azkaban.use.multiple.executors=true
executor.port=12321
3.3 验证流程
- 主节点启动后立即触发元数据初始化
- 备节点启动时应自动同步数据库版本
- 通过
curl -k https://primary:8443/status
检查集群状态
四、生产环境调优经验
4.1 常见故障处理
- 脑裂问题:通过设置
zookeeper.connection.timeout.ms=30000
预防 - 任务堆积:调整
azkaban.executor.maxThreads=50
(默认20) - 内存泄漏:添加JVM参数
-XX:+HeapDumpOnOutOfMemoryError
4.2 性能监控体系
建议部署Prometheus监控看板,重点监控:
- 单个Executor的排队任务数
- DB连接池利用率
- 工作流平均延迟时间
五、企业级扩展方案
某跨国物流企业在双机基础上实现了:
1. 跨机房部署:通过VIP实现地域容灾
2. 动态扩缩容:基于K8s的Executor自动伸缩
3. 作业分级调度:黄金级作业优先分配资源
实测数据显示,优化后的系统可支持日均10万+任务的稳定调度,关键路径任务准时率达到99.95%。
结语
Two Server模式不是简单的1+1备份,而是构建在共享存储、分布式协调、无状态服务等核心技术上的有机整体。随着Azkaban 4.0即将支持Kubernetes原生调度,建议企业在现有架构中预留接口兼容未来演进方向。