elk筆記1--搭建elk集羣

最近由於需要,筆者繼續研究使用es,以下將es的安裝和使用記錄在此處,以便於後續查閱.

1 需求說明

  1. 軟件版本說明

    名稱 版本 下載地址 參考文檔
    jdk jdk-8u201-linux-x64(1.8.0_171)
    推薦 jdk1.8.0_144
    登錄官網下載 oracle java 官網
    elk elk6.8.8 elk downloads elk Document
  2. 服務器規劃

    ip host 用途 端口說明
    192.168.2.21 es01 es
    kibana
    9200
    5601
    9300
    192.168.2.22 es02 es 9200
    9300
    192.168.2.23 es03 es 9200
    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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章