ElasticSearch實戰系列一: ElasticSearch集群+Kinaba安裝教程

来源:https://www.cnblogs.com/xuwujing/archive/2019/08/20/11385255.html
-Advertisement-
Play Games

前言 本文主要介紹的是ElasticSearch集群和kinaba的安裝教程。 ElasticSearch介紹 ElasticSearch是一個基於Lucene的搜索伺服器,其實就是對Lucene進行封裝,提供了 REST API 的操作介面. ElasticSearch作為一個高度可拓展的開源全文 ...


前言

本文主要介紹的是ElasticSearch集群和kinaba的安裝教程。

ElasticSearch介紹

ElasticSearch是一個基於Lucene的搜索伺服器,其實就是對Lucene進行封裝,提供了 REST API 的操作介面.
ElasticSearch作為一個高度可拓展的開源全文搜索和分析引擎,可用於快速地對大數據進行存儲,搜索和分析。
ElasticSearch主要特點:分散式、高可用、非同步寫入、多API、面向文檔 。
ElasticSearch核心概念:近實時,集群,節點(保存數據),索引,分片(將索引分片),副本(分片可設置多個副本) 。它可以快速地儲存、搜索和分析海量數據。 ElasticSearch使用案例:維基百科、Stack Overflow、Github 等等。

ElasticSearch集群安裝

一、環境選擇

ElasticSearch集群安裝依賴JDK,本文的ElasticSearch版本為6.5.4,對應的Kibana也是6.5.4,這裡順便說下Kibana的版本最好不要低於ElasticSearch的版本,JDK的版本為1.8。

下載地址:

ElasticSearch-6.5.4: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz

Kibana-6.5.4: https://artifacts.elastic.co/downloads/kibana/kibana-6.5.4-linux-x86_64.tar.gz

JDK1.8 : http://www.oracle.com/technetwork/java/javase/downloads

ElasticSearch有幾個重要的節點屬性,主節點、數據節點、查詢節點、攝取節點,其中主節點、數據節點最重要的,因此本文就只主要介紹這兩個節點的安裝,剩下的節點屬性在配置文件那塊進行說明。

ElasticSearch集群安裝表格:

二、Linux配置

在安裝ElasticSearch之前,我們需要對Linux的環境做一些調整,防止在後續過程中出現一些問題!

1、修改最大記憶體限制

修改sysctl.conf文件

vim /etc/sysctl.conf

在末尾增加如下配置:

vm.max_map_count = 655360
vm.swappiness=1

然後保存退出,輸入以下命令使其生效

   sysctl -p

保存退出,輸入以下命令執行使其生效

  sysctl -p

使用命令查看:

tail -3 /etc/sysctl.conf

2、修改最大線程個數

修改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

3、修改最大打開文件個數

修改limits.conf

vim /etc/security/limits.conf

在末尾添加如下內容:

hard nofile 65536
soft nofile 65536

4、防火牆關閉

說明:其實可以不關閉防火牆,進行許可權設置,但是為了方便訪問,於是便關閉了防火牆。每個機器都做!!!

關閉防火牆的命令
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安裝

1,文件準備

解壓下載下來的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

2,環境配置

首先輸入 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安裝

1,文件準備

將下載好的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

2,配置修改

因為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
主節點(master)配置

創建成功之後,我們先修改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節點的屬性。

  1. node.master: true 並且 node.data: true
    這種組合表示這個節點即有成為主節點的資格,又存儲數據。
    如果某個節點被選舉成為了真正的主節點,那麼他還要存儲數據,這樣對於這個節點的壓力就比較大了。ElasticSearch預設每個節點都是這樣的配置,在測試環境下這樣做沒問題。實際工作中建議不要這樣設置,因為這樣相當於主節點和數據節點的角色混合到一塊了。

  2. node.master: false 並且 node.data: true
    這種組合表示這個節點沒有成為主節點的資格,也就不參與選舉,只會存儲數據。 這個節點我們稱為data(數據)節點。在集群中需要單獨設置幾個這樣的節點負責存儲數據,後期提供存儲和查詢服務。
  3. node.master: true 並且 node.data: false
    這種組合表示這個節點不會存儲數據,有成為主節點的資格,可以參與選舉,有可能成為真正的主節點,這個節點我們稱為master節點。
  4. node.master: false node.data: false
    這種組合表示這個節點即不會成為主節點,也不會存儲數據,這個節點的意義是作為一個client(客戶端)節點,主要是針對海量請求的時候可以進行負載均衡。

  5. node.ingest: true
    執行預處理管道,不負責數據和集群相關的事物。
    它在索引之前預處理文檔,攔截文檔的bulk和index請求,然後加以轉換。
    將文檔傳回給bulk和index API,用戶可以定義一個管道,指定一系列的預處理器。

elasticsearch.yml文件配置示例圖

jvm.options配置Xms和Xmx改成2G,配置如下:

-Xms2g
-Xmx2g

關於ElasticSearch更多配置可以參考ElasticSearch官方文檔!

數據節點節點(data)配置

在配置完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

3,啟動ElasticSearch

這裡還是需要使用elastic用戶來進行啟動,每台機器的每個節點都需要進行操作!
在/opt/elk的目錄下輸入:

su elastic    
cd /opt/elk
./masternode/bin/elasticsearch -d
./datanode1/bin/elasticsearch -d

啟動成功之後,可以輸入jps命令進行查看或者在瀏覽器上輸入 ip+9200或ip+9201進行查看。
出現以下界面表示成功!

四、Kibana 安裝

kinaba安裝只需要在一臺機器上部署即可,直接通過root用戶進行操作,需要註意的是kinaba需要和ElasticSearch伺服器網路ping通即可。

1,文件準備

將下載下來的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

2,配置修改

進入文件夾並修改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

保存退出!

3,Kinaba 啟動

使用root用戶進行啟動。
在kibana6.5.4文件夾目錄輸入:

nohup ./bin/kibana >/dev/null   2>&1 &

瀏覽器輸入:

http://IP:5601

五、錯誤問題解決辦法

1,max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

原因: 記憶體限制太小了!
解決辦法: 修改最大記憶體限制,參考Linux環境配置的第一條!

2,max number of threads [2048] for user [elastic] is too low, increase to at least [4096]

原因: 線程數限制太少了!
解決辦法: 修改最大線程數限制,參考Linux環境配置的第二條!

3, max file descriptors [65535] for elasticsearch process likely too low, increase to at least [65536]

原因: 打開文件個數太少了!
解決辦法: 修改最打開文件個數,參考Linux環境配置的第三條!

4,ERROR:bootstrap checks failed

原因:未鎖定記憶體。
解決辦法:在報錯機器上的elasticsearch.yml配置文件中添加bootstrap.memory_lock: true配置!

其它

ElasticSearch和head插件 Windows版的安裝:

https://www.cnblogs.com/xuwujing/p/8998168.html

音樂推薦

原創不易,如果感覺不錯,希望給個推薦!您的支持是我寫作的最大動力!
版權聲明:
作者:虛無境
博客園出處:http://www.cnblogs.com/xuwujing
CSDN出處:http://blog.csdn.net/qazwsxpcm    
個人博客出處:http://www.panchengming.com


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分享一篇關於實時流式計算的經典文章,這篇文章名為Streaming 101: The world beyond batch 那麼流計算如何超越批處理呢? 從這幾個方面說明:實時流計算系統,數據處理模式,還有大數據的未來。 一、實時流式計算系統 實時流式計算的意義: 1、企業渴望獲得更及時的數據,實時 ...
  • 所需補丁及高版本opatch上傳後將p6880880_112000_Linux-x86-64.zip解壓覆蓋$ORACLE_HOME/OPatch目錄即可[oracle@localhost OPatch]$ ./opatch versionOPatch Version: 11.2.0.3.16OPa... ...
  • 1.Redo Log The redo log is a disk-based data structure used during crash recovery to correct data written by incomplete transactions. During normal op ...
  • 轉載、節選於 https://dev.mysql.com/doc/refman/8.0/en/innodb-doublewrite-buffer.html The doublewrite buffer is a storage area located in the system tablespac ...
  • 概念介紹 CDH概覽 CDH是Apache Hadoop和相關項目的最完整、最受測試和最流行的發行版。CDH提供Hadoop的核心元素 可伸縮存儲和分散式計算 以及基於web的用戶界面和重要的企業功能。CDH是Apache許可的開放源碼,是唯一提供統一批處理、互動式SQL和互動式搜索以及基於角色的訪 ...
  • 本數據源來自 https://www.kafan.cn/edu/922556.html 目的為了備忘 把原來的sql server 2005直接裝成了2012,然後在建立鏈接伺服器鏈接一臺sql server 2000的伺服器時,報錯信息大概是“SQL Server Native Client 11 ...
  • 如果你還不知道redis的基本命令與基本使用方法,請看 【redis】redis基礎命令學習集合 緩存 redis還有另外一個重要的應用領域——緩存 引用來自網友的圖解釋緩存在架構中的位置 預設情況下,我們的服務架構如下圖,客戶端請求service,然後service去讀取mysql資料庫 問題存在 ...
  • kafka0.9版本以後用java重新編寫了producer,廢除了原來scala編寫的版本。 這裡直接使用最新2.3版本,0.9以後的版本都適用。 註意引用的包為:org.apache.kafka.clients.producer 0.11.0以後增加了事務,事務producer的示例代碼如下,需 ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...