NSD ARCHITECTURE DAY03
1 案例1:ES集群安裝
1.1 問題
本案例要求:
- 准備1台虛擬機
- 部署elasticsearch第一個節點
- 訪問9200端口查看是否安裝成功
1.2 方案
1)ELK是日志分析平台,不是一款軟件,而是一整套解決方案,是三個軟件產品的首字母縮寫,ELK分別代表:
Elasticsearch:負責日志檢索和儲存
Logstash:負責日志的收集和分析、處理
Kibana:負責日志的可視化
2) ELK組件在海量日志系統的運維中,可用於解決分布式日志數據集中式查詢和管理系統監控等,故障排查,安全信息和事件管理,報表功能
部署Elasticsearch分布式集群安裝,Kibana作為可視化平台,實時總結流量和數據的圖表,Logstash用來收集處理日志,如表-1所示:
表-1

1.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:先准備一台虛擬機
1)更改主機名,配置IP,搭建第三方yum源(之前已經搭建過幾次,這里不再贅述)
- [root@se1 ~]# echo se1 > /etc/hostname
- [root@se1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
- # Generated by dracut initrd
- DEVICE="eth0"
- ONBOOT="yes"
- IPV6INIT="no"
- IPV4_FAILURE_FATAL="no"
- NM_CONTROLLED="no"
- TYPE="Ethernet"
- BOOTPROTO="static"
- IPADDR=192.168.1.61
- PREFIX=24
- GATEWAY=192.168.1.254
- [root@se1 ~]# vim /etc/yum.repos.d/local.repo
- [local_repo]
- name=CentOS-$releasever - Base
- baseurl="ftp://192.168.1.254/system"
- enabled=1
- gpgcheck=1
- [elk]
- name=elk
- baseurl="ftp://192.168.1.254/elk"
- enabled=1
- gpgcheck=0
2)部署elasticsearch第一個節點
- [root@se1 ~]# vim /etc/hosts
- 192.168.1.61 se1
- 192.168.1.62 se2
- 192.168.1.63 se3
- 192.168.1.64 se4
- 192.168.1.65 se5
- [root@se1 ~]# yum -y install java-1.8.0-openjdk.x86_64
- [root@se1 ~]# java -version
- openjdk version "1.8.0_131"
- OpenJDK Runtime Environment (build 1.8.0_131-b12)
- OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
- [root@se1 ~]# sestatus //查看selinux狀態
- SELinux status: disabled
- [root@se1 ~]# yum -y install elasticsearch
- [root@se1 ~]# vim /etc/elasticsearch/elasticsearch.yml
- 17 cluster.name: myelk //配置集群名字
- 23 node.name: se1 //當前主機名稱
- 54 network.host: 0.0.0.0 // 0.0.0.0(監聽所有地址)
- 68 discovery.zen.ping.unicast.hosts: ["se1", "se2","se3"]
- //聲明集群里的主機成員有誰,不需要全部寫進去
- [root@se1 ~]# systemctl restart elasticsearch
- [root@se1 ~]# systemctl enable elasticsearch
- [root@se1 ~]# ss -antup | grep 9200
- tcp LISTEN 0 50 :::9200 :::* users:(("java",pid=23231,fd=110))
3)訪問9200端口查看是否安裝成功,如圖-1所示:

圖-1
2 案例2:ES集群安裝配置
2.1 問題
本案例要求:
- 一共安裝5台虛擬機
- 在所有機器中部署ES
- 啟動服務查看驗證集群狀態
2.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:安裝elasticsearch和java-1.8.0-openjdk,同步配置文件
備注:在步驟一已經安裝了一台elasticsearch,這里只需再准備四台即可
1)更改對應的主機名、 ip地址以及搭建yum源(以案例1為例子)
2)安裝elasticsearch四台主機同樣操作(以se2為例子)
- [root@se2 ~]# yum -y install java-1.8.0-openjdk.x86_64
- [root@se2 ~]# yum -y install elasticsearch
3)同步配置/etc/hosts和/etc/elasticsearch/elasticsearch.yml, 修改node.name字段(以se2為例子)
- [root@se1 ~]# for i in {62..65} ; do scp /etc/hosts 192.168.1.$i:/etc/hosts; done
- [root@se1 ~]# for i in {62..65} ; do scp \
- /etc/elasticsearch/elasticsearch.yml \
- 192.168.1.$i:/etc/elasticsearch/elasticsearch.yml; done
- [root@se2 ~]# vim /etc/elasticsearch/elasticsearch.yml
- node.name: se2 //另外三台修改為對應se3,se4,se5
- [root@se2 ~]# systemctl restart elasticsearch
- [root@se2 ~]# systemctl enable elasticsearch
4)訪問測試,如圖-2所示:
可以訪問61-65的任意一台主機, 集群的節點都是5台,若先啟動的是se4或se5,這兩個會自動成為各自的集群,解決辦法,先啟動集群里的se1或se2或se3其中的一台,或者把se4和se5重啟,se4和se5會自動加進去
ES 集群驗證:返回字段解析:
”status”: ”green“ 集群狀態:綠色為正常、黃色表示有問題但不是很嚴重、紅色表示嚴重故障
”number_of_nodes”: 5, 表示集群中節點的數量

圖-2
3 案例3:練習curl命令
3.1 問題
本案例要求:
- 練習使用curl命令
- 理解GET POST
- 使用curl命令訪問ES集群
3.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:curl命令的使用
http的請求方法:
常用方法 GET,POST,HEAD
其他方法 OPTIONS,PUT,DELETE,TRACE和CONNECT
ES常用:
PUT --增
DELETE --刪
POST --改
GET --查
系統命令curl:
是一個利用URL規則在命令行下工作的文件傳輸工具,可以說是一款很強大的http命令行工具。它支持多種請求模式,自定義請求頭等強大功能,是一款綜合工具
curl 常用參數介紹:
-A 修改請求 agent
-X 設置請求方法
-i 顯示返回頭信息
1)索引的分片信息,如圖-1所示:
- [root@room9pc01 ~]# curl -X GET http://192.168.1.61:9200/_cat

圖-1
2)顯示health的詳細信息,如圖-2所示:
- [root@room9pc01 ~]# curl -X GET http://192.168.1.62:9200/_cat/health?v

圖-2
3)查看nodes的幫助,如圖-3所示:
- [root@room9pc01 ~]# curl -X GET http://192.168.1.61:9200/_cat/nodes?help

圖-3
4 案例4:練習插件
4.1 問題
本案例要求:
- 在其中一台機器上部署插件
- 使用bigdesk查看集群狀態
- 使用head創建index
- 使用kopf查看數據
4.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:部署插件
插件裝在哪一台機器上,只能在哪台機器上使用(這里安裝在se5機器上面)
1)使用遠程 uri 路徑可以直接安裝
- [root@se5 ~]# cd /usr/share/elasticsearch/bin
- [root@se5 bin]# ./plugin install \
- ftp://192.168.1.254/elk/elasticsearch-head-master.zip //安裝head插件
- [root@se5 bin]# ./plugin install \
- ftp://192.168.1.254/elk/elasticsearch-kopf-master.zip //安裝kopf插件
- [root@se5 bin]# [root@se5 bin]# ./plugin install \
- ftp://192.168.1.254/elk/bigdesk-master.zip
- //安裝bigdesk插件
- [root@se5 bin]# ./plugin list //查看安裝的插件
- Installed plugins in /usr/share/elasticsearch/plugins:
- - head
- - kopf
- - bigdesk
2)訪問head插件,如圖-4所示:
- [root@room9pc01 ~]# firefox http://192.168.1.65:9200/_plugin/head

圖-4
3)訪問kopf插件,如圖-5所示:
- [root@room9pc01 ~]# http://192.168.1.65:9200/_plugin/kopf

圖-5
4)訪問bigdesk插件,如圖-6所示:
- [root@room9pc01 ~]# http://192.168.1.65:9200/_plugin/bigdesk

圖-6
步驟二:使用head創建index
- [root@se5 bin]# curl -X PUT "http://192.168.1.65:9200/index" -d '
- > {
- > "settings":{
- > "index":{
- > "number_of_shards":5, //分片數
- > "number_of_replicas":1 //副本數
- > }
- > }
- > }'
- {"acknowledged":true}
步驟三:使用kopf查看數據,如圖-7所示:

圖-7
5 案例5:插入,增加,刪除查詢數據
5.1 問題
本案例要求:
- 使用curl命令連接使用ES數據庫
- 使用PUT方法增加數據
- 使用POST修改數據
- 使用GET查詢數據
- 使用DELETE刪除數據
5.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:增加數據
- [root@se5 ~]# locale
- [root@se5 ~]# LANG=en_US.UTF-8 //設置編碼
- [root@se5 ~]# curl -X PUT "http://192.168.1.65:9200/taindex/teacher/1" -d '{
- "職業":"詩人",
- "名字":"李白",
- "稱號":"詩仙",
- "年代":"唐"
- }'
- {"_index":"taindex","_type":"teacher","_id":"1","_version":2,"_shards":{"total":2,"successful":2,"failed":0},"created":false}
步驟二:修改數據
- [root@se5 ~]# curl -X PUT "http://192.168.1.65:9200/taindex/teacher/1" -d '{
- "doc":{
- "年代": "唐代"
- }
- }'
- {"_index":"taindex","_type":"teacher","_id":"1","_version":3,"_shards":{"total":2,"successful":2,"failed":0},"created":false}
步驟三:查詢數據
- [root@se5 ~]# curl -X GET "http://192.168.1.65:9200/taindex/teacher/3?pretty"
- {
- "_index" : "taindex",
- "_type" : "teacher",
- "_id" : "3",
- "found" : false
- }
步驟四:刪除數據
- [root@se5 ~]# curl -X DELETE "http://192.168.1.65:9200/taindex/teacher/3?pretty"
- {
- "found" : false,
- "_index" : "taindex",
- "_type" : "teacher",
- "_id" : "3",
- "_version" : 1,
- "_shards" : {
- "total" : 2,
- "successful" : 2,
- "failed" : 0
- }
- }
步驟五:刪除索引
- [root@se5 bin]# curl -X DELETE http://192.168.1.65:9200/taindex/
- //刪除索引
- {"acknowledged":true}
- [root@se5 bin]# curl -X DELETE http://192.168.1.65:9200/* //刪除所有索引
- {"acknowledged":true}
6 案例6:安裝Kibana
6.1 問題
本案例要求:
- 安裝Kibana
- 配置啟動服務查看5601端口是否正常
- 通過web頁面訪問Kibana
6.2 步驟
實現此案例需要按照如下步驟進行
步驟一:安裝kibana
1)在另一台主機,配置ip為192.168.1.66,配置yum源,更改主機名
2)安裝kibana
- [root@kibana ~]# yum -y install kibana
- [root@kibana ~]# rpm -qc kibana
- /opt/kibana/config/kibana.yml
- [root@kibana ~]# vim /opt/kibana/config/kibana.yml
- 2 server.port: 5601
- //若把端口改為80,可以成功啟動kibana,但ss時沒有端口,沒有監聽80端口,服務里面寫死了,不能用80端口,只能是5601這個端口
- 5 server.host: "0.0.0.0" //服務器監聽地址
- 15 elasticsearch.url: http://192.168.1.61:9200
- //聲明地址,從哪里查,集群里面隨便選一個
- 23 kibana.index: ".kibana" //kibana自己創建的索引
- 26 kibana.defaultAppId: "discover" //打開kibana頁面時,默認打開的頁面discover
- 53 elasticsearch.pingTimeout: 1500 //ping檢測超時時間
- 57 elasticsearch.requestTimeout: 30000 //請求超時
- 64 elasticsearch.startupTimeout: 5000 //啟動超時
- [root@kibana ~]# systemctl restart kibana
- [root@kibana ~]# systemctl enable kibana
- Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /usr/lib/systemd/system/kibana.service.
- [root@kibana ~]# ss -antup | grep 5601 //查看監聽端口
3)瀏覽器訪問kibana,如圖-8所示:
- [root@kibana ~]# firefox 192.168.1.66:5601

圖-8
4)點擊Status,查看是否安裝成功,全部是綠色的對鈎,說明安裝成功,如圖-9所示:


圖-9
5)用head插件訪問會有.kibana的索引信息,如圖-10所示:
- [root@se5 ~]# firefox http://192.168.1.65:9200/_plugin/head/

圖-10