zookeeper、kafka及EFK

一、实验环境

192.168.238.150:zookeeper kafka
192.168.238.100:zookeeper kafka
192.168.238.99:zookeeper kafka

二、部署zookeeper

三台服务器安装

[root@localhost ~]# ntpdate ntp.aliyun.cpm #同步阿里云时钟服务器
[root@localhost ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel #安装依赖环境
[root@localhost ~]# java -version #查看java版本

在这里插入图片描述

[root@localhost ~]# cd /opt
[root@localhost opt]# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz #下载zookeeper软件包
[root@localhost opt]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz #解包
[root@localhost opt]# mv apache-zookeeper-3.5.7-bin /usr/local/zookeeper-3.5.7 #将目录移到/usr/local
[root@localhost opt]# cd /usr/local/zookeeper-3.5.7/conf/
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
[root@localhost conf]# vim zoo.cfg
tickTime=2000   #通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒
initLimit=10    #Leader和Follower初始连接时能容忍的最多心跳数(tickTime的数量),这里表示为10*2s
syncLimit=5     #Leader和Follower之间同步通信的超时时间,这里表示如果超过5*2s,Leader认为Follwer死掉,并从服务器列表中删除Follwer
dataDir=/usr/local/zookeeper-3.5.7/data      ●修改,指定保存Zookeeper中的数据的目录,目录需要单独创建
dataLogDir=/usr/local/zookeeper-3.5.7/logs   ●添加,指定存放日志的目录,目录需要单独创建
clientPort=2181   #客户端连接端口

在这里插入图片描述
在这里插入图片描述

#在每个节点上创建数据目录和日志目录
[root@localhost conf]# mkdir /usr/local/zookeeper-3.5.7/data
[root@localhost conf]# mkdir /usr/local/zookeeper-3.5.7/logs
[root@localhost conf]# cd ..

在这里插入图片描述

#在每个节点的dataDir指定的目录下创建一个 myid 的文件
[root@localhost zookeeper-3.5.7]# echo 1 > /usr/local/zookeeper-3.5.7/data/myid #第一台
[root@localhost zookeeper-3.5.7]# echo 2 > /usr/local/zookeeper-3.5.7/data/myid #第二台
[root@localhost zookeeper-3.5.7]# echo 3 > /usr/local/zookeeper-3.5.7/data/myid #第三台

#配置Zookeeper启动脚本
[root@localhost zookeeper-3.5.7]# vim /etc/init.d/zookeeper

在这里插入图片描述

#设置开机自启
[root@localhost zookeeper-3.5.7]# chmod +x /etc/init.d/zookeeper
[root@localhost zookeeper-3.5.7]# chkconfig --add zookeeper

在这里插入图片描述

三、部署kafka

在安装zookeeper的三台服务器上部署kafka

[root@localhost zookeeper-3.5.7]# cd /opt
[root@localhost opt]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.7.1/kafka_2.13-2.7.1.tgz #下载kafka软件包
[root@localhost opt]# tar zxvf kafka_2.13-2.7.1.tgz #解包
[root@localhost opt]# mv kafka_2.13-2.7.1 /usr/local/kafka
[root@localhost opt]# cd /usr/local/kafka/config/
[root@localhost config]# cp server.properties{,.bak} #备份配置文件
[root@localhost config]# vim server.properties
第21行 broker.id=0 #broker的全局唯一编号,每个broker不能重复,因此要在其他机器上配置 broker.id=1、broker.id=231行 listeners=PLAINTEXT://192.168.238.100:9092 #取消注释,指定监听的IP和端口。另外两台为192.168.238.150:9092192.168.238.99:909242行 num.network.threads=3 #broker处理网络请求的线程数量,一般情况下不需要去修改
第45行 num.io.threads=8 #用来处理磁盘IO的线程数量,数值应该大于硬盘数
第48行 socket.send.buffer.bytes=102400 #发送套接字的缓冲区大小
第51行 socket.receive.buffer.bytes=102400 #接收套接字的缓冲区大小
第54行 socket.request.max.bytes=104857600 #请求套接字的缓冲区大小
第60行 log.dirs=/usr/local/kafka/logs #kafka运行日志存放的路径,也是数据存放的路径
第65行 num.partitions=1 #topic在当前broker上的默认分区个数,会被topic创建时的指定参数覆盖
第69行 num.recovery.threads.per.data.dir=1 #用来恢复和清理data下数据的线程数量
第103行 log.retention.hours=168 #segment文件(数据文件)保留的最长时间,单位为小时,默认为7天,超时将被删除
第110行 log.segment.bytes=1073741824 #一个segment文件最大的大小,默认为1G,超出将新建一个新的segment文件
第123行 zookeeper.connect=192.168.238.100:2181,192.168.238.150:2181,192.168.238.99:2181 #配置连接Zookeeper集群地址
[root@localhost config]# vim /etc/profile #修改环境变量

在这里插入图片描述

[root@localhost config]# source /etc/profile #重载文件
[root@localhost config]# vim /etc/init.d/kafka #配置kafka启动脚本

在这里插入图片描述

[root@localhost config]# chmod +x /etc/init.d/kafka
[root@localhost config]# chkconfig --add kafka
[root@localhost config]# service kafka start
---------- Kafka 启动 ------------

在这里插入图片描述
ps:如果查看不到端口,说明服务没有启动成功,将kafka目录下的logs目录里的文件,删除后重启

kafka命令行操作

#创建topic
[root@localhost logs]# kafka-topics.sh --create --zookeeper 192.168.238.150:2181,192.168.238.100:2181,192.168.238.99:2181 --replication-factor 2 --partitions 3 --topic test 

在这里插入图片描述

#查看当前系统的所有topic
[root@localhost logs]# kafka-topics.sh --list --zookeeper 192.168.238.150:2181,192.168.238.100:2181,192.168.238.99:2181
test

#查看指定topic详情
[root@localhost logs]# kafka-topics.sh --describe --zookeeper 192.168.238.150:2181,192.168.238.100:2181,192.168.238.99:2181
Topic: test	PartitionCount: 3	ReplicationFactor: 2	Configs: 
	Topic: test	Partition: 0	Leader: 2	Replicas: 2,0	Isr: 2,0
	Topic: test	Partition: 1	Leader: 0	Replicas: 0,1	Isr: 0,1
	Topic: test	Partition: 2	Leader: 1	Replicas: 1,2	Isr: 1,2

#发布消息
[root@localhost logs]# kafka-console-producer.sh --broker-list 192.168.238.150:9092,192.168.238.100:9092,192.168.238.99:9092  --topic test2
>holle

#消费消息
[root@localhost logs]# kafka-console-consumer.sh --bootstrap-server 192.168.238.150:9092,192.168.238.100:9092,192.168.238.99:9092 --topic test2 --from-beginning
holle

#修改分区数
[root@localhost logs]# kafka-topics.sh --zookeeper 192.168.238.150:2181,192.168.238.100:2181,192.168.238.99:2181 --alter --topic test2 --partitions 6
WARNING: If partitions are increased for a topic that has a key, the partition logic or ordering of the messages will be affected
Adding partitions succeeded!

#删除topic
[root@localhost logs]# kafka-topics.sh --delete --zookeeper 192.168.238.150:2181,192.168.238.100:2181,192.168.238.99:2181 --topic test
Topic test is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.

四、部署EFK

node1:192.168.238.133 Elasticsearch kibana
node2:192.168.238.134 Elasticsearch
apach:192.168.238.135 Apache logstash

一、部署Elasticsearch

node1、node2

[root@localhost ~]# hostnamectl set-hostname node1 #修改主机名
[root@localhost ~]# su 
[root@node1 ~]# ntpdate ntp.aliyun.com
[root@node1 ~]# vim /etc/hosts #添加主机映射

在这里插入图片描述
在这里插入图片描述

#上传elasticsearch-5.5.0.rpm到/opt目录下
[root@node1 ~]# cd /opt
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm #安装
#加载系统服务
[root@node1 opt]# systemctl daemon-reload    
[root@node1 opt]# systemctl enable elasticsearch.service
[root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak #备份
[root@node1 opt]# vim /etc/elasticsearch/elasticsearch.yml
第17行 cluster.name: my-elk-cluster #集群名称
第23行 node.name: node1 #节点名称,另一台为node2
第33行 path.data: /data/elk_data #数据存放路径
第37行 path. logs: /var/log/elasticsearch/ #日志存放路径
第43行 bootstrap.memory_lock: false #锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致Ios变高(性能测试:每秒的读写次数)。
第55行 network.host: 0.0.0.0 #提供服务绑定的IP地址,0.0.0.0代表所有地址
第59行 http.port: 9200 #侦听端口为920068行 discoveryp zen.ping.unicast.hosts:["node1", "node2"] #集群发现通过单播实现单播

在这里插入图片描述

[root@node1 opt]# mkdir -p /data/elk_data # #创建数据文件目录
[root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/ ##修改目录属主属组
[root@node1 opt]# systemctl start elasticsearch.service #开启

在这里插入图片描述
查看节点信息
在这里插入图片描述
查看群集健康状态信息
在这里插入图片描述

二、部署elasticsearch-head

node1、node2

##安装node组件
#上传node-v8.2.1.tar.gz到/opt
[root@node1 opt]# yum install gcc gcc-c++ make -y #安装依赖环境
[root@node1 opt]# tar xzvf node-v8.2.1.tar.gz #解包
[root@node1 node-v8.2.1]# ./configure && make -j3 && make install #编译安装

##安装phantomjs前端框架
#上传phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 node-v8.2.1]# cd /usr/local/src/
[root@node1 src]# tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 #解包
[root@node2 bin]# cp phantomjs /usr/local/bin

##安装elasticsearch-head图形化界面
[root@node1 bin]# cd /usr/local/src/
#上传elasticsearch-head软件包
[root@localhost src]# tar xzvf elasticsearch-head.tar.gz #解包
[root@node1 src]# cd elasticsearch-head/
[root@node1 elasticsearch-head]# npm install

在这里插入图片描述

[root@node1 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
在最后插入
http.cors.enabled: true #开启跨域访问支持
http.cors.allow-origin: "*" #跨域方位允许的域名地址

在这里插入图片描述

[root@node1 elasticsearch-head]# systemctl restart elasticsearch
[root@node1 elasticsearch-head]# npm run start &

在这里插入图片描述

[root@node1 elasticsearch-head]# netstat -natp | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      128023/grunt 

三、部署kibana

node1上部署kibana

[root@node1 elasticsearch-head]# cd /usr/local/src/
#上传kibana-5.5.1-x86_64.rpm 到/usr/local/src目录
[root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm #安装
[root@node1 src]# cd /etc/kibana/
[root@node1 kibana]# cp kibana.yml kibana.yml.bak
[root@node1 kibana]# vim kibana.yml
第2行 server.port: 5601 #取消注释打开端口
第7行 server.host: "0.0.0.0" #取消注释,修改监听地址
第21行 elasticsearch.url: "http://192.168.238.133:9200" #取消注释,与elasticsearch建立联系
第30行 kibana.index: ".kibana" #取消注释,在elasticsearch中添加kibana索引

[root@node1 kibana]# systemctl start kibana.service #开启服务
[root@node1 kibana]# systemctl enable kibana.service #设置开机自启

四、部署logstash

Apache:192.168.238.135
##logstash是为了收集Kafka队列传输过来的数据的
[root@localhost ~]# hostnamectl set-hostname apache
[root@localhost ~]# su 
[root@apache ~]# ntpdate ntp.aliyun.com
[root@apache ~]# cd /opt
#上传logstash软件包
[root@apache opt]# rpm -ivh logstash-5.5.1.rpm #安装
[root@apache opt]# systemctl start logstash.service
[root@apache opt]# systemctl enable logstash.service
[root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ #命令优化
[root@apache opt]# cd /etc/logstash/conf.d/
[root@apache conf.d]# vim filebeat.conf

在这里插入图片描述

[root@apache conf.d]# nohup logstash -f filebeat.conf & 

在这里插入图片描述

五、部署Filebeat

Filebeat:192.168.238.136 
[root@localhost opt]# cd /usr/local/
[root@localhost local]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-linux-x86_64.tar.gz
[root@localhost local]# tar -xvzf filebeat-7.5.1-linux-x86_64.tar.gz
[root@localhost local]# mv filebeat-7.5.1-linux-x86_64 /usr/local/filebeat
[root@localhost local]# cd filebeat/
[root@localhost filebeat]# vim filebeat.yml

在这里插入图片描述
在这里插入图片描述

ps:将filebeat.yml文件中,如下注释掉,否则启动不了
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]
[root@localhost filebeat]# ./filebeat -e -c filebeat.yml #启动

五、验证

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值