ElasticSearch 7.7 + Kibana的部署

    ElasticSearch目前最新版是7.7.0,其中部署的細節和以前的6.x有不少的不一樣,因此這裏單獨拉出來寫一下,但願對用7.x的童鞋有一些幫助,而後部署完ES後配套的kibana也是7.7.0,這個就簡單了放到最後說,下面先進入ES 7.7.0的部署. node

    首先是下載es的安裝包,官網下載便可,我這裏的包是:elasticsearch-7.7.0-linux-x86_64.tar.gz,準備安裝位置:/opt/elasticsearch,其實每一個節點操做都是同樣的,我這裏再也不詳細敘述每一個機器的細節,而只是寫通用的配置,第一步就是解壓包到指定的位置:linux

tar -xvzf elasticsearch-7.7.0-linux-x86_64.tar.gz -C /opt
cd /opt
ln -s elasticsearch-7.7.0 elasticsearch
cd elasticsearch

    上面作個軟連接就是爲了管理多個版本方便,老的版本不用刪除,每次進目錄直接cd到/opt/elasticsearch就能夠了,這個根據本身的習慣來就能夠git

    進入目錄後首先仍是修改ES的主配置文件:config/elasticsearch.yml,依次來看下面的配置項:github

    cluster.name這個和以前同樣配置集羣名稱,我這裏配置爲:cluster.name: es-clustershell

    node.name 配置節點的名稱,通常和主機名同樣,或者本身定義一個集羣中惟一的標識,我這和主機名不一樣,第一個節點配置爲:node.name: cloud-1,後面的節點以此類推就是cloud-2,cloud-3等等bootstrap

    path.data 索引和數據存儲目錄,支持配置多個,通常狀況下是1個,我這裏配置爲:path.data: /data/elasticsearchcentos

    path.logs 日誌存儲目錄,我這裏默認註釋,讓日誌打在/opt/elasticsearch/logs下面,默認解壓出來就有這個logs目錄瀏覽器

    bootstrap.memory_lock 是否鎖定內存,默認是註釋的,這裏建議打開,讓es鎖定jvm heap不被搶佔,我這裏配置是:bootstrap.memory_lock: true,可是這裏還要開啓另外的容許鎖定內存的內核參數,這個待會再說明安全

    network.host 配置es綁定主機的ip地址,能夠設置爲當前實際的ip,若是有多個網卡都想綁定的話,能夠設置爲:0.0.0.0,這樣每一個機器都同樣便可,network.host: 0.0.0.0app

    http.port 配置http的端口號,默認9200,若是不修改能夠不打開

    transport.port 配置tcp的端口號,默認是9300,這個配置項不存在,若是修改須要本身添加,這個在es 6.x中配置項爲:transport.tcp.port注意這個變化

    discovery.seed_hosts  這個配置集羣中的主機列表,以便可以在es啓動的時候進行通訊,而且爲主機發現提供種子,這個通訊使用的端口爲tcp端口也就是transport.port配置的端口,默認的話能夠不加端口,能夠配置多個ip地址或者主機名均可以,若是有多個網卡這裏要配置帶寬高的,以便在集羣中實現更快速的通訊,官網給出的配置示例以下:

    

    這個參數在6.x中的配置爲:discovery.zen.ping.unicast.hosts,將來會被廢棄,要使用這個新的名稱,可是含義是同樣的

    cluster.initial_master_nodes  這個配置啓動全新的集羣時,那些節點能夠做爲master節點進行選票,其實默認不配置es也能夠自動選舉,可是這樣是不安全的,因此須要配置一部分能夠做爲master節點的機器,以前的node.master其實能夠不用配置了,另外防止腦裂的節點個數配置也去掉了,要注意:這裏配置的不是主機名和ip,而是節點名稱,是前面node.name中配置的名稱,務必注意. 

    

    簡單地配置就是以上這些,具體還有不少配置須要根據須要參考文檔,下面將剛纔的配置整理以下:

cluster.name: es-cluster
node.name: cloud-1
path.data: /data/elasticsearch
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["cloud1", "cloud2", "cloud3", "cloud4", "cloud5", "cloud6"]
cluster.initial_master_nodes: ["cloud-1", "cloud-2", "cloud-3"]

    而後保存並退出,其實每一個機器不一樣的地方只有node.name須要修改,若是network.host配置0.0.0.0則每一個機器都不用改

    而後配置jvm heap大小,配置文件:config/jvm.options

    

     注意這裏不要超過jvm長指針臨界空間的大小,最大不超過32G,可是實際上根據不一樣機器有所變化,正常最大配置26G是安全的,在啓動的時候日誌中會有輸出:

    

     只要上面顯示true則表示啓用了壓縮指針,對於實際的機器能夠反覆的修改調試找到一個合理的臨界值. 

    修改完jvm配置後es就算基本配置完畢了,接下來就是要把整個安裝目錄發送到各個其餘的節點並修改對應的node.name配置,

    而後全部機器都要按照下面的操做配置內核參數:

    1. 最大文件數

    es要求文件數最小爲65536,查看當前文件數命令爲: ulimit -n ,調大文件數能夠修改配置文件:/etc/security/limits.conf,添加以下配置:

* soft nofile 666666
* hard nofile 999999

    保存配置後,從新登陸shell便可生效,能夠再次經過上面的命令確認一下

    2. 內核參數max_map_count

    es要求max_map_count虛擬內存區域數量至少爲262144,而默認操做系統的值都爲:65536,所以也須要設置一下不然會報錯,臨時設置命令以下:

sysctl vm.max_map_count=2560000

    這樣設置重啓機器參數值會還原因此還須要編輯/etc/sysctl.conf添加配置 vm.max_map_count=2560000 而且保存便可永久生效

    3. 容許鎖定內存

    剛纔配置文件設置了bootstrap.memory_lock爲true,可是默認操做系統不容許用戶程序鎖定內存,所以還須要配置解除限制,配置文件一樣是/etc/security/limits.conf,須要在其中添加:

elastic soft memlock unlimited
elastic hard memlock unlimited

    第一列elastic是es的用戶,這個待會會建立,要保證和這裏的一致,unlimited表示不限制鎖定內存的大小,保存配置待會切換到elastic用戶便可自動生效

    4. 配置內存交換傾向

    若是沒有交換分區則能夠忽略這個配置,若是有交換分區的話並不建議徹底禁用,由於在系統內存佔用很是大的時候能夠經過臨時交換到磁盤而避免系統崩潰,可是能夠經過調整交換傾向讓系統儘量的少使用交換分區,這個參數經過vm.swappiness進行配置在redhat/centos 7.x中這個值默認爲60,比較大建議設置爲1~10,臨時修改一樣使用: sysctl vm.swappiness=1 ,永久修改一樣是改配置文件,這個參數在redhat/centos 8.x默認會根據機器配置調整,有可能已經就是10了,因此只須要看一下,有可能不用修改. 

    注意上面4個參數在每一個節點都要配置,配置完參數下面須要在每一個節點建立數據目錄和用戶並受權:

# 建立數據目錄
mkdir /data/elasticsearch
# 建立用戶
useradd elastic
# 設置密碼 根據提示輸入兩次
passwd elastic
# 進入es安裝目錄修改權限
chown -R elastic:elastic jdk config logs  /data/elasticsearch

    值得注意的是7.7版本的es安裝包中已經有jdk環境了用的是AdoptOpenJDK,版本爲最新的14,也就是說機器無需安裝jdk環境就可使用es,上面四個目錄是必需要受權的,jdk目錄若是不受權啓動es的時候會提示沒法執行文件也就是沒有權限,爲了方便也能夠直接給整個目錄加上權限. 

    最後就是在每一個節點啓動es了,

su - elastic
cd /opt/elasticsearch
bin/elasticsearch -d

    啓動以後jps肯定進程Elasticsearch正常存在,全部節點都啓動後經過 curl 'localhost:9200/_cat/nodes?v' 確認當前的節點列表是否正常

    如今es集羣就部署完畢了,接下來能夠部署一下es經常使用的管理界面kibana,這個基本部署特別簡單,首先仍是下載最新的7.7.0安裝包而後解壓:

tar -xvzf kibana-7.7.0-linux-x86_64.tar.gz
mv kibana-7.7.0-linux-x86_64 /opt/kibana-7.7.0
cd /opt/kibana-7.7.0

    而後編輯配置文件,這裏簡單介紹一下基本的配置:

    server.port kibana服務的端口號,默認是5601

    server.host  kibana綁定的ip,這裏能夠寫實際的ip也能夠寫0.0.0.0綁定全部的網卡

    server.name  kibana的名稱,這個用於界面顯示,自定義便可

    elasticsearch.hosts  須要鏈接的es集羣主機列表,這個最好填寫完整的集羣節點,每一個節點內容是:http://host:port

    kibana.index  kibana進行相關的界面顯示須要將一些數據存放到es中,這個爲es中建立索引名的前綴,默認爲:.kibana

    kibana.defaultAppId  默認的應用程序,默認是:home

    基本的配置就是上面這些,另外還有更多詳細的參數配置,好比ES集羣鏈接的超時參數等等,這些詳細的配置須要參考文檔調整,目前只是一個簡單地配置和使用,上面配置整理以下:

server.port: 5601
server.host: "0.0.0.0"
server.name: "cloud1"
elasticsearch.hosts: ["http://cloud1:9200", "http://cloud2:9200","http://cloud3:9200", "http://cloud4:9200", "http://cloud5:9200", "http://cloud6:9200"]
kibana.index: ".kibana"
kibana.defaultAppId: "home"

    配置保存以後就能夠啓動kibana服務了,須要注意kibana也須要用特定的用戶啓動,若是用root用戶直接啓動會給出提示,能夠添加--allow-root強制啓動,啓動命令爲: bin/kibana --allow-root ,啓動以後可能會有幾個警告,能夠先不用關心,等啓動完畢能夠經過瀏覽器輸入http://ip:5601進入kibana的界面,具體界面的使用這裏就再也不詳細的敘述了

    上面就是ElasticSearch+kibana組合的簡單部署,若是以爲kibana過重量也能夠嘗試一下cerebro這個輕量的es管理工具,github連接爲:https://github.com/lmenezes/cerebro,另外有關於ES的其餘問題歡迎一塊兒交流. 

相關文章
相關標籤/搜索