centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解
centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解
环境准备:
操作系统: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
# 集群的关键配置
discovery.zen.ping.unicast.hosts: ["u04elk02.yaya.corp", "u04elk03.yaya.corp"]
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
# 集群的关键配置
discovery.zen.ping.unicast.hosts: ["u04elk02.yaya.corp", "u04elk03.yaya.corp"]
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] 说明配置成功:
日志文件:/data/es/logs/yunva_elk_cluster.log
[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 的值。
ok的配置
broker.id=0
port=9092
advertised.host.name=10.x.x.21
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=24
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
log.cleaner.enable=true
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解的更多相关文章
- MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解
MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...
- legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)
legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead) 一.总结 一句话总结: 1.安装的话就是下载好git,va ...
- centos6.5环境下zookeeper-3.4.6集群环境部署及单机部署详解
centos6.5环境下Zookeeper-3.4.6集群环境部署 [系统]Centos 6.5 集群部署 [软件]准备好jdk环境,此次我们的环境是open_jdk1.8.0_101 zookeep ...
- Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)
注意! laravel/homestead box项目地址已经不再是原来的 https://atlas.hashicorp.com/laravel/boxes/homestead 而已经变更成 htt ...
- ELK部署详解--kibana
kibana.yml # Kibana is served by a back end server. This setting specifies the port to use.#端口server ...
- ELK部署详解--elasticsearch
#Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编 ...
- LVS负载均衡在Ubuntu环境下部署详解
一.本地环境介绍: 负载均衡的三台机器均为Ubuntu Server 14.04 64位系统,内核中已集成ipvs模块( modprobe -l | grep ipvs 查看 ).为演示LVS负载均衡 ...
- CentOS7 JDK1.8部署详解
一.下载 首先需要将本地下载好的jdk包拷贝到Linux中:scp jdk-8u91-linux-x64.tar.gz hadoop@192.168.***.***:~/software/ //星号处 ...
- jdk1.8源码包下载并导入到开发环境下助推高质量代码(Eclipse、MyEclipse和Scala IDEA for Eclipse皆适用)(图文详解)
不多说,直接上干货! jdk1.8 源码, Linux的同学可以用的上. 由于源码JDK是前版本的超集, 所以1.4, 1.5, 1.6, 1.7都可以用的上. 其实大家安装的jdk路径下,这 ...
随机推荐
- JSONP和CORS两种跨域方式的简单介绍和解决方案实例
随着软件开发分工趋于精细,前后端开发分离成为趋势,前端同事负责前端页面的展示及页面逻辑处理,服务端同事负责业务逻辑处理同时通过API为前端提供数据也为前端提供数据的持久化能力,考虑到前后端同事开发工具 ...
- Ionic开发实战
转自:http://blog.csdn.net/i348018533/article/details/47258449/ 折磨的两个月!Ionic从零单排,到项目发布!遇到了很多问题但都一一解决了,此 ...
- Eclipse debug高级技巧(转)
Debug视图 认识debug视图,红色部分框为线程堆栈视图,黄色部分框为表达式.断点.变量视图,蓝色部分为代码视图. 线程堆栈视图 分别介绍一下这几个按钮的含义: 1.表示当前实现继续运行直到下一个 ...
- FormatFloat 格式化浮点数
#和0的区别: #是对应位有值显示,无值不显示 0是对应位有值显示,无值显示0 分号后的字符串是对负值的格式化特殊定义: s := FormatFloat(.); .); .); .); ...
- IOS零碎技术整理(2)-隐藏系统Tabbar
原理就是将tabbar移出显示区 -(void)hideSystemTabBar:(UITabBar*) tabbarcontroller { [UIView beginAnimations:nil ...
- angularJs ng-model/ng-bind
ng-bind 与ng-model区别ng-bind是从$scope -> view的单向绑定,也就是说ng-bind是相当于{{object.xxx}},是用于展示数据的.ng-modle是$ ...
- (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about t
运行redis过程中,突然报错如下: (error) MISCONF Redis is configured to save RDB snapshots, but is currently not a ...
- 关于MySql 关键字与字段名冲突 的问题
我在用mysql创建数据表时,其中一个表怎么创建都提示失败,最终我把语句翻来覆去折腾了许多遍之后发现原来我的一个字段值的名称为order的字段出了问题,把它去了就好了,最后结论就是设置字段值名称时不要 ...
- 作品-网站 - [二次开发] 广联达BIM
客户地区:北京 基于帝国ECMS二次开发 网址:http://bim.glodon.com 开发性质:二次开发 网站类型:企业级
- Java 判断文件夹、文件是否存在、否则创建文件夹
1.判断文件是否存在,不存在创建文件 File file=new File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm"); if( ...