批量搞機(二):分佈式ELK平臺、Elasticsearch介紹、Elasticsearch集羣安裝、ES 插件的安裝與使用

1、分佈式ELK平臺java

ELK的介紹:node

ELK 是什麼?web

Sina、餓了麼、攜程、華爲、美團、freewheel、暢捷通 、新浪微博、大講臺、魅族、IBM...... 這些公司都在使用 ELK!ELK!ELK!數據庫

ELK居然重複了三遍,是個什麼鬼?json

ELK 其實並非一款軟件,而是一整套解決方案,是三個軟件產品的首字母縮寫vim

  1. Elasticsearch:負責日誌檢索和儲存
  2. Logstash:負責日誌的收集和分析、處理
  3. Kibana:負責日誌的可視化

這三款軟件都是開源軟件,一般是配合使用,並且又前後歸於 Elastic.co 公司名下,故被簡稱爲 ELK瀏覽器

ELK 能作什麼?安全

ELK組件在海量日誌系統的運維中,可用於解決:服務器

  • 分佈式日誌數據集中式查詢和管理
  • 系統監控,包含系統硬件和應用各個組件的監控
  • 故障排查
  • 安全信息和事件管理
  • 報表功能

ELK 是什麼樣子的?架構

ELK 是什麼樣子的?

ELK 是什麼樣子的?

2、Elasticsearch介紹

Elasticsearch是什麼?

ElasticSearch 是一個基於 Lucene 的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於 RESTful API 的 web 接口。

Elasticsearch 是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。

Elasticsearch主要特色:

  1. 實時分析
  2. 分佈式實時文件存儲,並將每個字段都編入索引
  3. 文檔導向,全部的對象所有是文檔
  4. 高可用性,易擴展,支持集羣(Cluster)、分片和複製(Shards 和 Replicas)
  5. 接口友好,支持 JSON

Elasticsearch(簡稱ES)沒有什麼?

  • Elasticsearch 沒有典型意義的事務.
  • Elasticsearch 是一種面向文檔的數據庫。
  • Elasticsearch 沒有提供受權和認證特性

ES相關概念:

Node: 裝有一個 ES 服務器的節點。
Cluster: 有多個Node組成的集羣
Document: 一個可被搜素的基礎信息單元
Index: 擁有類似特徵的文檔的集合
Type: 一個索引中能夠定義一種或多種類型
Filed: 是 ES 的最小單位,至關於數據的某一列
Shards: 索引的分片,每個分片就是一個 Shard
Replicas: 索引的拷貝

ES 與關係型數據庫的對比:

在 ES 中,文檔歸屬於一種 類型 (type) ,而這些類型存在於索引 (index) 中,類比傳統關係型數據庫

DB --> Databases --> Tables --> Rows --> Columns
關係型 --> 數據庫 --> 表 --> 行 --> 列

ES --> Indices --> Types --> Documents --> Fields
ES --> 索引 --> 類型 --> 文檔 --> 域(字段)

ES 與關係型數據庫的對比:

Elasticsearch架構圖:

3、Elasticsearch集羣安裝

安裝思路:

  1. 安裝第一臺 ES 服務器
  2. 設置主機名稱和 ip 對應關係
  3. 解決依賴關係
  4. 安裝軟件包
  5. 修改配置文件
  6. 啓動服務
  7. 檢查服務

安裝步驟:

步驟 1:設置 ip 與主機名稱對應關係

配置 /etc/hosts
192.168.4.11 node1

步驟 2:安裝 JDK

Elasticsearch 要求至少 Java 7,通常推薦使用 OpenJDK 1.8,配置好安裝源之後,咱們先解決依賴關係
yum install -y java-1.8.0-openjdk

步驟 3:安裝 ES

rpm –ivh elasticsearch-2.3.4-1.noarch

步驟 4:修改配置文件

elasticsearch.yml
network.host: 0.0.0.0   //修改後監控範圍爲全部網段主機

步驟 5:啓動服務,設置自啓動

systemctl enable elasticsearch
systemctl start elasticsearch

驗證:

netstat –ltunp
可以看到 9200,9300 被監聽

經過瀏覽器或 curl 訪問 9200 端口
curl http://192.168.4.11:9200/
{
   "name" : "node1",
   "cluster_name" : "my-es",
   "version" : {
   "number" : "2.3.4",
   ...... ...... ......
   "build_snapshot" : false,
   "lucene_version" : "5.5.0"
},
   "tagline" : "You Know, for Search「
}

課堂練習:

1> 準備 1 臺虛擬機
2> 部署 elasticsearch 第一個節點
3> 訪問 9200 端口查看是否安裝成功

ES 集羣配置:

ES 集羣配置也很簡單,只須要對配置文件作少許的修改便可,其餘步驟和單機徹底一致

1> ES 集羣配置文件

cluster.name: my-es
node.name: node1
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["node1", "node2","node3"]

2> 集羣中的全部節點要相互可以 ping 通,要在全部集羣機器上配置 /etc/hosts 中的主機名與 ip 對應關係;集羣中全部機器都要安裝 java 環境

cluster.name 集羣名稱配置要求徹底一致
node.name 爲當前節點標識,應配置本機的主機名
discovery 爲集羣節點機器,不須要所有配置

3> 配置完成之後啓動全部節點服務(有可能會有必定的延時,須要等待幾十秒)

4> 驗證集羣,使用 ES 內置字段 _cluster/health

curl http://192.168.4.11:9200/_cluster/health?pretty
{
  "cluster_name" : "my-es",
  "status" : "green",
  ...... ...... ......
  "number_of_nodes" : 5,
  "number_of_data_nodes" : 5,
  ...... ...... ......
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

5> 返回字段解析

"status「 : 」green「 集羣狀態,綠色爲正常,黃色表示有問題但不是很嚴重,紅色表示嚴重故障
「number_of_nodes」 : 5, 表示集羣中節點的數量
"number_of_data_nodes" : 5,
...... ...... ......
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}

課堂練習:

一共安裝 5 臺虛擬機
在全部機器中部署 ES
啓動服務查看驗證集羣狀態

4、ES 插件的安裝與使用

ES 經常使用插件:

head 插件:

  1. 它展示ES集羣的拓撲結構,而且能夠經過它來進行索引(Index)和節點(Node)級別的操做
  2. 它提供一組針對集羣的查詢API,並將結果以json和表格形式返回
  3. 它提供一些快捷菜單,用以展示集羣的各類狀態

kopf 插件

是一個ElasticSearch的管理工具,它提供了對ES集羣操做的API

bigdesk 插件

是elasticsearch的一個集羣監控工具,能夠經過它來查看es集羣的各類狀態,如:cpu、內存使用狀況,索引數據、搜索狀況,http鏈接數等

ES 插件安裝、查看

查看安裝的插件:

/usr/share/elasticsearch/bin/plugin list

安裝插件:

/usr/share/elasticsearch/bin/plugin install ftp://192.168.4.254/head.zip    //相似yum源的第一種安裝方式
/usr/share/elasticsearch/bin/plugin install file:///tmp/kopf.zip   //相似yum源的第二種安裝方式

這裏必須使用 url 的方式進行安裝,若是文件在本地,咱們也須要使用 file:// 的方式指定路徑,例如文件在/tmp/xxx 下面,咱們要寫成 file:///tmp/xxx 刪除使用 remove 指令

ES head 插件

ES kopf 插件

ES bigdesk 插件

 

 

 

 

 

 

 

 

 

 

 

############################################################

課堂練習:

ES集羣安裝:

環境要求:6臺機器;5臺裝ES 名稱min{1..5}   內存:1G;1臺裝kibana和logstash 名稱min6   內存:4G 

第一步:全部機器都安裝java環境

# yum list |grep java   //過濾出java版本,安裝要求至少1.7以上版本
# for i in min{1..6};do ssh ${i} 'yum -y install java-1.8.0-openjdk';done   //批量安裝命令,前提密鑰已經傳到各個機子上面了,不然打斷,具體查看ansible裏面將密鑰傳遞到各個被管理機子方法

第二步:全部機器都安裝es集羣環境 

# for i in min{2..6};do scp -r elasticsearch-2.3.4.rpm ${i}:/opt;done    //將es包批量傳到被管理機器上
# for i in min{2..6};do ssh ${i} 'cd /opt;rpm -ivh elasticsearch-2.3.4.rpm';done  //在被管理主機上批量安裝es包 

第三步:更改主節點機器的es服務的配置文件

# rpm -qc elasticsearch  //查詢es服務配置文件位置
# vim /etc/elasticsearch/elasticsearch.yml  //配置文件行要頂格,格式要求很嚴格
 17 cluster.name: my-min1     //定義集羣名
 23 node.name: min1           //節點主機名,填寫本機自身的hostname名字
 54 network.host: 0.0.0.0     //監控的主機爲全部網段主機
 68 discovery.zen.ping.unicast.hosts: ["min1", "min2","min3"]  //配置集羣的節點主機,不須要所有配置

第四步:將主節點機器es服務的配置文件傳給從節點主機,並關閉、卸載全部節點主機的防火牆

# for i in min{2..5};do scp -r elasticsearch.yml $i:/etc/elasticsearch/ ;done  //將主節點機器配置文件傳到從節點主機配置文件對應位置,以便批量更改
# for i in min{1..5};do ssh $i 'systemctl stop firewalld';done  //批量關閉防火牆
# for i in min{1..5};do ssh $i 'systemctl mask firewalld';done  //批量卸載防火牆 

第五步:批量更改從節點機器的es服務的配置文件裏面的節點主機名

# for i in min{2..5};do ssh $i 'sed -i "s/^\(node.name: \).*/\1$HOSTNAME/" /etc/elasticsearch/elasticsearch.yml';done   //批量將從節點主機es服務配置文件裏面的節點主機名字改成主機自己名字 

第六步:更改節點主機解析地址

# vim /etc/hosts    //將節點主機解析地址寫入主機文件,否則啓動是解析報錯
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.4.1 min1
192.168.4.2 min2
192.168.4.3 min3
192.168.4.4 min4
192.168.4.5 min5
192.168.4.6 min6
# for i in min{2..6};do scp -r hosts $i:/etc/;done
# for i in min{1..5};do ssh $i 'systemctl start elasticsearch';done   //批量啓動es服務
# for i in min{2..5};do ssh $i 'systemctl status elasticsearch';done  //查看節點主機的es服務啓動狀態

第七步:驗證://真機上瀏覽器訪問查看到已鏈接的節點主機 

http://192.168.4.1:9200/_cluster/health?pretty 

主節點機器min1:

 

主節點機器min2: 

 

主節點機器min3: 

 

主節點機器min4: 

 

主節點機器min5: 

 

主節點機器min6: //節點機器6沒有開啓,因此沒有狀態,沒法鏈接

 

ES插件安裝: 

# tar -xf elk.tar
# cd /usr/share/elasticsearch/bin/
# ./plugin list
# ./plugin install file:///opt/elk/elasticsearch-head-master.zip
# ./plugin install file:///opt/elk/elasticsearch-kopf-master.zip
# ./plugin install file:///opt/elk/bigdesk-master.zip 

驗證: 

http://192.168.4.1:9200/_plugin/head


http://192.168.4.1:9200/_plugin/kopf


http://192.168.4.1:9200/_plugin/bigdesk 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

############################################

相關文章
相關標籤/搜索