在上一篇中我們已經掌握了在單台ES情況下的日志收集以及展示的部署(ELK)
並且在部署的過程中,你發現了在elastcisearch-head插件的展示界面,es分配的副本的狀態一直是灰色的:

這是由於每個索引都會默認分配5個主分片,日志數據分別存儲在不同的分片上,實現分布式存儲,達到分片查詢,分片的數量只能在索引創建前指定,且創建之后不能修改~
同時每個分片又會分配一個索引副本,副本的作用是提高容錯率,當某個節點的某個分片損壞或丟失時,可以從副本中恢復,同樣也能提高es查詢的效率,es會自動對搜索請求進行負載均衡!
因此,單台的es的副分片是沒法分配到其他節點中去的,而且,在一台es中,不存在主分片和副分片同時開啟的狀態,所以在界面中顯示副分片是沒有開啟狀態!那么何如解決這個問題呢?就是創建ES集群,真正實現分布式存儲,實現高可用!
創建ES集群:
環境:
192.168.75.64(先)(工作節點)
192.168.75.63(后) (主節點)
之前已經部署過在一台機器上安裝elasticsearch,那么這里我們再在另一台192.168.75.63上部署一個elasticsearch
1:確定java版本,不夠1.8的話要升級
2:rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
3:創建elasticsearch的yum源
4:修改配置文件,這里需要重點講下,因為集群配置跟單台是不一樣的:
cluster.name: test-elk #這里的集群名稱,要跟之前不是的那台elasticsearch配置的集群名稱一樣!
node.name: elk-2 #節點名稱,之前是elk-1,這里是-2
node.master: true
node.data: true # 指定了該節點可能成為 master 節點,還可以是數據節點
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.75.63", "192.168.75.64"] #這里是集群節點的IP,有幾個節點就寫幾個!
http.cors.enabled: true
http.cors.allow-origin: "*"
5:創建data目錄,不要忘記給elasticsearch的所屬組和所有者權限!
6:修改系統的幾個配置參數,這里就不再闡述了!
7:開啟服務~
看日志是沒問題的!
同時,也對之前75.64那台的elastsearch做了對應的配置修改:
配置也跟上面一樣,只是節點名稱不同。
重啟,看日志也是OK的!!
那么我們去elasticsearch-head界面看下:

刷新之后,哈哈哈哈很棒哦!
集群的兩個節點都安排上了!並且沒有down掉的機器分片,這樣看起來舒服多了!
下面整理下ES集群的相關操作指令:
elasticsearch直接監聽了http端口,所以可以直接用curl去查看集群的一些信息:
_cat:代表查看信息
nodes:表示查看節點信息,默認會顯示一行,所以要用?pretty讓顯示更友好
[root@VM-75-64 elasticsearch]# curl -EXGT http://192.168.75.64:9200/_cat/nodes?pretty
192.168.75.63 42 92 0 0.00 0.00 0.00 mdi * elk-2
192.168.75.64 41 99 0 0.00 0.00 0.00 mdi - elk-1
這里就顯示了集群的節點情況,其中“*”表示是主節點!
[root@VM-75-64 elasticsearch]# curl -XGET 'http://192.168.75.64:9200/_cat?pretty'
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
這里是個友好提示,表示你所能查看的所有信息以及指令,是不是很棒!!!
因為ES保存日志是永久保存,所以需要定期刪除一下日志,下面命令為刪除指定時間前的日志
curl -X DELETE http://xx.xx.com:9200/logstash-*-`date +%Y-%m-%d -d "-$n days"`
以上,共勉!