基于kafka的日志收集

目录

一、环境准备

Ⅰ、准备好三台虚拟机用于搭建nginx和kafka集群

Ⅱ、配置静态ip地址

Ⅲ、修改主机名

Ⅳ、域名解析

​编辑

Ⅴ、安装基本软件

Ⅵ、安装时间同步服务

Ⅶ、关闭防火墙

二、nginx搭建

Ⅰ.安装epel源并下载nginx服务

Ⅱ.启动nginx服务

Ⅲ.编辑配置文件

三、kafka集群搭建

Ⅰ、kafka原理

Ⅱ、Kafka集群配置

Ⅲ、测试

四、filebeat部署

Ⅰ、filebeat

Ⅱ、fliebeat的配置

五、添加域名映射

排错:


一、环境准备

Ⅰ、准备好三台虚拟机用于搭建nginx和kafka集群

Ⅱ、配置静态ip地址

<!--一般大家的虚拟机都是使用dhcp,ip是动态更改的,当每次关机重启之后,ip地址会改变.但后期进行操作时,ip需要跟服务进行绑定,所以这里创建虚拟机尽量选择NAT模式,ip为静态IP。不然每次开机重启会很繁琐。-->

1、更改网卡配置文件

[root@nginx-kafka01 ~]# cd /etc/sysconfig//network-scripts/
[root@nginx-kafka01 network-scripts]# ls
ifcfg-ens33  ifdown-ippp  ifdown-routes    ifup          ifup-ipv6   ifup-ppp       ifup-tunnel
ifcfg-lo     ifdown-ipv6  ifdown-sit       ifup-aliases  ifup-isdn   ifup-routes    ifup-wireless
ifdown       ifdown-isdn  ifdown-Team      ifup-bnep     ifup-plip   ifup-sit       init.ipv6-global
ifdown-bnep  ifdown-post  ifdown-TeamPort  ifup-eth      ifup-plusb  ifup-Team      network-functions
ifdown-eth   ifdown-ppp   ifdown-tunnel    ifup-ippp     ifup-post   ifup-TeamPort  network-functions-ipv6
[root@nginx-kafka01 network-scripts]#

这里我的网卡配置文件为ifcfg-ens33,还有一部分人的为ifcfg-ens22

IPADDR=192.168.8.137
GATEWAY=192.168.8.2
PREFIX=24
DNS1=114.114.114.114

网卡配置管理服务

CentOS7里面有俩个网卡配置服务Network/NetworkManager(默认开启)只能起俩个中的一个服务,CentOS8只有NetworkManager

[root@nginx-kafka01 network-scripts]# ps -ef|grep -i network
root        677      1  0 07:48 ?        00:00:00 /usr/sbin/NetworkManager --no-daemon
root       1468   1424  0 08:07 pts/0    00:00:00 grep --color=auto -i network
[root@nginx-kafka01 network-scripts]#

注:开启/重启关闭服务:systemctl start/restart/stop (服务名)

通过其他方式安装的服务当使用systemctl 起服务时,systemctl会自动调用systemd下面的system目录下的服务配置文件。

[root@nginx-kafka01 system]# ls |grep NetworkManager
NetworkManager-dispatcher.service
NetworkManager.service
NetworkManager-wait-online.service
[root@nginx-kafka01 system]# pwd
/usr/lib/systemd/system
[root@nginx-kafka01 system]#

这个目录下面的文件以.service结尾,理论上都可以交给systemctl进行管理,开启相应服务时相当于运行此目录下.service结尾的文件,也相当于运行图片中的那行代码

d311dd296ad242cea27fc4c6cc296bba.png

 eaa2a29faaaa4e719315f531898e94cc.png

2、配置默认路由

5dd7616317a947c298f3dcbdbf2feef2.png

路由:配置好路由,告诉包怎么走,发往哪里去

[root@nginx-kafka01 system]# ip r
default via 192.168.8.2 dev ens33 proto static metric 100 
192.168.8.0/24 dev ens33 proto kernel scope link src 192.168.8.137 metric 100 
[root@nginx-kafka01 system]#

3、配置DNS

[root@nginx-kafka01 system]# cat /etc/resolv.conf

Generated by NetworkManager

nameserver 114.114.114.11

dns解析:

<!--1、浏览器的缓存-->
<!--2、本地hosts文件_--linux (letc/hosts)-->
<!--3、找本地域名服务器-- linux (/etc/resolv.conf)-->

Ⅲ、修改主机名

<!--hostnamectl set-hostname +主机名-->

Ⅳ、域名解析

<!--/etc/hosthname文件中三台虚拟机都得保持一直-->

[root@nginx-kafka01 system]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.137  nginx-kafka01
192.168.8.135  nginx-kafka02
192.168.8.140  nginx-kafka03
[root@nginx-kafka01 system]#

97076113dc444f8eaed95c69c839bc48.png

Ⅴ、安装基本软件

yum install wget lsof vim -y

用于上网,从网上下东西,后期会从网上下kafka

Ⅵ、安装时间同步服务

yum -y install chrony systemctl enable chronyd #设置开机自启 disable关闭开机自启 systemctl start chronyd

 设置时区:
 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

<!--日志消费清洗,需要同步,所以得先确保三台虚拟机的时间时同步的-->

<!--它的时间会自动同步,但后期使用之后,时间会存在时间差-->

8b57f4ef806c4014b76ec53b76500354.png

Ⅶ、关闭防火墙

1、关闭防火墙:

[root@nginx-kafka01 ~]# systemctl stop firewalld ​

[root@nginx-kafka01 ~]# systemctl disable firewalld

服务运行时,若防火墙不关闭会有影响

2、关闭selinux:

关闭selinux:
vim /etc/selinux/config
……
SELINUX=disabled
……
    selinux关闭后 需要重启机器
[root@nginx-kafka01 system]# getenforce    ----查看是否生效
Disabled
[root@nginx-kafka01 system]# 

selinux是linux系统内核里一个跟安全相关的子系统,规则非常繁琐一般日常工作里都是关闭的


二、nginx搭建

Ⅰ.安装epel源并下载nginx服务

yum install eple-release -y

yum install nginx -y

Ⅱ.启动nginx服务

systemctl start nginx 1、设置开机自启 ​ systemctl enable nginx

  • 通过ststemctl 管理的服务,如果需要设置开机自启,则设置一个链接,链接到 /etc/systemd/system/multi-user.target.wants目录下面来。开机的时候根据这个目录来启动里面的每一个服务。

[root@nginx-kafka01 nginx]# ls
apache-zookeeper-3.6.3-bin.tar.gz  mime.types
conf.d                             mime.types.default
default.d                          nginx.conf
fastcgi.conf                       nginx.conf.default
fastcgi.conf.default               scgi_params
fastcgi_params                     scgi_params.default
fastcgi_params.default             uwsgi_params
koi-utf                            uwsgi_params.default
koi-win                            win-utf
[root@nginx-kafka01 nginx]# 

Ⅲ.编辑配置文件

1、nginx.conf :主配置文件

`全局块

<!--user nginx;   
worker_processes auto;    

<!------- nginx工作进程,我的为自动设置-->
error_log /var/log/nginx/error.log   

<!-----  nginx错误日志的路径-->

pid /run/nginx.pid     

<!-------   每个进程的唯一标识符保存路径 每个进程起来之后都会有一个pid作为唯一标识符-->

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

(1)、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

(2)、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

(3)、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

(4)、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

(5)、location块:配置请求的路由,以及各种页面的处理情况

2、配置文件修改

(1) http:

我们主要对配置文件里的http块进行修改:

0ca3ada86598402fbd5d4bcd3e77f9e1.png

log_format main部分是nginx配置文件http部分的日志格式

acess_log 部分是nginx配置文件http部分访问日志的存放路径

include /etc/nginx/conf.d/*.conf;

这个是包含在http块里,当加载http块时,这个目录下的以》.conf结尾的文件

server:

<!--一个nginx可以有多个网站,每个网站又有与其对应的唯一一个server-->

将 listen 80 default_server; 修改成: listen 80;

版本原因,有的不需要改这里

(2) conf.d目录下虚拟主机的配置:

[root@nginx-kafka01 conf.d]# pwd
/etc/nginx/conf.d
[root@nginx-kafka01 conf.d]# ls
sc.conf
[root@nginx-kafka01 conf.d]# cat sc.conf 
server {
    listen 80 default_server;
    server_name  www.sc.com;

    root         /usr/share/nginx/html;
    
    access_log  /var/log/nginx/sc/access.log main;
    
    location  / {
    
    }

}
[root@nginx-kafka01 conf.d]#

当客户端以域名来访问这个网站时,通过端口为80访问,访问此虚拟主机,default_server的作用是当客户端以ip来访问网站时,default_server会默认访问这个网站的内容。

注:nginx做web网站只能支持静态网页展示,基于HTTP协议(超文本传输协议)

(3) 语法检测

root@nginx-kafka01 html]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] open() "/var/log/nginx/sc/access.log" failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed
[root@nginx-kafka01 html]# mkdir /var/log/nginx/sc
[root@nginx-kafka01 html]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

(4) 重新加载nginx

nginx -s reload

写在后面:nginx集群搭建的web服务,只是提供了一个访问的静态页面,做测试

776211f2271f498f8435e575cacae1c6.png

        假设在本地虚拟机上直接部署环境来监控日志,很难用一个量来记录上次的日志处理到了那一条,且日志是实时变化的,还有定期删除,不能存放大量的日志文件,很消耗内存。采用消息中间件来统一收集日志,对数据库的访问次数将大大减少,使服务更稳定,更高效。同时方便对日志排错

1.方便定位故障

2.方便扩展其他程序接入


三、kafka集群搭建

Ⅰ、kafka原理

1、使用kafka做日志统一收集的好处

(1).故障发生时方便定位问题

(2).日志集中管理,后续需要日志的程序直接从kafka获取日志即可。尽可能的减少日志处理对nginx的影响。

2、kafka消息中间件通常用途:

(1) 日志收集

对kafka进行消费可以来获得自己想要的日志信息

(2) 业务解耦

通过将服务的一些不太重要的业务交给消息中间件来操作,当某些业务出现故障后,实现对服务的影响最小化,同时方便扩展,提高业务的稳定性

5dc290605f3d4f18b1805538e8c40c61.png

(3) 流量削峰

例入双11之类的活动或者周末日游戏app上线等情况下流量突增,此刻消息中间件类似缓存。每访问下,就从消息中间件里消费一些数据。来减小服务的压力

3、消息中间件的俩种通信方式

  • 点对点

  • 发布订阅

<!--kafka: 消息中间件,是一个很典型的生产者消费者模型的软件。还有nsq\rocketMq等消息中间件,而kafak采用发布-订阅的消息传递方式-->

4、kafka专业术语:

(1)broker

  • 服务器节点

(2)topic-主题

  • 消息的类别

(3)partition-分区

  • 提高查吐量--提高效率--一般来说有几个broker就设置几个partition

  • 支持并发的读写

  • 有多个partition的话,消息的顺序总体来说就跟原来不一样了,但在单独的partition里面还是顺序

(4)replica

  • 副本

6、kafka如何保证高可用

(1) kafka集群工作原理图

b58f45863e1545b496d17fc4568d297a.png

多个broker +多个partition +多个replica

<!--broker数量如果和'replica一致,可以坏掉n-1台-->

  • 当filebeat收集日志送给kafka集群某一个分区时,不知道要把数据送到某个分区里的哪一个partition.

  • partition跟它的副本里依据ISR选择出leader跟follower

(2) ISR

  • in-sync-replica 是一个集合列表 存放需要同步的follower集合

         比如说5个副本,1个leader 4 follower -->ISR 有一条消息来了,leader怎么知道要同步哪些副本呢?_根据ISR来。如果一个followmer挂了,那就从这个列表里删除了如果一个follower卡住或者同步过慢它也会从ISR里删除。

7、如何保证数据一致性

(1)生产者数据一致性

        Kafka在Producer里面提供了消息确认机制。可以通过配置来决定有几个副本收到这条消息才算消息发送成功。可以在定义 Producer时通过acks参数指定(在0.8.2.X版本之前是通过request.required.acks参数设置的)。这个参数支持以下三种值:

  • acks=0 生产者不需要接收响应,发完就发下一条

  • acks=1(默认值)︰只要集群的Leader节点收到消息,生产者就会收到一个来自服务器的成功响应

  • acks=-1∶只有当所有参与复制的节点全部都收到消息时,生产者才会收到一个来自服务器的成功响应 <!--这种模式是最安全的,可以保证不止一个服务器收到消息,就算有服务器发生崩溃,整个集群依然可以运行,但延时比acks=1更高,因为要等待不止一个服务器节点接收消息-->

(2)消费者数据一致性

消费者消费数据时,引入了High Water Mark机制。木桶效应,只能消费ISR列表里偏移量最少的副本的消息数量。

ae0150ce68374e4f86221c6480427e01.png

Ⅱ、Kafka集群配置

yum install lrzsz -y

1、Kafka配置

(1) 安装:

安装java:yum install java wget -y -->kafka、zookeeper都是使用java写的 安装kafka: wget https://mirrors.bfsu.edu.cn/apache/kafka/2.8.1/kafka_2.12-2.8.1.tgz 解包: tar xf kafka_2.12-2.8.1.tgz

(2)kafka文件下各目录

c639e602f7c84342b17aab07a436e4fc.png

bin : 存放二进制文件

config : 存放配置文件

libs : 通常存放kafka的库

logs : 存放日志文件

(3)config下配置文件的修改

786d95f8963f4fa7a1bcb56aeba6fe3c.png

修改config /server.properties: ① broker.id=1/2 /3……

<!--# The id of the broker. This must be set to a unique integer for each broker.-->

broker为代理的 ID,每个代理,必须将其设置为唯一的整数

92785f19b4484d37b81f7687bd6983c3.png

② listeners=PLAINTEXT://nginx-kafka01:9092

kafka默认端口是9092

99a27337de99447eb51a484904c8d757.png

③ log.dirs=/data

kafka数据接收保存的地方,我的改为/data.

④ num.partitions=3

每个主题的默认日志分区数。更多的分区允许更大的并行度来使用,但这也将导致跨代理的文件更多。我将默认的1个改为3个。

④ zookeeper.connect=192.168.8.94:2181,192.168.8.95:2181,192.168.8.96:2181

zookeeper默认端口是2181

4164cf6ca5d147cb81cd63f0dc18eee9.png

<!--zookeeper.properties : 主要配置kafka下的集成zk的,不太好用-->

2、zookeeper配置

(1) 安装

使用自带的zookeeper集群配置 安装zookeeper: wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

(2)conf 配置文件修改

① 先将conf 配置文件下的zoo_sample.cfg拷贝一份命名为zoo.cfg(启动时只认zookeeper配置文件的名字为zoo.cfg)

cp zoo_sample.cfg zoo.cfg

② 对zoo.cfg文件进行操作:

  • dataDir=/tmp/zookeeper --》zookeeper存放路径的位置

  • clientPort=2181 --》zookeeper的默认端口

  • 在文件中添加三行代码:

  • 2d7b5c91c23149c9a0dd1ecff5794f5d.png

<!--这是zookeeper集群里各机器对应Ip,3888和4888都是端口 3888用于数据传输,4888用于检验存活性和选举-->

  • zookeeper机器宣告自己的ip

    创建/tmp/zookeeper目录 ,在目录中添加myid文件,文件内容就是本机指定的zookeeper id内容 

  •  例上图:在192.168.8.137机器上

  • echo 1 > /tmp/zookeeper/myid

(3)zookeeper 功能

分布式应用程序协调服务软件,提供的功能是:配置维护、域名服务、分布式同步、组服务等

3、启动

先启动zookeeper,后启动kafka(kafka的启动时依赖与zookeeper的,关闭服务的时候,先关闭kafka,再关闭zookeeper)

(1) 启动zookeeper

bin/zkServer.sh start (此目录下执行[root@nginx-kafka01 apache-zookeeper-3.6.3-bin]# pwd /opt/apache-zookeeper-3.6.3-bin)

  • 查看是否启动成功

[root@nginx-kafka03 apache-zookeeper-3.6.3-bin]# bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

至少的有一个leader

(2) 启动kafka

bin/kafka-server-start.sh -daemon config/server.properties

(3)连接zookeeper,及其使用

zookeeper目录下执行 bin/zkCli.sh

5f9fc5591bb841439be48e0d35e587bf.png

[zk: localhost:2181(CONNECTED) 4] get /brokers/ids/0
{"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://nginx-kafka02:9092"],"jmx_port":9999,"features":{},"host":"nginx-kafka02","timestamp":"1642300427923","port":9092,"version":5}
[zk: localhost:2181(CONNECTED) 5] ls /brokers/ids/0
[]
[zk: localhost:2181(CONNECTED) 6] get /brokers/ids/0
{"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://nginx-kafka02:9092"],"jmx_port":9999,"features":{},"host":"nginx-kafka02","timestamp":"1642300427923","port":9092,"version":5}
  • create 是创建节点

  • get是查看某个文件某个节点具体的值是什么

  • set 是设置某个节点的值

  • ls 是查看

① 当zookeeper集群没有搭建成功时:

1)、查看kafka进程是否跪了,若跪了则重新启动()

ps -ef|grep kafka

2)、

6cef7f32d86646ce9740e63c01ef039d.png

3)、默认用之前我们搭建的zookeeper集群,zookeeper也是可以指定路径的,

vim /opt/kkafka_2.12-2.8.1/config/server.properties

c6323e6b2e04454d83d95f18519be823.png

<!--我们连接kafka时,是直接连接的zookeeper的,整个集群是要交给zookeeper管理的,当我们没有创建节点时,是直接连接到“/”下面的,它便会自动创建一个brokers。-->

Ⅲ、测试

使用自带的测试工具进行测试

(2)、创建主题

bin/kafka-topics.sh --create --zookeeper 192.168.8.135:2181 --replication-factor 3 --partitions 1 --topic sc

创建的主题信息会保存在zookeeper上面

(1)、查看创建的主题信息:

  • kafka目录下面bin/zkCli.sh

  • ls /brokers/topics

    或者 bin/kafka-topics.sh --list --zookeeper 192.168.8.135:2181

    <!--其主题信息存在 /data目录下-->

(3)、使用提供的测试脚本创建生产者

[root@localhost kafka_2.12-2.8.0]# bin/kafka-console-producer.sh --broker-list 192.168.8.135:9092 --topic sc

(4) 、创建消费者

[root@localhost kafka_2.12-2.8.0]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.8.135:9092 --topic sc --from-beginning

<!--里面的ip可以填zookeeper集群里面的任意一台,因为它们的数据是一致的-->

查看hostname--->cat /etc/hosts -->kafka 配置文件config/server.pro里的zookeeper集群里的配置,还有listern处


四、filebeat部署

Ⅰ、filebeat

1、Beats 是轻量级日志采集器,使用go语言编写的

2、工作方式

         启动Filebeati时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到ibeat, libeat将聚集事件,并将聚集的数据发送到为Flebe.置的输出。

3、filebeat和logstash的关系 因为logstash是Jvm跑的,资源消耗比较大,所以后来作者又用golang写了一个功能较少但是资源消耗也小的轻量级的logstash-forwarder。不过作者是一个人,加入 Free and Open Search: The Creators of Elasticsearch, ELK & Kibana | Elastic公司以后,因为es公司本身还收购了另一个开源项目packetbeat ,而这个项目专门就是用golang的,有整个团队,所以es司干脆把logstash-forwarder的开发工作也合并到同一个golang团队来搞,于是新的项目就叫filebeat了。

4、filebeat的构成 flebeat结构:由两个组件构成,分别是inputs (输入)和harvesters (收集器),harvester负责读取单个文件的内容。harvester逐行读取每个文件,并将内容发送到输出。为每个文件启动一个harvester。harvester负责打开和关闭文这意味着文件描述符在harvester运行时保持打开状态。如果在收集文件时删除或重命名文件,Filebeat将继续读取该文件。这样做的副作用是,磁盘上的空直保留到harvester关闭。默认情况下,Filebeat保持文件打开,直到达到close_inactive

Ⅱ、fliebeat的配置

1、安装

1、rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

2、编辑/etc/yum.repos.d/fb.repo文件

elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

 3、yum安装

`yum  install  filebeat -y`

rpm -qa |grep filebeat #可以查看filebeat有没有安装 rpm -qa 是查看机器上安装的所有软件包 rpm -ql filebeat 查看filebeat安装到哪里去了,牵扯的文件有哪些

4、设置开机自启

systemctl enable filebeat

`{
	"filebeat.inputs": [
	 { "type":"log",
	   "enabled":true,
	   "paths":["/var/log/nginx/sc_access"
	 },
	],

}`

2、修改配置

修改配置文件/etc/filebeat/filebeat.yml `filebeat.inputs:

`filebeat.inputs:

- type: log

  Change to true to enable this input configuration.

  enabled: true

  Paths that should be crawled and fetched. Glob based paths.

  paths:

    - /var/log/nginx/sc/access.log 
      #==========------------------------------kafka-----------------------------------
      output.kafka:
      hosts: ["192.168.8.137:9092","192.168.8.135","192.168.8.140:9092"]
      topic: nginxlog
      keep_alive: 10s

3、验证fliebeat

① 创建主题nginxlog

bin/kafka-topics.sh --create --zookeeper 192.168.8.135:2181 --replication-factor 2 --partitions 1 --topic nginxlog

② 启动服务:

systemctl start filebeat

③ 查看fliebeat 是否启动

ps -ef |grep filebeatroot

④ 消费数据

bin/kafka-console-consumer.sh --bootstrap-server 192.168.8.135:9092 --topic nginxlog --from-beginning

⑤ 如果消费不到数据 :

  • 查看filebeat服务是否起来了(ps -ef|grep filebeat)

  • 查看filebeat 日志(/var/lib/filebeat/registry/filebeat/log.json)

  • 重启filebeat服务


五、添加域名映射

在客户端添加域名及IP,是客户端可以通过域名访问nginx web静态页面

C:\Windows\System32\drivers\etc下的hosts里添加对应域名及IP

078157cc2a98412a9151a7b41d08c0e0.png

排错:

zookeeper启动报错:

1、只显示进程号

之前已经开启zookeeper没有关闭,重启启动(restart)就可以了

2、显示Mode : standalone

 5756655271b24482ab552c4566fff807.png

若出现上面结果,关闭防火墙之后再尝试,便能成功

3、 查看日志文件936fc80d370744f69237765e232a2ced.png

日志文件配置错误,在检查检查配置

4 、如果想重新配置zookeeper,先关闭zookeeper服务,再到/tmp/zookeeper 目录下把历史信息删除:rm -rf version-2

  • 22
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值