Kafka版本滚动升级(不停机)
升级Kafka集群的版本其实很简单,核心步骤只需要4步,但是我们需要在升级的过程中确保每一步操作都不会“打扰”到producer和consumer的正常运转。为此,笔者在本机搭了一个测试环境进行生产环境的版本升级测试。在开始之前,简要介绍一下测试环境的部署情况及目标:Kafka3.3.1测试环境,而目标是把该集群升级到3.4.0版本。
Zookeeper集群
172.17.9.191
172.17.9.192
172.17.9.193
Kafka集群
172.17.9.191
172.17.9.192
172.17.9.193
现在Kafka版本:3.3.1,安装目录:/home/software/kafka_2.12-3.3.1
计划升级至版本:3.4.0,按照目录:/home/software/kafka_2.12-3.4.0
1、创建测试topic
1. /home/software/kafka_2.12-3.3.1/bin/kafka-topics.sh --bootstrap-server 172.17.9.191:9092 --create --replication-factor 3 --partitions 1 --topic first
2.
3. /home/software/kafka_2.12-3.3.1/bin/kafka-topics.sh --bootstrap-server 172.17.9.191:9092 --create --replication-factor 1 --partitions 1 --topic second
2、查看测试topic
/home/software/kafka_2.12-3.3.1/bin/kafka-topics.sh --bootstrap-server 172.17.9.191:9092 --describe --topic first
3、查看集群中所有的topic
/home/software/kafka_2.12-3.3.1/bin/kafka-topics.sh --bootstrap-server 172.17.9.191:9092 --list

1、安装新版本Kafka
先在172.17.9.191上面部署第一台3.4.0(新版本Kafka)。
1. tar -zxvf kafka_2.12-3.4.0 -C /home/software/
2. mkdir /home/software/kafka_2.12-3.4.0/datas
3. cp /home/software/kafka_2.12-3.3.1/config/server.properties /home/software/kafka_2.12-3.4.0/config/server.properties
2、修改好配置
注意:修改配置3.4.0(升级版本)的server.properties,添加2行,其他配置保持不变,特别是数据存储目录,cp 3.3.1(旧版本)的配置
1. cp /home/software/kafka_2.12-3.3.1/config/server.properties /home/software/kafka_2.12-3.4.0/config/server.properties
2. vim /usr/local/kafka_2.-0.10.2.2/config/server.properties
3. inter.broker.protocol.version=3.4.0
4. log.message.format.version=3.4.0
3、停止新版本
注意:停止原版本的kafka,使用kafka自带stop脚本bin下的kafka-server-stop.sh或者kill掉
1. /home/software/kafka_2.12-3.3.1/bin/kafka-server-stop.sh
2. ps -ef | grep kafka
4、启动新版本
注意:启动3.4.0的Kafka,由于之前配置了环境变量,注意用3.4.0目录下的程序去启动kafka,启动之后查看日志,发现在同步数据。
1. /home/software/kafka_2.12-3.4.0/bin/kafka-server-start.sh -daemon /home/software/kafka_2.12-3.4.0/config/server.properties
2. tail -100 /home/software/kafka_2.12-3.4.0/logs/server.log
3. cd datas/
4. ll

查看topic first:
/home/software/kafka_2.12-3.3.1/bin/kafka-topics.sh --bootstrap-server 172.17.9.191:9092 --describe --topic first
测试创建topic test1
/home/software/kafka_2.12-3.3.1/bin/kafka-topics.sh --bootstrap-server 172.17.9.191:9092 --create --replication-factor 3 --partitions 1 --topic test1

注意:替换新版broker后,注意查看新版broker是否已经注册到zookeeper,所在机器上的的副本是否已经可用。确定可用之后再更新下一台broker。
5.看kafka在zookeeper中节点信息和查看方式
(1).先到zookeeper的bin下面
cd /home/software/zookeeper-3.8.1/bin
(2).执行命令./zkCli.sh
(3).输入命令 ls /,ls /kafka/topics可以看到topic信息。
再依次对剩下两台重复操作即可。


尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案
有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or