本文主要介紹的是ElasticSearch集羣和kinaba的安裝教程。html
ElasticSearch是一個基於Lucene的搜索服務器,其實就是對Lucene進行封裝,提供了 REST API 的操做接口. ElasticSearch做爲一個高度可拓展的開源全文搜索和分析引擎,可用於快速地對大數據進行存儲,搜索和分析。 ElasticSearch主要特色:分佈式、高可用、異步寫入、多API、面向文檔 。 ElasticSearch核心概念:近實時,集羣,節點(保存數據),索引,分片(將索引分片),副本(分片可設置多個副本) 。它能夠快速地儲存、搜索和分析海量數據。 ElasticSearch使用案例:維基百科、Stack Overflow、Github 等等。java
ElasticSearch集羣安裝依賴JDK,本文的ElasticSearch版本爲6.5.4,對應的Kibana也是6.5.4,這裏順便說下Kibana的版本最好不要低於ElasticSearch的版本,JDK的版本爲1.8。node
下載地址:linux
ElasticSearch-6.5.4: artifacts.elastic.co/downloads/e…bootstrap
Kibana-6.5.4: artifacts.elastic.co/downloads/k…vim
JDK1.8 : www.oracle.com/technetwork…瀏覽器
ElasticSearch有幾個重要的節點屬性,主節點、數據節點、查詢節點、攝取節點,其中主節點、數據節點最重要的,所以本文就只主要介紹這兩個節點的安裝,剩下的節點屬性在配置文件那塊進行說明。服務器
ElasticSearch集羣安裝表格: 網絡
在安裝ElasticSearch以前,咱們須要對Linux的環境作一些調整,防止在後續過程當中出現一些問題!oracle
修改sysctl.conf文件
vim /etc/sysctl.conf
複製代碼
在末尾增長以下配置:
vm.max_map_count = 655360
vm.swappiness=1
複製代碼
而後保存退出,輸入如下命令使其生效
sysctl -p
複製代碼
保存退出,輸入如下命令執行使其生效
sysctl -p
複製代碼
使用命令查看:
tail -3 /etc/sysctl.conf
複製代碼
修改90-nproc.conf文件
vim /etc/security/limits.d/90-nproc.conf
複製代碼
注:不一樣的linux服務器90-nproc.conf可能文件名不同,建議先在/etc/security/limits.d/查看文件名確認以後再來進行更改。
將下述的內容
soft nproc 2048
複製代碼
修改成
soft nproc 4096
複製代碼
使用命令查看:
tail -3 /etc/security/limits.d/90-nproc.conf
複製代碼
修改limits.conf
vim /etc/security/limits.conf
複製代碼
在末尾添加以下內容:
hard nofile 65536
soft nofile 65536
複製代碼
說明:其實能夠不關閉防火牆,進行權限設置,可是爲了方便訪問,因而便關閉了防火牆。每一個機器都作!!!
關閉防火牆的命令 CentOS 6 查詢防火牆狀態: [root@localhost ~]# service iptables status 中止防火牆: [root@localhost ~]# service iptables stop 啓動防火牆: [root@localhost ~]# service iptables start 重啓防火牆: [root@localhost ~]# service iptables restart 永久關閉防火牆: [root@localhost ~]# chkconfig iptables off 永久關閉後啓用: [root@localhost ~]# chkconfig iptables on
CentOS 7 關閉防火牆 systemctl stop firewalld.service
解壓下載下來的JDK tar -xvf jdk-8u144-linux-x64.tar.gz 移動到opt/java文件夾中,沒有就新建,而後將文件夾重命名爲jdk1.8
mv jdk1.8.0_144 /opt/java
mv jdk1.8.0_144 jdk1.8
複製代碼
首先輸入 java -version 查看是否安裝了JDK,若是安裝了,但版本不適合的話,就卸載
rpm -qa | grep java
複製代碼
查看信息
而後輸入:
rpm -e --nodeps 「你要卸載JDK的信息」
如: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
複製代碼
確認沒有了以後,解壓下載下來的JDK
tar -xvf jdk-8u144-linux-x64.tar.gz
複製代碼
移動到opt/java文件夾中,沒有就新建,而後將文件夾重命名爲jdk1.8。
mv jdk1.8.0_144 /opt/java
mv jdk1.8.0_144 jdk1.8
複製代碼
而後編輯 profile 文件,添加以下配置 輸入: vim /etc/profile
export JAVA_HOME=/opt/java/jdk1.8
export JRE_HOME=/opt/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
複製代碼
添加成功以後,輸入:
source /etc/profile
複製代碼
使配置生效,而後查看版本信息輸入:
java -version
複製代碼
將下載好的elasticsearch文件解壓
輸入:
tar -xvf elasticsearch-6.5.4.tar.gz
複製代碼
而後移動到/opt/elk文件夾 裏面,沒有該文件夾則建立,而後將文件夾重命名爲masternode.
在/opt/elk輸入:
mv elasticsearch-6.5.4 /opt/elk
mv elasticsearch-6.5.4 masternode
複製代碼
由於elasticsearch須要在非root的用戶下面操做,而且elasticsearch的文件夾的權限也爲非root權限, 所以咱們須要建立一個用戶進行操做,咱們建立一個elastic用戶,並賦予該目錄的權限。 命令以下:
adduser elastic
chown -R elastic:elastic /opt/elk/masternode
複製代碼
這裏咱們順便再來指定ElasticSearch數據和日誌存放的路徑地址,咱們能夠先使用df -h命令查看當前系統的盤主要的磁盤在哪,而後在確認數據和日誌存放的路徑,若是在/home 目錄下的話,咱們就在home目錄下建立ElasticSearch數據和日誌的文件夾,這裏爲了區分嗎,咱們能夠根據不一樣的節點建立不一樣的文件夾。這裏的文件夾建立用咱們剛剛建立好的用戶去建立,切換到elastic用戶,而後建立文件夾。
su elastic
mkdir /home/elk
mkdir /home/elk/masternode
mkdir /home/elk/masternode/data
mkdir /home/elk/masternode/logs
mkdir /home/elk/datanode1
mkdir /home/elk/datanode1/data
mkdir /home/elk/datanode1/logs
複製代碼
建立成功以後,咱們先修改masternode節點的配置,修改完成以後在同級目錄進行copy一下,名稱爲datanode1,而後只需少量更改datanode節點的配置便可。這裏咱們要修改elasticsearch.yml和jvm.options文件便可! 注意這裏仍是elastic用戶!
cd /opt/elk/
vim masternode/config/elasticsearch.yml
vim masternode/config/jvm.options
複製代碼
masternode的elasticsearch.yml文件配置以下:
cluster.name: pancm
node.name: master
path.data: /home/elk/masternode/data
path.logs: /home/elk/masternode/logs
network.host: 0.0.0.0
network.publish_host: 192.169.0.23
transport.tcp.port: 9301
http.port: 9201
discovery.zen.ping.unicast.hosts: ["192.169.0.23:9301","192.169.0.24:9301","192.169.0.25:9301"]
node.master: true
node.data: false
node.ingest: false
index.number_of_shards: 5
index.number_of_replicas: 1
discovery.zen.minimum_master_nodes: 1
bootstrap.memory_lock: true
http.max_content_length: 1024mb
複製代碼
elasticsearch.yml文件參數配置說明:
cluster.name: 集羣名稱,同一集羣的節點配置應該一致。es會自動發如今同一網段下的es,若是在同一網段下有多個集羣,就能夠用這個屬性來區分不一樣的集羣。
node.name: 該節點的名稱。 path.data: 數據存放的路徑。 path.logs: 日誌存放的路徑。
network.host: 設置ip地址,能夠是ipv4或ipv6的,默認爲0.0.0.0。
network.publish_host: 設置其它節點和該節點交互的ip地址,若是不設置它會自動判斷,值必須是個真實的ip地址。
transport.tcp.port:設置節點間交互的tcp端口,默認是9300。
http.port:設置對外服務的http端口,默認爲9200。
discovery.zen.ping.unicast.hosts: 設置集羣中master節點的初始列表,能夠經過這些節點來自動發現新加入集羣的節點。
node.master: 指定該節點是否有資格被選舉成爲node,默認是true。 node.data: 指定該節點是否存儲索引數據,默認爲true。
node.ingest: 指定該節點是否使用管道,默認爲true。
index.number_of_shards:設置默認索引分片個數,默認爲5片。
index.number_of_replicas:設置默認索引副本個數,默認爲1個副本。
discovery.zen.minimum_master_nodes: 設置這個參數來保證集羣中的節點能夠知道其它N個有master資格的節點。默認爲1,對於大的集羣來講,能夠設置大一點的值(2-4)。
bootstrap.memory_lock: 設置爲true來鎖住內存。由於當jvm開始swapping時es的效率會下降,因此要保證它不swap,能夠把ES_MIN_MEM和ES_MAX_MEM兩個環境變量設置成同一個值,而且保證機器有足夠的內存分配給es。同時也要容許elasticsearch的進程能夠鎖住內存,Linux下能夠經過ulimit -l unlimited
命令。 http.max_content_length: 設置內容的最大容量,默認100mb。 -...
這裏在順便說下ElasticSearch節點的屬性。
node.master: true 而且 node.data: true
這種組合表示這個節點即有成爲主節點的資格,又存儲數據。
若是某個節點被選舉成爲了真正的主節點,那麼他還要存儲數據,這樣對於這個節點的壓力就比較大了。ElasticSearch默認每一個節點都是這樣的配置,在測試環境下這樣作沒問題。實際工做中建議不要這樣設置,由於這樣至關於主節點和數據節點的角色混合到一塊了。
node.master: false 而且 node.data: true
這種組合表示這個節點沒有成爲主節點的資格,也就不參與選舉,只會存儲數據。 這個節點咱們稱爲data(數據)節點。在集羣中須要單獨設置幾個這樣的節點負責存儲數據,後期提供存儲和查詢服務。
node.master: true 而且 node.data: false
這種組合表示這個節點不會存儲數據,有成爲主節點的資格,能夠參與選舉,有可能成爲真正的主節點,這個節點咱們稱爲master節點。
node.master: false node.data: false
這種組合表示這個節點即不會成爲主節點,也不會存儲數據,這個節點的意義是做爲一個client(客戶端)節點,主要是針對海量請求的時候能夠進行負載均衡。
node.ingest: true 執行預處理管道,不負責數據和集羣相關的事物。 它在索引以前預處理文檔,攔截文檔的bulk和index請求,而後加以轉換。 將文檔傳回給bulk和index API,用戶能夠定義一個管道,指定一系列的預處理器。
elasticsearch.yml文件配置示例圖
將jvm.options配置Xms和Xmx改爲2G,配置以下:
-Xms2g
-Xmx2g
複製代碼
關於ElasticSearch更多配置能夠參考ElasticSearch官方文檔!
在配置完masternode節點的ElasticSearch以後,咱們再來配置datanode節點的,咱們將masternode節點copy一份並重命名爲datanode1,而後根據上述示例圖中紅色框出來簡單更改一下便可。 命令以下:
cd /opt/elk/
cp -r masternode/ datanode1
vim datanode1/config/elasticsearch.yml
vim datanode1/config/jvm.options
複製代碼
datanode的elasticsearch.yml文件配置以下:
cluster.name: pancm
node.name: data1
path.data: /home/elk/datanode/data
path.logs: /home/elk/datanode/logs
network.host: 0.0.0.0
network.publish_host: 192.169.0.23
transport.tcp.port: 9300
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.169.0.23:9301","192.169.0.24:9301","192.169.0.25:9301"]
node.master: false
node.data: true
node.ingest: false
index.number_of_shards: 5
index.number_of_replicas: 1
discovery.zen.minimum_master_nodes: 1
bootstrap.memory_lock: true
http.max_content_length: 1024mb
複製代碼
將jvm.options配置Xms和Xmx改爲8G,配置以下:
-Xms8g
-Xmx8g
複製代碼
注:配置完成以後須要使用ll命令檢查一下masternode和datanode1權限是否屬於elastic用戶的,若不屬於,可使用chown -R elastic:elastic +路徑 命令進行賦予權限。
上述配置完成以後,可使用相同的方法在其餘的機器在操做一次,或者使用ftp工具進行傳輸,又或者使用scp命令進行遠程傳輸文件而後根據不一樣的機器進行不一樣的修改。 scp命令示例:
jdk環境傳輸:
scp -r /opt/java root@slave1:/opt
scp -r /opt/java root@slave2:/opt
複製代碼
ElasticSearch環境傳輸:
scp -r /opt/elk root@slave1:/opt
scp -r /home/elk root@slave1:/opt
scp -r /opt/elk root@slave2:/opt
scp -r /home/elk root@slave2:/opt
複製代碼
這裏仍是須要使用elastic用戶來進行啓動,每臺機器的每一個節點都須要進行操做! 在/opt/elk的目錄下輸入:
su elastic
cd /opt/elk
./masternode/bin/elasticsearch -d
./datanode1/bin/elasticsearch -d
複製代碼
啓動成功以後,能夠輸入jps命令進行查看或者在瀏覽器上輸入 ip+9200或ip+9201進行查看。 出現如下界面表示成功!
kinaba安裝只須要在一臺機器上部署便可,直接經過root用戶進行操做,須要注意的是kinaba須要和ElasticSearch服務器網絡ping通便可。
將下載下來的kibana-6.5.4-linux-x86_64.tar.gz的配置文件進行解壓 在linux上輸入:
tar -xvf kibana-6.5.4-linux-x86_64.tar.gz
複製代碼
而後移動到/opt/elk 裏面,而後將文件夾重命名爲 kibana6.5.4 輸入:
mv kibana-6.5.4-linux-x86_64 /opt/elk
mv kibana-6.5.4-linux-x86_64 kibana6.5.4
複製代碼
進入文件夾並修改kibana.yml配置文件:
cd /opt/elk/kibana6.5.4
vim config/kibana.yml
複製代碼
將配置文件中的:
server.host: "localhost"
複製代碼
修改成:
server.host: "192.169.0.23"
複製代碼
而後一行新增,這行的意思是不使用賬號密碼登陸
xpack.security.enabled: false
複製代碼
保存退出!
使用root用戶進行啓動。 在kibana6.5.4文件夾目錄輸入:
nohup ./bin/kibana >/dev/null 2>&1 &
複製代碼
瀏覽器輸入:
緣由: 內存限制過小了! 解決辦法: 修改最大內存限制,參考Linux環境配置的第一條!
緣由: 線程數限制太少了! 解決辦法: 修改最大線程數限制,參考Linux環境配置的第二條!
緣由: 打開文件個數太少了! 解決辦法: 修改最打開文件個數,參考Linux環境配置的第三條!
緣由:未鎖定內存。 解決辦法:在報錯機器上的elasticsearch.yml配置文件中添加bootstrap.memory_lock: true
配置!
ElasticSearch和head插件 Windows版的安裝:
原創不易,若是感受不錯,但願給個推薦!您的支持是我寫做的最大動力! 版權聲明: 做者:虛無境 博客園出處:www.cnblogs.com/xuwujing CSDN出處:blog.csdn.net/qazwsxpcm 我的博客出處:www.panchengming.com