elk笔记1--搭建elk集群
最近由于需要,笔者继续研究使用es,以下将es的安装和使用记录在此处,以便于后续查阅.
1 需求说明
-
软件版本说明
名称 版本 下载地址 参考文档 jdk jdk-8u201-linux-x64(1.8.0_171)
推荐 jdk1.8.0_144登录官网下载 oracle java 官网 elk elk6.8.8 elk downloads elk Document -
服务器规划
ip host 用途 端口说明 192.168.2.21 es01 es
kibana9200
5601
9300192.168.2.22 es02 es 9200
9300192.168.2.23 es03 es 9200
9300
2 环境准备
2.1 配置java 环境
- 解压tar包到制定位置
- 在~/.bashrc 中添加变量,并保存
export JAVA_HOME=/home/xg/soft/jdk1.8.0_201 export PATH=$PATH:$JAVA_HOME/bin
- java -version 确认java 环境配置成功
2.2 更新系统配置
- 设置hosts
在/etc/hosts 中加入以下内容:192.168.2.21 es01 192.168.2.22 es02 192.168.2.23 es03 ``
- 固定网卡ip
将/etc/network/interfaces更改为如下内容
三台服务器上都需要配置以便于固定ip,防止系统重启时候ip变化,hwaddress 可以根据需要更改即可.source /etc/network/interfaces.d/* # for elk auto ens33 iface ens33 inet static address 192.168.2.21 #注意es02为22, es03为23 netmask 255.255.255.0 gateway 192.168.2.1 hwaddress 00:0c:29:40:81:21 #注意es02为22, es03为23
- 更新 limts.conf 参数
在 cat /etc/security/limits.conf 中更新nofile和nproc的值,笔者这里根据以前使用经验设置了一个够elk启动的值,也可以根据需要设置更大的值.# for elk * soft nofile 65536 * hard nofile 65536 * soft nproc 5000 * hard nproc 5000
- 更新 sysctl.conf 参数
在 /etc/sysctl.conf 中添加如下内容# for elk vm.max_map_count=655360
2.3 elasticserach|kibana 配置更改
以下为笔者的目录配置, 若使用直接复制笔者的配置,参考笔者新建对应的目录.
xg@xg:~/soft/bigdata$ tree -L 1
.
├── data
├── elk6.8.8
├── log
└── shell
xg@xg:~/soft/bigdata$ tree -L 2
.
├── data
│ └── es6.8.8
├── elk6.8.8
│ ├── elasticsearch-6.8.8
│ └── kibana-6.8.8-linux-x86_64
├── log
│ └── es6.8.8
└── shell
├── keep_kibana_running.sh
├── nohup.out
├── old
└── updown_elk6.8.8.sh
更改elasticsearch配置文件 elasticsearch.yml
- 更改集群名称
cluster.name: es6.8
三个节点必须保证相同的集群名称 - 更改节点名称
node.name: node-1
es02,es03 分别为node-1,node-3 - 更改节点数据存储位置
path.data: /home/xg/soft/bigdata/data/es6.8.8 - 更改节点日志存储位置
path.logs: /home/xg/soft/bigdata/log/es6.8.8 - 更改host对应的ip
network.host: 0.0.0.0
此处若对所有机器开放访问权限则为0.0.0.0,也可以指定网段 - 更改port
http.port: 9200
建议统一为9200,若不设置的话,9200端口被占用后就会自动向后飘移一个端口
更改kibana配置文件 kibana.yml
- 更改kibana 名称
server.name: “Kibana-6.8” - 更改es hosts
elasticsearch.hosts: [“http://localhost:9200”]
此处默认,也可以指定
3 测试结果
- 启动脚本
#!/bin/bash help() { cat <<_EOF Help function: bash updown_elk.sh help|es|kibana|stopall _EOF } elk_es() { cd /home/xg/soft/bigdata/elk6.8.8/elasticsearch-6.8.8/bin/ ES_JAVA_OPTS="-Xms500m -Xmx500m" ./elasticsearch & } elk_kibana() { sleep 20 cd /home/xg/soft/bigdata/elk6.8.8/kibana-6.8.8-linux-x86_64/bin ./kibana & } elk_stop() { ps -ef|grep -v grep|grep node|grep 'src/cli'|awk '{print $2}'|xargs kill sleep 5 jps|grep -v grep|grep -i elasticsearch|awk '{print $1}'|xargs kill } case "$1" in help) help ;; es) elk_es ;; kibana) elk_kibana ;; stopall) elk_stop ;; *) echo "Unknown command: $1" help exit 1 ;; esac
- 启动效果
查看集群状态如下:
http://192.168.2.21:9200/_cluster/health
monitor查看集群状态如下:
4 注意事项
- 集群中多个节点运行在同一个机器上
若ABC 3个机器上分别部署了clusterA的a1b1c1 3个节点,直接设置相同的集群名称,正常情况下可能会无法加入,此时需要设置discovery.seed_hosts 属性,
例如clusterA的master节点 transport.tcp.port 为 9301,则依次在seed_hosts中添加ip:9301即可,如下所示:
[“10.120.75.102:9301”,“10.120.75.103:9301”,“10.120.75.107:9301”]
重启节点的时候,新节点就会通过seed_hosts总的ip:9301和现有的集群通信,并加入到集群中 - 节点属性
node.attr.rack: r2(设置机架属性)
node.attr.zone: zone-b (设置区域属性) - es集群节点设置
es节点包括master,data,ingest,coordinating
node.master: true(默认值)
node.data: true(默认值)
node.data: true(默认值)
当设置master和data都为false后,节点就为ingest类型,即为client节点;
当master、data和ingest都为false,该节点就为coordinating节点;
对于小集群可以不区分各个节点类型,较大集群,如20个节点以上的,建议区分节点的类型。
5 说明
笔者测试系统为vm下的Ubuntu 1604 server