在系统平稳运行一年的基础上,为提供更好的服务,现针对java,kafka,flume,zk,统一进行版本升级,请各位小伙伴跟着走起来,不要掉队啊!
名称
老版本号
新版本号
jdk
1.7.0_25
1.8.0
kafka
2.10-0.8.0.1
2.10-0.10.2.1
flume
1.6.0
1.7.0
zookeeper
3.4.6
3.4.8
jdk,zookeeper,flume:
这两个中间件平滑升级,没有特殊的地方,参考其他博客就好
kafka:
这个的变化还是很大的,咱们详细说来
1,zk的作用
offsets,这个值,标记kafka消费到哪了,以前由zk维护,但是,遇到并发比较大的情况,zk的数据出现错误的几率变大,目前版本交由kafka本身维护,kafka本身创建了一个topic解决这个问题,topic:__consumer_offsets,在最新的版本,zk的作用仅仅在维护集群主从关系上了,作用降低。
2,消费端变化
消费端的配置,发生了变化,和flume 1.6有些区别,但是1.7的版本还是对这些做了适配,基本配置不用变化。
3,监控的变化
以前的监控是基于zk的,目前已经不满足与最新的kafka,监控中间件升级为kafkamanager,将最新版本的zip包下载到服务器,解压,并配置就可使用,配置如下:
# Copyright 2015 Yahoo Inc. Licensed under the Apache License, Version 2.0
# See accompanying LICENSE file.
# This is the main configuration file for the application.
# ~~~~~
# Secret key
# ~~~~~
# The secret key is used to secure cryptographics functions.
# If you deploy your application to several instances be sure to use the same key!
play.crypto.secret="^<csmm5Fx4d=r2HEX8pelM3iBkFVv?k[mc;IZE<_Qoq8EkX_/7@Zt6dP05Pzea3U"
play.crypto.secret=${?APPLICATION_SECRET}
# The application languages
# ~~~~~
play.i18n.langs=["en"]
play.http.requestHandler = "play.http.DefaultHttpRequestHandler"
play.http.context = "/"
play.application.loader=loader.KafkaManagerLoader
kafka-manager.zkhosts="10.1.115.181:2181,10.1.114.221:2181,10.1.114.231:2181/kafka"
# kafka-manager.zkhosts=${?ZK_HOSTS}
pinned-dispatcher.type="PinnedDispatcher"
pinned-dispatcher.executor="thread-pool-executor"
application.features=["KMClusterManagerFeature","KMTopicManagerFeature","KMPreferredReplicaElectionFeature","KMReassignPartitionsFeature"]
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "INFO"
}
basicAuthentication.enabled=true
basicAuthentication.username="admin"
basicAuthentication.password="admin"
basicAuthentication.realm="Kafka-Manager"
basicAuthentication.excluded=["/api/health"] # ping the health of your instance without authentification
如果出现jdk的问题,可以通过指定路径的方式解决:
#!/usr/bin/env bash
### ------------------------------- ###
### Helper methods for BASH scripts ###
### ------------------------------- ###
JAVA_HOME="/Data/servers/jdk8"
die() {
echo "$@" 1>&2
exit 1
}
监控界面如下:
总结:
在本次升级中,主要是为了增加flume与kafka的并发,因为数据的问题,对es并未进行升级,但是在以后中,我们还是会对es进行升级,做数据平移,或者做双数据源,因为日志最多存过30天,这样的方案,还是非常容易的,请大家继续关注后续的博客。