阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7.2部署Elasticsearch+Kibana+Zookeeper+Kafka

434次阅读
没有评论

共计 8670 个字符,预计需要花费 22 分钟才能阅读完成。

CentOS 7.2 部署 Elasticsearch-5.0.1+Kibana-5.0.1+Zookeeper3.4.6+Kafka_2.9.2-0.8.2.1 详解。

CentOS 7.2 部署 Elasticsearch+Kibana+Zookeeper+Kafka

环境准备:
操作系统:centos7.2 x86_64

# uname -a
Linux u04elk03.yaya.corp 3.10.0-327.22.2.el7.x86_64 #1 SMP Thu Jun 23 17:05:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
软件包:
jdk-8u102-linux-x64.rpm
kibana-5.0.1-x86_64.rpm
elasticsearch-5.0.1.rpm
kafka 版本:2.9.2-0.8.2.1.tgz
zookeeper3.4.6.tar.gz

zook 和 kafka 集群:
u04elk03.yaya.corp
u04elk02.yaya.corp
u04elk.yaya.corp

elasticsearch 集群:
u04elk03.yaya.corp
u04elk02.yaya.corp

1. 安装 jdk1.8,记得删除之前的 openjdk 或者低版本 jdk

rpm -e –nodeps Java-1.8.0-openjdk-headless-1.8.0.101-3.b13.el7_2.x86_64
rpm -e –nodeps Python-javapackages-3.4.1-11.el7.noarch
rpm -e –nodeps tzdata-java-2016f-1.el7.noarch
rpm -e –nodeps java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64
rpm -e –nodeps javapackages-tools-3.4.1-11.el7.noarch

2. 安装 elasticsearch-5.0.1
下载地址:https://www.elastic.co/downloads
rpm -ivh elasticsearch-5.0.1.rpm

u04elk02.yaya.corp 的 elasticsearch.yml 配置
cluster.name: yunva_elk_cluster

node.name: u04elk02.yaya.corp
node.master: true
node.data: true
path.data: /data/es/data
path.logs: /data/es/logs
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200

u04elk03.yaya.corp 的配置
# cat /etc/elasticsearch/elasticsearch.yml
cluster.name: yunva_elk_cluster

node.name: u04elk03.yaya.corp
node.master: true
path.data: /data/es/data
path.logs: /data/es/logs
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200

创建日志和数据存放目录
mkdir -p /data/es/data
mkdir /data/es/logs
chown -R elasticsearch.elasticsearch /data/es

启动 elasticsearch

systemctl start elasticsearch
systemctl enable elasticsearch

访问以下 web 地址验证是否 ok:
http://192.168.3.13:9200/

出现如下信息,说明没有问题

{
  “name” : “u04elk02.yaya.corp”,
  “cluster_name” : “yunva_elk_cluster”,
  “cluster_uuid” : “_6G7IvUeT6-2Qdh_AXo2mA”,
  “version” : {
    “number” : “5.0.1”,
    “build_hash” : “080bb47”,
    “build_date” : “2016-11-11T22:08:49.812Z”,
    “build_snapshot” : false,
    “lucene_version” : “6.2.1”
  },
  “tagline” : “You Know, for Search”
}

可以查看相关集群的状态信息

# curl -XGET ‘http://localhost:9200/_cluster/state/{metrics}/{indices}’
{“cluster_name”:”yunva_elk_cluster”}

# curl -XGET ‘http://localhost:9200/_cluster/state?pretty’
{
  “cluster_name” : “yunva_elk_cluster”,
  “version” : 2,
  “state_uuid” : “hHaLqrlyT4KszbCCZ5Yy-Q”,
  “master_node” : “oe-62CJxS_G5sKLYWeepqA”,
  “blocks” : {},
  “nodes” : {
    “oe-62CJxS_G5sKLYWeepqA” : {
      “name” : “u04elk02.yaya.corp”,
      “ephemeral_id” : “qhW1YiSURwKZUenjKDRWZw”,
      “transport_address” : “10.19.124.119:9300”,
      “attributes” : {}
    }
  },
  “metadata” : {
    “cluster_uuid” : “4b6LLl0GRdWNm9r7acGE8Q”,
    “templates” : {},
    “indices” : {},
    “index-graveyard” : {
      “tombstones” : []
    }
  },
  “routing_table” : {
    “indices” : {}
  },
  “routing_nodes” : {
    “unassigned” : [],
    “nodes” : {
      “oe-62CJxS_G5sKLYWeepqA” : []
    }
  }
}

elasticsearch-5.0.1 只支持内核 3.5 以上版本的 linux 操作系统
centos6.5 报错:
[2016-11-23T16:16:24,329][WARN][o.e.b.JNANatives] unable to install syscall filter:
java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in

①优化 elasticsearch 内存配置:
修改配置文件:

vim /etc/elasticsearch/jvm.options
-Xms10g
-Xmx10g

建议配置为物理最大内存的一半以上,在 /usr/share/elasticsearch/bin/elasticsearch.in.sh 配置没有用

查看日志出现类似 heap size [9.9gb] 说明配置成功:
[2016-11-23T20:02:52,900][INFO][o.e.e.NodeEnvironment] [u04elk02.yaya.corp] heap size [9.9gb], compressed ordinary object pointers [true]

②配置文件句柄
vim /etc/security/limits.d/20-nproc.conf
删除这行:
*          soft    nproc    4096

3. 安装 kibana
rpm -ivh kibana-5.0.1-x86_64.rpm

编辑配置文件
vim /etc/kibana/kibana.yml
修改这两项,其他默认不用动
server.host: “0.0.0.0”
elasticsearch.url: “http://localhost:9200”

启动命令:
systemctl start kibana
systemctl enable kibana

4. 安装 zookeeper 集群,单独配置,不用 kafka 自带的(集群节点建议是单数个,本次我们有启用 3 个节点)

下载地址:http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/
tar -zxf zookeeper-3.4.6.tar.gz
cd /data/zookeeper-3.4.6/
cp zoo_sample.cfg zoo.cfg

vim zoo.cfg
—————————————
tickTime=2000
initLimit=10
syncLimit=5
# 数据保存目录
dataDir=/data/zookeeper-3.4.6/data
# 日志保存目录
dataLogDir=/data/zookeeper-3.4.6/logs
# 保留的快照个数
autopurge.snapRetainCount=20
# 保留的时间,单位小时
autopurge.purgeInterval=30
clientPort=2181
server.1=u04elk.yaya.corp:2888:3888
server.2=u04elk02.yaya.corp:2888:3888
server.3=u04elk03.yaya.corp:2888:3888
—————————————

创建 data 和 Log 文件夹

mkdir /data/zookeeper-3.4.6/data
mkdir /data/zookeeper-3.4.6/logs

在 zoo.cfg 中的 dataDir 指定的目录下,新建 myid 文件。
例如:$ZK_INSTALL/data 下,新建 myid。在 myid 文件中输入 1。表示为 server.1。
cd /data/zookeeper-3.4.6/data/myid
touch myid
echo 1 > myid

将整个目录拷贝到其他节点,然后修改 myid 为各自的节点标示即可:
scp -P 2022 /data/zookeeper-3.4.6/ -r u04elk.yaya.corp:/data/

5.kafka 配置
下载地址:http://kafka.apache.org/downloads
 
/data/kafka_2.9.2-0.8.2.1
# egrep -v “#|^$” config/server.properties
—————————————
broker.id=1
port=9092
host.name=0.0.0.0
num.network.threads=3
 
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=false
zookeeper.connect=u04elk.yaya.corp:2181,u04elk02.yaya.corp:2181,u04elk03.yaya.corp:2181
zookeeper.connection.timeout.ms=6000
—————————————

只改 zook 和 host.name,broker.id= 1 这三项,其他默认
zookeeper.connect=u04elk.yaya.corp:2181,u04elk02.yaya.corp:2181,u04elk03.yaya.corp:2181
host.name=0.0.0.0

启动
bin/kafka-server-start.sh config/server.properties &

注意:
broker.id=0  broker 的 id,每个 kafka 节点配置不能一样,可以 0,1,2 等
host.name=192.168.10.2 broker 的 hostname;如果 hostname 已经设置的话,broker 将只会绑定到这个地址上;如果没有设置,它将绑定到所有接口,并发布一份到 ZK。每台节点设置成当前节点的 IP 地址

将文件拷贝到其他节点,修改 broker.id 的值,在各节点中启动 kafka:
scp -P 2022 /data/kafka_2.9.2-0.8.2.1 -r u04elk.yaya.corp:/data/

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

zook 启动报错:
# ./zkServer.sh status
JMX enabled by default
Using config: /data/zookeeper-3.4.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

网上的解决方案:

1. 打开 zkServer.sh 找到 status)
STAT=`echo stat | nc localhost $(grep clientPort “$ZOOCFG” | sed -e ‘s/.*=//’) 2> /dev/null| grep Mode`
在 nc 与 localhost 之间加上 -q 1(是数字 1 而不是字母 l)
如果已存在则去掉
注: 在我的 zkServer.sh 脚本文件里根本没有这一行, 所以没有生效

2. 调用 sh zkServer.sh status 遇到这个问题。百度,google 了后发现有人是修改 sh 脚本里的一个 nc 的参数来解决,可在 3.4.6 的 sh 文件里并没有找到 nc 的调用。配置文档里指定的 log 目录没有创建导致出错,手动增加目录后重启,问题解决。
注: 我想不是日志的问题所以这个方法根本就没有试

3. 创建数据目录, 也就是在你 zoo.cfg 配置文件里 dataDir 指定的那个目录下创建 myid 文件, 并且指定 id, 改 id 为你 zoo.cfg 文件中 server.1=localhost:2887:3887 中的 1. 只要在 myid 头部写入 1 即可.
注: 这是我的解决办法

实际的解决办法:
vim /etc/hosts

将本机对应的 127.0.0.1 和 192.168.1.103 对应的主机名删除(主机名是正确的,但是无法启动,可能是绑定了 127.0.0.1)

kafka 在 centos 系统上的报错:
/data/kafka_2.9.2-0.8.2.1/zookeeper.out 文件中的报错:Path:/admin/preferred_replica_election Error:KeeperErrorCode = NoNode for /admin/preferred_replica_election

2016-11-23 19:26:33,472 [myid:2] – INFO  [ProcessThread(sid:2 cport:-1)::PrepRequestProcessor@645] – Got user-level KeeperException when processing sessionid:0x25890ed3acc0000 type:create cxid:0x10 zxid:0x20000000b txntype:-1 reqpath:n/a Error Path:/admin Error:KeeperErrorCode = NoNode for /admin
2016-11-23 19:26:33,641 [myid:2] – INFO  [ProcessThread(sid:2 cport:-1)::PrepRequestProcessor@645] – Got user-level KeeperException when processing sessionid:0x25890ed3acc0000 type:setData cxid:0x1a zxid:0x20000000f txntype:-1 reqpath:n/a Error Path:/controller_epoch Error:KeeperErrorCode = NoNode for /controller_epoch
2016-11-23 19:26:33,682 [myid:2] – INFO  [ProcessThread(sid:2 cport:-1)::PrepRequestProcessor@645] – Got user-level KeeperException when processing sessionid:0x25890ed3acc0000 type:delete cxid:0x27 zxid:0x200000011 txntype:-1 reqpath:n/a Error Path:/admin/preferred_replica_election Error:KeeperErrorCode = NoNode for /admin/preferred_replica_election

原因���析:
机器有两块网卡,kafka 的 host.name 开始只绑定在了内部 IP 上,另一块对外网卡无法访问,把值设置为空的话会 kafka 监听端口在所有的网卡上绑定,但是在外网访问时,客户端又遇到了 java.nio.channels.ClosedChannelException 异常信息,server 端用 tcpdump 分析的时候发现客户端有传递 kafka 所在机器的机器名过来。在 client 里断点跟踪一下发现是 findLeader 的时候返回的元信息是机器名而不是 IP。客户端无法解析这个机器名所以出现了前面的异常。

在 server.properties 里还有另一个参数是解决这个问题的,advertised.host.name 参数用来配置返回的 host.name 值,把这个参数配置为外网 IP 地址即可。

这个参数默认没有启用,默认是返回的 java.net.InetAddress.getCanonicalHostName 的值,在我的 mac 上这个值并不等于 hostname 的值而是返回 IP,但在 linux 上这个值就是 hostname 的值。

ElasticSearch 最新版本 2.20 发布下载了  http://www.linuxidc.com/Linux/2016-02/128166.htm

Linux 上安装部署 ElasticSearch 全程记录  http://www.linuxidc.com/Linux/2015-09/123241.htm

Elasticsearch 安装使用教程 http://www.linuxidc.com/Linux/2015-02/113615.htm

ElasticSearch 配置文件译文解析 http://www.linuxidc.com/Linux/2015-02/114244.htm

ElasticSearch 集群搭建实例  http://www.linuxidc.com/Linux/2015-02/114243.htm

分布式搜索 ElasticSearch 单机与服务器环境搭建  http://www.linuxidc.com/Linux/2012-05/60787.htm

ElasticSearch 的工作机制  http://www.linuxidc.com/Linux/2014-11/109922.htm 

Elasticsearch 的安装,运行和基本配置 http://www.linuxidc.com/Linux/2016-07/133057.htm

使用 Elasticsearch + Logstash + Kibana 搭建日志集中分析平台实践  http://www.linuxidc.com/Linux/2015-12/126587.htm

Ubuntu 14.04 搭建 ELK 日志分析系统(Elasticsearch+Logstash+Kibana) http://www.linuxidc.com/Linux/2016-06/132618.htm

Elasticsearch1.7 升级到 2.3 实践总结  http://www.linuxidc.com/Linux/2016-11/137282.htm

ElasticSearch 的详细介绍:请点这里
ElasticSearch 的下载地址:请点这里 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137636.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8670字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7958652
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示

亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示

亚马逊云崩完,微软云崩!当全球第二大云“摔了一跤”:Azure 宕机背后的配置风险与警示 首先来回顾一下 10...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...