在系统平稳运行一年的基础上,为提供更好的服务,现针对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包下载到服务器,解压,并配置就可使用,配置如下:
1# Copyright 2015 Yahoo Inc. Licensed under the Apache License, Version 2.0 2# See accompanying LICENSE file. 3 4# This is the main configuration file for the application. 5# ~~~~~ 6 7# Secret key 8# ~~~~~ 9# The secret key is used to secure cryptographics functions. 10# If you deploy your application to several instances be sure to use the same key! 11play.crypto.secret="^<csmm5Fx4d=r2HEX8pelM3iBkFVv?k[mc;IZE<_Qoq8EkX_/7@Zt6dP05Pzea3U" 12play.crypto.secret=${?APPLICATION_SECRET} 13 14# The application languages 15# ~~~~~ 16play.i18n.langs=["en"] 17 18play.http.requestHandler = "play.http.DefaultHttpRequestHandler" 19play.http.context = "/" 20play.application.loader=loader.KafkaManagerLoader 21 22kafka-manager.zkhosts="10.1.115.181:2181,10.1.114.221:2181,10.1.114.231:2181/kafka" 23# kafka-manager.zkhosts=${?ZK_HOSTS} 24pinned-dispatcher.type="PinnedDispatcher" 25pinned-dispatcher.executor="thread-pool-executor" 26application.features=["KMClusterManagerFeature","KMTopicManagerFeature","KMPreferredReplicaElectionFeature","KMReassignPartitionsFeature"] 27 28akka { 29 loggers = ["akka.event.slf4j.Slf4jLogger"] 30 loglevel = "INFO" 31} 32 33 34basicAuthentication.enabled=true 35basicAuthentication.username="admin" 36basicAuthentication.password="admin" 37basicAuthentication.realm="Kafka-Manager" 38basicAuthentication.excluded=["/api/health"] # ping the health of your instance without authentification
如果出现jdk的问题,可以通过指定路径的方式解决:
1#!/usr/bin/env bash 2### ------------------------------- ### 3### Helper methods for BASH scripts ### 4### ------------------------------- ### 5JAVA_HOME="/Data/servers/jdk8" 6 7die() { 8 echo "$@" 1>&2 9 exit 1 10}
监控界面如下:

总结:
在本次升级中,主要是为了增加flume与kafka的并发,因为数据的问题,对es并未进行升级,但是在以后中,我们还是会对es进行升级,做数据平移,或者做双数据源,因为日志最多存过30天,这样的方案,还是非常容易的,请大家继续关注后续的博客。