elasticsearch+ kibana+ logstash+ filebeat構建高可用分佈式日誌集羣系統(一):elasticsearch集羣的安裝

elk 提供了完備且成熟的日誌存儲和分析的解決方案,本文主要介紹 elasticsearch 集羣的環境搭建

安裝準備工作

準備3臺機器,這樣才能完成分佈式集羣的實驗,當然能有更多機器更好:

  • 192.168.77.120
  • 192.168.77.130
  • 192.168.77.140

角色劃分:

  • 3臺機器全部安裝jdk1.8,因爲elasticsearch是java開發的
  • 3臺全部安裝elasticsearch (後續都簡稱爲es)
  • 192.168.77.120作爲主節點
  • 192.168.77.130作爲從備節點
  • 192.168.77.140作爲數據節點

elasticsearch 

elasticsearch 可以理解爲一個支持模糊查詢的數據庫,用來存儲日誌

下載 elasticsearch(120/130/140節點操作)

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz

解壓至安裝目錄(120/130/140節點操作)

tar -zxvf elasticsearch-7.1.0-linux-x86_64.tar.gz -C /usr/local

cd /usr/local

重命名安裝目錄(120/130/140節點操作)

mv elasticsearch-7.1.0 elasticsearch

創建數據存放路徑(120/130/140節點操作)

mkdir /opt/ELK/elasticsearch

創建日誌存放路徑(120/130/140節點操作)

mkdir /opt/ELK/elasticsearch/logs

建立用戶並授權(es不能用root運行)(120/130/140節點操作)

useradd elasticsearch
#賦予文件夾權限
chown -R elasticsearch.elasticsearch /usr/local/elasticsearch

修改elasticsearch配置文件(120/130/140節點操作)

vim /usr/local/elasticsearch/config/elasticsearch.yml

192.168.77.120 主節點

#集羣的名稱
cluster.name: es_cluster
#節點名稱
node.name: master
#指定該節點是否有資格被選舉成爲master節點,默認是true,es是默認集羣中的第一臺機器爲master,如果這臺機掛了就會重新選舉master
node.master: true
#允許該節點存儲數據(默認開啓)
node.data: true
#索引數據的存儲路徑
path.data: /opt/ELk/elasticsearch
#日誌文件的存儲路徑
path.logs: /opt/ELk/elasticsearch/logs
#綁定的ip地址
network.host: 0.0.0.0
#設置對外服務的http端口,默認爲9200
http.port: 9200
#是否支持跨域,默認爲false
http.cors.enabled: true
#當設置允許跨域,默認爲*,表示支持所有域名,如果我們只是允許某些網站能訪問,那麼可以使用正則表達式。比如只允許本地地址。
http.cors.allow-origin: "*"
#發現集羣,Elasticsearch將綁定到可用的環回地址,並將掃描端口9300到9305以嘗試連接到運行在同一臺服務器上的其他節點。
#這提供了自動集羣體驗,而無需進行任何配置。數組設置或逗號分隔的設置。每個值的形式應該是host:port或host
discovery.seed_hosts: ["192.168.77.120","192.168.77.130"]

192.168.77.130從節點

#集羣的名稱
cluster.name: es_cluster
#節點名稱
node.name: slave1
#指定該節點是否有資格被選舉成爲master節點,默認是true,es是默認集羣中的第一臺機器爲master,如果這臺機掛了就會重新選舉master
node.master: true
#允許該節點存儲數據(默認開啓)
node.data: true
#該節點機器最大運行實例
node.max_local_storage_nodes: 1
#索引數據的存儲路徑
path.data: /opt/ELk/elasticsearch
#日誌文件的存儲路徑
path.logs: /opt/ELk/elasticsearch/logs
#綁定的ip地址
network.host: 0.0.0.0
#設置對外服務的http端口,默認爲9200
http.port: 9200
#是否支持跨域,默認爲false
http.cors.enabled: true
#當設置允許跨域,默認爲*,表示支持所有域名,如果我們只是允許某些網站能訪問,那麼可以使用正則表達式。比如只允許本地地址。
http.cors.allow-origin: "*"
#發現集羣,Elasticsearch將綁定到可用的環回地址,並將掃描端口9300到9305以嘗試連接到運行在同一臺服務器上的其他節點。
#這提供了自動集羣體驗,而無需進行任何配置。數組設置或逗號分隔的設置。每個值的形式應該是host:port或host
discovery.seed_hosts: ["192.168.77.120","192.168.77.130"]

192.168.77.140數據節點

#集羣的名稱
cluster.name: es_cluster
#節點名稱
node.name: slave2
#指定該節點是否有資格被選舉成爲master節點,默認是true,es是默認集羣中的第一臺機器爲master,如果這臺機掛了就會重新選舉master
node.master: false
#允許該節點存儲數據(默認開啓)
node.data: true
#該節點機器最大運行實例
node.max_local_storage_nodes: 1
#索引數據的存儲路徑
path.data: /opt/ELk/elasticsearch
#日誌文件的存儲路徑
path.logs: /opt/ELk/elasticsearch/logs
#綁定的ip地址
network.host: 0.0.0.0
#設置對外服務的http端口,默認爲9200
http.port: 9200
#是否支持跨域,默認爲false
http.cors.enabled: true
#當設置允許跨域,默認爲*,表示支持所有域名,如果我們只是允許某些網站能訪問,那麼可以使用正則表達式。比如只允許本地地址。
http.cors.allow-origin: "*"
#發現集羣,Elasticsearch將綁定到可用的環回地址,並將掃描端口9300到9305以嘗試連接到運行在同一臺服務器上的其他節點。
#這提供了自動集羣體驗,而無需進行任何配置。數組設置或逗號分隔的設置。每個值的形式應該是host:port或host
discovery.seed_hosts: ["192.168.77.120","192.168.77.130","192.168.77.140"]

調整三個節點jvm內存(120/130/140節點操作)

根據官方文檔相關建議需要對jvm進行一些修改,不然很容易出現OOM,參考官網改參數配置最好不要超過內存的50% 
我在這裏做了如下更改 將-Xmx1g改成-Xmx20g 將-Xms1g改成-Xms20g

vim /usr/local/elasticsearch/config/jvm.options 
#默認是1g官方建議對jvm進行一些修改,不然很容易出現OOM,參考官網改參數配置最好不要超過內存的50% 
-Xms20g
-Xmx20g

更改三個系統配置文件 (120/130/140節點操作)

  • 修改一
vi /etc/security/limits.conf

  增加內容

* soft nofile 65536


* hard nofile 131072


* soft nproc 2048


* hard nproc 4096

官方建議鎖住swapping(因爲內存交換到磁盤對服務器性能來說是致命的,當然你可以根據自己的需求去選擇),我選擇鎖住swapping因此需要在這個配置文件下再增加兩行代碼

elk soft memlock unlimited
elk hard memlock unlimited
  • 修改二
vi /etc/sysctl.conf

  增加內容

vm.max_map_count=262144 

之後需要執行一句命令使系統配置生效

sysctl -p 

注:不能在root下啓動需要切換到添加的用戶下啓動elasticsearch服務

nohup ./usr/local/elasticsearch &

 

 

 

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