这篇文章的目的就是实现LTS从单机到集群的部署。
公司遗留的问题LTS部署在一台机器上,随着业务不断的增大这台服务器压力越来越大,首先想到的就是加一台服务器疏解压力。
关键知识点
记得官网说LTS的jobclient\jobtracker\tasktracker节点都是无状态的,所以天生支持多节点集群方式部署。分析发现一般的业务场景jobclient\tasktracker都是在业务服务内部集成,正在分成任务接收、管理、分配支持的只有jobtracker在做。这样一来目标就很清晰了,增加jobtracker节点数量。
在部署目录config下有个默认的目录zoo,结构如下:
/zoo/
jobtracker.cfg
log4j.properties
lts-monitor.cfg
jobtracker.cfg内容如下:
registryAddress=zookeeper://xxx.xx.xx.xx:2181
# JobTracker的监听端口
listenPort=3502
# 集群名称
clusterName=isesol_cluster
# LTS业务日志, 可选值 console, mysql, mongo
configs.job.logger=mysql
# zk客户端,可选值 zkclient, curator
configs.zk.client=zkclient
# ---------以下是任务队列配置-----------
# 任务队列,可选值 mysql, mongo
configs.job.queue=mysql
# ------ 1. 如果是mysql作为任务队列 ------
configs.jdbc.url=jdbc:mysql://xxx.xx.xx.xxx:8066/lts
configs.jdbc.username=lts123
configs.jdbc.password=lts123
配置多个节点步骤
-
将整个部署目录整体复制到另一个服务器上,目录权限分配好。
-
将目录/lts/config/zoo/jobtracker.cfg文件中
listenPort=3502
的端口修改,保证可以使用(一般复制不需要改)。同时需要保证zookeeper和mysql的ip&port配置都是正确的,一般公司都是一样的。 -
在/lts/bin的目录下有个启动脚本
jobtracker.sh
,执行命令:./jobtracker.sh zoo start
-
检查/lts/logs目录下是否有
jobtracker-zoo.out
日志,zoo这个名字会更加zoo目录名自动生成,也就是会随着它一起改变。
总结
LTS的节点:JobClient,JobTracker,TaskTracker,三个是无状态,可以支持多节点集群部署。
在一台服务器上启动多个jobtracker只需要将zoo目录复制一份改个名字,把里面的jobtracker.cfg中端口号配置不冲突即可。
lts-admin不支持多节点,只能启动一个服务。
作者:Owen Jia
欢迎关注他的博客:Owen Blog