ELK 搭建

ELK 是 elastic 公司旗下三款產品 ElasticSearch 、Logstash 、Kibana 的首字母組合。

ElasticSearch 是一個基於 Lucene 構建的開源,分佈式,RESTful 搜索引擎。

ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並作爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。我們建立一個網站或應用程序,並要添加搜索功能,但是想要完成搜索工作的創建是非常困難的。我們希望搜索解決方案要運行速度快,我們希望能有一個零配置和一個完全免費的搜索模式,我們希望能夠簡單地使用JSON通過HTTP來索引數據,我們希望我們的搜索服務器始終可用,我們希望能夠從一臺開始並擴展到數百臺,我們要實時搜索,我們要簡單的多租戶,我們希望建立一個雲的解決方案。因此我們利用Elasticsearch來解決所有這些問題及可能出現的更多其它問題      --------百度百科

Logstash 傳輸和處理你的日誌、事務或其他數據。

Kibana 將 Elasticsearch 的數據分析並渲染爲可視化的報表。

下載包到服務器 /home/software 目錄下

進行解壓 tar -xf *.gz    unzip *.zip

修改配置

ElasticSearch安裝

官網:https://www.elastic.co/downloads 下載包 rz -E 把包傳到服務器或者直接在服務器下載

解壓

啓動 elasticsearch     後臺啓動 elasticsearch -d

因爲elasticsearch是無權限啓動,因此root超管啓存在風險,用普通用戶啓動

增加用戶組:groupadd pz

增加普通用戶 useradd name -g pz所要加的用戶組方便管理)  -p  pass

添加權限 chown -R 組:名 elasticsearch

切換用戶 su name進行啓動 在elasticsearch的bin目錄下啓動

啓動成功最後一行顯示recovered[0] indices into cluster_state 成功

輸入curl localhost:9200 或curl ip:9200 只要可以訪問就是成功

jps 查看進程或者ps

配置在elasticsearch/config/elasticsearch.yml中配置 IP和PORT 以及集羣名和節點信息

cluster.name: 集羣名稱

node.name: 節點名稱   集羣最少三個不同節點,意思是三太服務器 集羣名相同,節點名不同

network.host: ip

http.port: 9200 端口 沒改過

HEAD插件安裝:基於HTML5編寫的集羣操作和管理工具,可現實集羣拓撲結構,進行一些操作

安裝node 環境基於jdk

創建一個文件與software同級

安裝jdk

安裝node  下載地址https://nodejs.org/en/download/

解壓

進入bin目錄執行npm命令  npm install -g grunt-cli

node -v      npm -v   gnunt -version   檢查各個版本

安裝head插件

下載包 wget  https://github.com/mobz/elasticsearch-head/archive/master.zip  從網上找的

解壓包unzip

在elasticsearch.yml末端下添加兩個命令  開啓http對外服務,讓head插件能夠訪問集羣

http.cors.enabled: true

http.cors.allow-origin: "*"

修改head插件配置文件 Gruntifile.js

connection屬性:options裏面添加 hostname: 'ip',   逗號不能少

完成後配置node的環境變量

在vim /etc/profiel

添加 NODE_HOME=/home/software/node6  裏面的jdk要一致 JAVA_HOME=/home/software/jdk版本

保持  source /etc/profile 配置生效命令

進入head根目錄 啓動 grunt server

出現 Start connect web server on http://ip:9100 成功

若提示Unbale to find local grunt  執行npm install -g grunt

grunt是基於Node.js的項目構建工具,可以進行打包壓縮、測試、執行等等的工作,head插件就是通過grunt啓動

在瀏覽器啓動 若訪問不到可能是沒有開啓對外訪問,在elasticsearch.yml裏面配置

 

IK中文分詞器安裝

獲取ik安裝包 elasticsearch-analysic-ik-版本.zip

解壓到elasticsearch的plugins的目錄下改名爲ik   mv  elasticsearch  ik

OK

 

Logstash的安裝基本一致

安裝包放到software,解壓

運行測試 logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}' 收集控制檯打印內容,並抓化成固定格式的字符串在控制檯輸出

運行命令後 隨便輸字符串 等待幾秒 出現像鍵值對一樣的數據就正確了

就是把數據庫數據幫到logstash上了

進入mysql 執行set names utf8;  先編碼一下

mysql數據導入索引(IK分詞器使用)需要安裝jdbc input插件logstash-input-jdbc的包放到logstash的plugins下(沒有就創建)

解壓    這個包的作用就是可以使用logstash從mysql導入數據到路徑在配置文件中指定

logstash啓動加載的文件(導入的數據源制定,導入的屬性指定) 網上找  jdbc.conf 放到bin目錄下

jdbc.sql  一條搜索語句: 表示要把那張表裏的數據導入到IK進行分詞搜索

啓動 logstash -f jdbc.conf   出現數據說明正在導入

 

集羣搭建在elasticsearch.yml配置文件中

集羣名,節點名 ip, port, 發現節點

discovery.zen.ping.unicast.hosts: ["本ip","其他節點ip"]

discovery.zen.minimum_master_nodes:  這是個數字     用來防止腦裂(就是一臺服務器因爲網絡波動而使集羣中其他節點認爲它宕機了,其實沒宕機,而出現兩個master控制,造成數據不一致現象)的出現 用過半算法(mastere/2+1)防止出現腦裂

筆記

集羣分佈式個高可用在ES中都是默認配置和計算
  集羣的分佈式,es的所有數據默認5個分片,每個分片默認一個副本(總共每個分片有2分,一份值主分片,一份是副分片)
  集羣配置完成後,啓動所有集羣節點, 分片和副本的數據將會自動計算分配到不同的 節點存儲,只有從少到多的移動,沒有從多到少的移動
  分配默認5片,副本默認1片,自動根據集羣節點數量最優的分配,分片越多,節點越多,副本越多,整個集羣的分佈式性能越高,高可用能力越高
  配置的自動發現的list和最大的mster數量
  集羣的節點角色
  master:負責管理集羣,掌握信息元數據(所有的索引的分片數量,副本數量,分片的存儲位置)所有的操作都是通過master完成的
  data:數據節點,保存數據,被讀,被寫
  負載均衡節點:既不管理集羣,也不存儲數據,只負責請求的轉發,分擔連接的壓力
  配置文件中node.master.true 表示主節點能力
      node.data:true  表示數據存儲能力
      當都是false表示負載均衡

      index.number_of_shards:5 默認是5 可以調節,一旦數據已經分片落地,
      則不能改變
      index.number_of_replicas: 1 值越大高可用能力越高,一旦落地,數據就不能改動
  ES的腦裂  最小的master數量可以防止腦裂產生
   計算公式:master數/2+1  過半
   元數據:描述數據的數據(描述分片的數據)
   master通信過程保持元數據一直,網絡波動造成master之間的通信障礙,一旦超時
   不管集羣中的master如何出現腦裂的情況,只要按照過半配置

 

邏輯不是很清晰,存在問題,請百度解決,謝謝。

 

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