linux下kafka与zookeeper集群部署

*********************************配置主机名,通过主机名连接机器*********************************

比如说,已经有了三台主机

1,在linux上设置hostname,通过hostname来访问linux虚拟机

1.1. 修改hosts文件

vim /etc/hosts#/etc/hosts 的内容一般有如下类似内容:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.202.156    node1
192.168.202.157    node2
192.168.202.158    node3

node1我当时没有专门加这一行,而是直接在127.0.0.1后面,把localhost.localdomain修改为 node1

1.2. 修改network

修改配置文件/etc/sysconfig/network
修改HOSTNAME=yournameNETWORKING=yes
HOSTNAME=node1

然后三台机器重启,reboot

重启后,ssh node2 ,发现能通过主机名字,连上

*********************************不同机器间,免密访问*********************************

通过secureCRT,send commands to all sessions,可以达到一个输入,在多个linux中响应

免密访问可以看 http://blog.chinaunix.net/uid-26284395-id-2949145.html

1、ssh-keygen

2、ssh-copy-id -i  /root/.ssh/id_rsa.pub node1  (更换node2、3,然后一共重复三遍,将每台机器的publickey放到三台机器中)

最后,可以查看 cat /root/.ssh/authorized_keys 是否有node1、2、3,有的话就是可以

通过ssh node1、2、3,可以分别连上三台机器。

*********************************安装clustershell*********************************

我的linux是CentOS6.5

去下载包 clustershell-1.6-1.el6.noarch.rpm — RPM RHEL6/CentOS6/SL6

https://github.com/cea-hpc/clustershell/downloads

执行命令,安装:rpm -ivh clustershell-1.6-1.el6.noarch.rpm

安装成功后,

vim /etc/clustershell/groups在groups里面加一个组kafka: node[1-3]

这样就把node[1-3] 加入到kafka这个组里面。

这样,clustershell 安装成功

clush  -g kafka -c /opt/kafka

可以将/opt/kafka复制到集群中这个组中去

*********************************安装zookeeper,并启动*********************************

 

cd zookeeper-3.4.10cd conf/cp zoo_sample.cfg zoo.cfgvim zoo.cfg 
加入:
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888clush -g kafka -c zoo.cfg clush -g kafka mkdir /tmp/zookeeperecho "1" > /tmp/zookeeper/myid[root@node1 conf]# clush -g kafka cat /tmp/zookeeper/myid 
node3: 3
node2: 2
node1: 1[root@node1 zookeeper-3.4.10]# clush -g kafka "/opt/kafka/zookeeper-3.4.10/bin/zkServer.sh start /opt/kafka/zookeeper-3.4.10/conf/zoo.cfg "
node1: ZooKeeper JMX enabled by default
node1: Using config: /opt/kafka/zookeeper-3.4.10/conf/zoo.cfg
node2: ZooKeeper JMX enabled by default
node3: ZooKeeper JMX enabled by default
node2: Using config: /opt/kafka/zookeeper-3.4.10/conf/zoo.cfg
node3: Using config: /opt/kafka/zookeeper-3.4.10/conf/zoo.cfg
node1: Starting zookeeper ... STARTED
node2: Starting zookeeper ... STARTED
node3: Starting zookeeper ... STARTED[root@node1 zookeeper-3.4.10]# clush -g kafka "/opt/kafka/zookeeper-3.4.10/bin/zkServer.sh status /opt/kafka/zookeeper-3.4.10/conf/zoo.cfg "
通过看各个节点的状态,验证zookeeper集群是否启动成功
也可以通过看 2181/2888/3888这几个端口是否都被占用来验证

如果没有启动成功,那就可能是防火墙的问题,吧防火墙关了即可

clush -g kafka service iptables stop

接下来,可以看看三台机器数据是不是同步的:
在 node1 上,用 zookeeper 的客户端工具,连接服务器
bin/zkCli.sh -server node1:2181
#
#
#
#
ls /
会看到 / 下面的一些东西
也可以创建一个节点,并给他一个值hello:
create /test hello
ls / 可以看一下
然后在 node2 上,如果可以看到node1 创建的数据,说明数据是同步一致的:
bin/zkCli.sh -server node1:2181
get /test 可以看到刚才输入的hello
通过quit可以退出

 

*********************************安装kafka,并启动*********************************

安装:
修改server.properties 
broker.id=1
zookeeper.connect=node1:2181,node2:2181,node3:2181
修改完成后,分发到集群中
并单独修改broker.id=2 、3 之类在三台机器上启动:
bin/kafka-server-start.sh -daemon config/server.properties
启动后,查看9092端口是否被监听
lsof -i:9092


 

在node1上创建消费者,接收消息

创建一个topic: [root@node1 kafka_2.
10-0.10.2.1]# bin/kafka-topics.sh --zookeeper node1:2181 --topic topic1 --create --partitions 3 --replication-factor 2 Created topic "topic1". 查看这个topic [root@node1 kafka_2.10-0.10.2.1]# bin/kafka-topics.sh --zookeeper node1:2181 --topic topic1 --describe Topic:topic1 PartitionCount:3 ReplicationFactor:2 Configs:Topic: topic1 Partition: 0 Leader: 1 Replicas: 1,3 Isr: 1,3Topic: topic1 Partition: 1 Leader: 2 Replicas: 2,1 Isr: 2,1Topic: topic1 Partition: 2 Leader: 3 Replicas: 3,2 Isr: 3,2 创建一个consumer,去接收生产者的消息 [root@node1 kafka_2.10-0.10.2.1]# bin/kafka-console-consumer.sh --zookeeper node1:2181 --topic topic1 Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].1 hello

 

在node2上创建生产者,生产消息
[root@node2 kafka_2.
10-0.10.2.1]# bin/kafka-console-producer.sh --broker-list node2:9092 --topic topic1 1 hello

 

查看已有的topic
bin/kafka-topics.sh --list --zookeeper node1:2181

 

Furthermore, ConsumerOffestChecker shows a row for each topic partition. Your topic topic5 does have some partitions.
  • Pid: partition ID
  • Offset: the latest committed offset for a partition for the corresponding consumer group
  • logSize: the number of messages stored in the partition
  • Lag: the number of not yet consumed message for a partition for the corresponding consumer group (ie, lag = logSize - offset)
  • Owner: unique ID of the running consumer thread

[orco@node1 kafka_2.10-0.10.1.1]$ bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper node1 --topic topic5 --group group1
[
2017-07-26 11:39:16,748] WARN WARNING: ConsumerOffsetChecker is deprecated and will be dropped in releases following 0.9.0. Use ConsumerGroupCommand instead. (kafka.tools.ConsumerOffsetChecker$) Group Topic Pid Offset logSize Lag Owner group1 topic5 0 0 0 0 none group1 topic5 1 10 10 0 none group1 topic5 2 0 0 0 none

 

有点记不清,eclipse中使用java api 调用kafka服务,好像额外需要在service.properties中修改下面这个

#listeners=PLAINTEXT://:9092

listeners=PLAINTEXT://192.168.202.156:9092

或者是

listeners=PLAINTEXT://node1:9092

不同机器,不同的node2 node3等等

转载于:https://www.cnblogs.com/orco/p/6844757.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调用Xvid编码器流程(基于xvid1.1.0)

xvid有两种编码方式:single pass和twopass single pass模式编码简单,速度也快,但最终效果不如twopass。 twopass就是视频压制需要经过两次编码,分别为twopass-1st pass(简称1pass)和twopass…

关于box-shadow属性的一点心得

一般我用到box-shadow都是用于诸如按钮,文本块,某些图标,css类似为: box-shadow: 1px 1px 5px rgba(0, 0, 0, .8);这样,样式看上去会更加柔和,或者增加了立体感。 我个人的理解上,box-shadow的本质就是本体…

Laravel核心解读--控制器

控制器 控制器能够将相关的请求处理逻辑组成一个单独的类, 通过前面的路由和中间件两个章节我们多次强调Laravel应用的请求在进入应用后首现会通过Http Kernel里定义的基本中间件 protected $middleware [\Illuminate\Foundation\Http\Middleware\CheckForMaintena…

C#枚举、值、字符串的相互转换

目录枚举的定义使用方式优点代码示例枚举的定义 枚举是整数类型,用户自定义的整数类型的一个集合。 使用方式 public enum A {a0,b1,c2 }注意:枚举定义的不同变量之间要用“,”分割,结尾不需要加上“,” 优点 可以…

制作404页面的重要性

在网站的运行过程中会面临很多问题,当用户搜索页面时,会提示服务器出错,请求的页面不存在,程序配置错误等问题。用户请求浏览网页碰到这些的情况时,会自动跳出系统默认的错误提示,对用户体验造成不好的感触…

明晰C++内存分配的五种方法的区别

在C中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那…

【BZOJ-4631】踩气球 线段树 + STL

4631: 踩气球 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 224 Solved: 114[Submit][Status][Discuss]Description 六一儿童节到了, SHUXK 被迫陪着M个熊孩子玩一个无聊的游戏:有N个盒子从左到右排成一排,第i个盒子里装着Ai个气球。SH…

3D Reconstruction三维重建halcon算子,持续更新

目录3D Reconstruction三维重建Binocular Stereo双目立体binocular_disparitybinocular_disparity_mgbinocular_disparity_msbinocular_distancebinocular_distance_mgbinocular_distance_msdisparity_image_to_xyzdisparity_to_distancedisparity_to_point_3ddistance_to_disp…

遗传算法初级

遗传算法是一种基于仿生学的计算机算法,通过模拟自然进化和优胜劣汰法则来搜索问题的最优解(我会说这其实就是稍微改良了一下的暴搜?) 它是由美国的J.Holland于1975年提出来的玄学概率学混合暴力搜索方法,广泛适用于寻找算法优解、机器学习、…

C++ vector容器类型

vector类为内置数组提供了一种替代表示&#xff0c;与string类一样 vector 类是随标准 C引入的标准库的一部分 &#xff0c;为了使用vector 我们必须包含相关的头文件 &#xff1a;#include <vector> 使用vector有两种不同的形式&#xff0c;即所谓的数组习惯和 STL习惯…

redis在linux命令行下连续进行命令操作

redis-cli -a password -n 9 keys "friend*" -a 是auth -n 是选择数据池 keys就是找key啦、 要是后面再跟上 xargs */redis-cli del redis-cli -a password -n 9 keys "friend*" | xargs redis-cli -a password -n 9 del 就完美了23333 转载于:https://www…

Calibration校准halcon算子,持续更新

目录Calibration校准Binocular双目相机binocular_calibrationCalibration Object 校准物体caltab_pointscreate_caltabdisp_caltabfind_calib_objectfind_caltabfind_marks_and_posegen_caltabsim_caltabCamera parameter相机参数cam_mat_to_cam_parcam_par_to_cam_matdeserial…

javascript:正则表达式、一个表单验证的例子

阅读目录 本文内容&#xff1a;正则表达式&#xff1a;利用正则表达式进行表单验证的例子&#xff1a;回到顶部本文内容&#xff1a; 正则表达式正则表达式的使用方法正则表达式的特殊匹配字符正则表达式修饰符利用正则表达式进行表单验证的例子首发日期&#xff1a;2018-05-13…

Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)

目录 1 什么是spring框架 2 spring框架的特点 3 spring容器 3.1 什么是spring容器 3.2 spring容器创建对象的编程步骤 3.4 spring容器创建对象的方式 3.5 bean元素的几个重要属性 4 IOC 4.1 什么是IOC 4.2 什么事DI 4.3 DI的三种方式 1 什么是spring框架 是一个开源的用来简化企…

EntityFramework 插件之EntityFramework.Extended (批量处理)

接手了一个用EF来做的项目&#xff0c;由于项目中使用的原生处理&#xff0c;导致很多update都是采用先select 后 update的方式来实现&#xff0c;同时无法批量执行逻辑如&#xff1a;根据订单类型统一更新状态等。所以在经过了N多查找之后 发现了一个国外写的扩展插件EntityFr…

一个传值的问题”*”与”*”

1/********************************************************* 2* Desc:参数传递&#xff1a;使用引用传递指针和直接传递指针地址的区别 3* Author:charley 4* DateTime:2010-12-7 11:00 02***********************************************************/ 03#include <…

Classification分类halcon算子,持续更新

目录ClassificationGaussian Mixture Models高斯混合模型add_class_train_data_gmmadd_sample_class_gmmclassify_class_gmmclear_class_gmmclear_samples_class_gmmcreate_class_gmmdeserialize_class_gmmevaluate_class_gmmget_class_train_data_gmmget_params_class_gmmget_…

spring boot 扩展之AutoConfigurationImportListener

最近阅读spring boot源码时发现&#xff0c;发现当spring使用ConfigurationClassParser加载使用Configuration注解类后&#xff0c;会使用AutoConfigurationImportSelector对加载的 Configuration注解的类进行一次过滤。当AutoConfigurationImportSelector过滤完成后会自动加载…

classpath: spring 中的查找方式

Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件.classpath*:的出现是为了从多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件. 比如 resource1.jar中的package com.test.rs 有一个 jarAppcontext.xml 文件,内…

《高效程序员的45个习惯》-之一

敏捷开发是当下最流行的开发方法&#xff0c;它采用的是一种以人为核心、迭代、循序渐进的开发思想&#xff0c;值得你关注和学习。 最近我就阅读了一本有关敏捷开发的书籍&#xff0c;《高效程序员的45个习惯》。 它以“举反例”的方式来讲述了敏捷开发中程序员应该运用的…