elk笔记1--搭建elk集群

最近由于需要,笔者继续研究使用es,以下将es的安装和使用记录在此处,以便于后续查阅.

1 需求说明

  1. 软件版本说明

    名称版本下载地址参考文档
    jdkjdk-8u201-linux-x64(1.8.0_171)
    推荐 jdk1.8.0_144
    登录官网下载oracle java 官网
    elkelk6.8.8elk downloadselk Document
  2. 服务器规划

    iphost用途端口说明
    192.168.2.21es01es
    kibana
    9200
    5601
    9300
    192.168.2.22es02es9200
    9300
    192.168.2.23es03es9200
    9300

2 环境准备

2.1 配置java 环境

  1. 解压tar包到制定位置
  2. 在~/.bashrc 中添加变量,并保存
    export JAVA_HOME=/home/xg/soft/jdk1.8.0_201
    export PATH=$PATH:$JAVA_HOME/bin
    
  3. java -version 确认java 环境配置成功

2.2 更新系统配置

  1. 设置hosts
    在/etc/hosts 中加入以下内容:
    192.168.2.21 es01
    192.168.2.22 es02
    192.168.2.23 es03
    ``
    
  2. 固定网卡ip
    将/etc/network/interfaces更改为如下内容
    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
    
    三台服务器上都需要配置以便于固定ip,防止系统重启时候ip变化,hwaddress 可以根据需要更改即可.
  3. 更新 limts.conf 参数
    在 cat /etc/security/limits.conf 中更新nofile和nproc的值,笔者这里根据以前使用经验设置了一个够elk启动的值,也可以根据需要设置更大的值.
    # for elk
    *               soft     nofile          65536
    *               hard     nofile          65536
    *               soft     nproc           5000 
    *               hard     nproc           5000
    
  4. 更新 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

  1. 更改集群名称
    cluster.name: es6.8
    三个节点必须保证相同的集群名称
  2. 更改节点名称
    node.name: node-1
    es02,es03 分别为node-1,node-3
  3. 更改节点数据存储位置
    path.data: /home/xg/soft/bigdata/data/es6.8.8
  4. 更改节点日志存储位置
    path.logs: /home/xg/soft/bigdata/log/es6.8.8
  5. 更改host对应的ip
    network.host: 0.0.0.0
    此处若对所有机器开放访问权限则为0.0.0.0,也可以指定网段
  6. 更改port
    http.port: 9200
    建议统一为9200,若不设置的话,9200端口被占用后就会自动向后飘移一个端口

更改kibana配置文件 kibana.yml

  1. 更改kibana 名称
    server.name: “Kibana-6.8”
  2. 更改es hosts
    elasticsearch.hosts: [“http://localhost:9200”]
    此处默认,也可以指定

3 测试结果

  1. 启动脚本
    #!/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
    
  2. 启动效果
    查看集群状态如下:
    http://192.168.2.21:9200/_cluster/health
    集群状态
    monitor查看集群状态如下:
    monitor数据

4 注意事项

  1. 集群中多个节点运行在同一个机器上
    若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和现有的集群通信,并加入到集群中
  2. 节点属性
    node.attr.rack: r2(设置机架属性)
    node.attr.zone: zone-b (设置区域属性)
  3. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昕光xg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值