kafka-4-二节点集群安装kafka

1 版本控制

kafka_2.12-2.2.0.tgz
zookeeper-3.4.8.tar.gz
jdk1.8.0_181
centos 7

2 免密登录

(1)查看系统中是否安装SSH
dpkg -L ssh |grep ssh
(2)安装SSH
yum install -y openssh-server
(3)测试SSH命令是否可用
ssh localhost
(4)设置SSH无密码登录
cd ~/.ssh
ssh-keygen -t rsa有提示,全部回车
cat id_rsa.pub >> ./authorized_keys加入授权
(5)测试SSH无密码登录
ssh localhost

3 java的多版本切换

alternatives --install /usr/bin/java java /usr/bin/java 3
alternatives --install /usr/bin/java java /usr/local/jdk1.8.0_181/bin/java 4
alternatives --config java

选择对应版本的序号。
/root/.bashrc环境变量

export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin

export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

4 关闭防火墙

CentOS 7.0默认使用的是firewall作为防火墙
(1)查看防火墙状态
firewall-cmd --state
(2)停止firewall
systemctl stop firewalld.service
(3)禁止firewall开机启动
systemctl disable firewalld.service

5 zookeeper集群模式

5.1 zookeeper集群安装

在实际情况下,我们的zookeeper都会以集群的方式进行安装。ZooKeeper的集群模式下,多个Zookeeper服务器在工作前会选举出一个Leader,在接下来的工作中这个被选举出来的Leader死了,而剩下的Zookeeper服务器会知道这个Leader死掉了,在活着的Zookeeper集群中会继续选出一个Leader,选举出Leader的目的是为了可以在分布式的环境中保证数据的一致性。

确认集群服务器的数量:由于ZooKeeper集群中,会有一个Leader负责管理和协调其他集群服务器,因此服务器的数量通常都是单数,例如3,5,7…等,这样2n+1的数量的服务器就可以允许最多n台服务器的失效。

5.1.1 解压安装

(1)二个主机中均进行如下安装
tar -xzvf zookeeper-3.4.13.tar.gz -C /usr/local
cd /usr/local
mv zookeeper-3.4.13/ zookeeper
gedit /root/.bashrc

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

5.1.2 创建myid文件

集群模式下还要配置一个文件myid,这个文件在dataDir目录下,这个文件里面就只有一个数据,Zookeeper启动时会读取这个文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。

注意一定不要忘记在dataDir目录下创建myid文件,创建myid文件。注意:myid文件要自己创建,在dataDir目录下。
node1机器的内容为:1
node2机器的内容为:2。

root@node1:# cd /extendspace/zookeeper/
root@node1:# mkdir data
root@node1:# touch data/myid
root@node1:# echo 1 >> data/myid

root@node2:# cd /extendspace/zookeeper/
root@node2:# mkdir data
root@node2:# touch data/myid
root@node2:# echo 2 >> data/myid

5.1.3 修改配置文件

cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
主要更改zookeeper的数据存放地址和日志地址
gedit zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial synchronization phase can take
initLimit=10
# The number of ticks that can pass between sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored. do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/extendspace/zookeeper/data
dataLogDir=/extendspace/zookeeper/datarizhi
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
# Be sure to read the maintenance section of the  administrator guide before turning on autopurge.
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=node1:2888:3888
server.2=node2:2888:3888

配置完成以后把配置文件分发到其他的主机上;
参数解释:
(1)tickTime
发送心跳的间隔时间,单位:毫秒
(2)dataDir
zookeeper保存数据的目录。
(3)clientPort
客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口,接受客户端的访问请求。
(4)initLimit
这个配置项是用来配置Zookeeper接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader的Follower服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过5个心跳的时间(也就是tickTime)长度后Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是52000=10秒
(5)syncLimit
这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是2
2000=4秒
(6)server.A=B:C:D
A是一个数字,表示这个是第几号服务器;
B是这个服务器的ip地址;
C表示这个服务器与集群中的Leader服务器交换信息的端口;
D表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于B都是一样,所以不同的Zookeeper实例通信端口号不能一样,所以要给它们分配不同的端口号。

5.1.4 启动zookeeper

启动所有节点
root@node1:# zkServer.sh start
root@node2:# zkServer.sh start
#zkServer.sh status查看服务状态
#zkServer.sh stop停止集群,每个主机均停止

6 Kafka

6.1 kafka原理

Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景。

通常来讲,消息模型可以分为两种:队列和发布-订阅式。队列的处理方式是一组消费者从服务器读取消息,一条消息只有其中的一个消费者来处理。在发布-订阅模型中,消息被广播给所有的消费者,接收到消息的消费者都可以处理此消息。Kafka为这两种模型提供了单一的消费者抽象模型:消费者组(consumer group)。消费者用一个消费者组名标记自己。
一个发布在Topic上消息被分发给此消费者组中的一个消费者。假如所有的消费者都在一个组中,那么这就变成了queue模型。假如所有的消费者都在不同的组中,那么就完全变成了发布-订阅模型。更通用的,我们可以创建一些消费者组作为逻辑上的订阅者。每个组包含数目不等的消费者,一个组内多个消费者可以用来扩展性能和容错。

并且,kafka能够保证生产者发送到一个特定的Topic的分区上,消息将会按照它们发送的顺序依次加入,也就是说,如果一个消息M1和M2使用相同的producer发送,M1先发送,那么M1将比M2的offset低,并且优先的出现在日志中。消费者收到的消息也是此顺序。如果一个Topic配置了复制因子(replication facto)为N,那么可以允许N-1服务器宕机而不丢失任何已经提交(committed)的消息。此特性说明kafka有比传统的消息系统更强的顺序保证。但是,相同的消费者组中不能有比分区更多的消费者,否则多出的消费者一直处于空等待,不会收到消息。
#tar -xzvf kafka_2.11-0.10.1.0.tgz -C /usr/local
#cd /usr/local
#mv kafka_2.11-0.10.1.0/ kafka
#gedit /root/.bashrc

export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$KAFKA_HOME/bin

6.2 二节点配置

为集群上的每一台Kafka服务器单独配置配置文件,比如我们需要设置有二节点的Kafka集群,那么节点1、2的最基本的配置如下:
(1)节点1

broker.id=1
listeners=PLAINTEXT://192.168.0.209:9092
log.dir=/extendspace/kafka/logdata
num.partitions=5
log.retention.hours=24
zookeeper.connect=192.168.0.209:2181
zookeeper.connection.timeout.ms=6000
offsets.topic.replication.factor=2

(2)节点2

broker.id=2
listeners=PLAINTEXT://192.168.0.210:9092
log.dir=/extendspace/kafka/logdata
num.partitions=5
log.retention.hours=24
zookeeper.connect=192.168.0.210:2181
zookeeper.connection.timeout.ms=6000
offsets.topic.replication.factor=2

6.3 启动kafka集群

(1)启动zookeeper集群

root@node1:~# zkServer.sh start
root@node2:~# zkServer.sh start

(2)启动kafka集群

root@node1:# cd /usr/local/kafka/
root@node1:# ./bin/kafka-server-start.sh ./config/server1.properties 
root@node2:# cd /usr/local/kafka/
root@node2:# ./bin/kafka-server-start.sh ./config/server2.properties 

用下面的命令启动

nohup ./bin/kafka-server-start.sh ./config/server2.properties >> /extendspace/kafkaoutput.log 2>&1 &

(3)创建kafka的topic
root@node1:~# cd /usr/local/kafka/
root@node1:/usr/local/kafka# ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic kafka-test
(4)查看创建的topic
root@node1:~# kafka-topics.sh --list --zookeeper localhost:2181
或者
root@node2:~# kafka-topics.sh --list --zookeeper localhost:2181
5.4 测试应用
(1)发送消息
Kafka带有一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到Kafka集群。默认情况下,每行将作为单独的消息发送。
启动生产者
bin/kafka-console-producer.sh --broker-list node1:9092 --topic test

输入几条消息发送到服务器
This is a message
This is another message
(2)启动消费者
消费者可以将消息转储到标准输出
打开第四个个终端
bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic test --from-beginning
或者
bin/kafka-console-consumer.sh --bootstrap-server node2:9092 --topic test --from-beginning

然后就可以在命令行看到生产者发送的消息了
This is a message
This is another message

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要配置kafka节点,请按照以下步骤进行操作: 1. 首先,确保你已经安装kafka-eagle。你可以从官方网站http://www.kafka-eagle.org/下载最新版本的kafka-eagle-web-3.0.1 。 2. 打开kafka-eagle的配置文件,通常是kafka-eagle.properties。 3. 在配置文件中,找到kafka-eagle.metadata.broker.list参数,这个参数用来指定kafka集群的broker节点列表。将这个参数的值修改为你的kafka集群中的broker节点的地址和端口。多个节点之间可以用逗号进行分隔。 4. 如果你的kafka集群启用了身份验证机制,你还需要配置kafka-eagle.metadata.sasl.username和kafka-eagle.metadata.sasl.password参数,分别填入你的用户名和密码。 5. 保存配置文件并重启kafka-eagle服务。 现在,你已经成功配置了kafka-eagle与kafka节点的连接。你可以使用kafka-eagle来监视kafka集群的状态、topic信息、IO、内存、consumer线程、偏移量等信息,并通过可视化图表展示。此外,你还可以使用kafka-eagle的KQL功能,通过SQL在线查询kafka中的数据 。 注意:如果你使用的是kafka自带的控制台生产者kafka-console-producer.sh ,请确保在配置kafka-eagle时正确填写了kafka集群的broker节点信息,以便kafka-eagle能够正确地与kafka集群进行通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Kafka-Eagle 2.0.5安装](https://blog.csdn.net/qq_45360515/article/details/128041972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [kafka安装部署+kafka-eagle+集成SpringBoot](https://blog.csdn.net/qq_57697356/article/details/130082807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮冰燃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值