天天看點

Centos6.5 搭建 Elasticsearch-6.5.4 叢集一、準備環境二、Elasticsearch叢集搭建

一、準備環境

采用三台CentOS6.5部署Elasticsearch叢集,部署Elasticsearch叢集就不得不提索引分片,以下是索引分片的簡單介紹。

       系統    節點名稱            IP位址
  centos 6.5      els-node1     192.168.1.101     
  centos 6.5   els-node2    192.168.1.102
  centos 6.5   els-node3    192.168.1.103

ES叢集中索引可能由多個分片構成,并且每個分片可以擁有多個副本。通過将一個單獨的索引分為多個分片,我們可以處理不能在一個單一的伺服器上面運作的大型索引,簡單的說就是索引的大小過大,導緻效率問題。不能運作的原因可能是記憶體也可能是存儲。由于每個分片可以有多個副本,通過将副本配置設定到多個伺服器,可以提高查詢的負載能力。

由于 Elasticsearch 6.5.4要求linux 核心版本要高于3.5+,是以我們先要将系統核心更新至3.5+,詳細請移步

CentOS6.5更新核心至4.4

二、Elasticsearch叢集搭建

1.安裝JDK

Elasticsearch是基于Java開發是一個Java程式,運作在Jvm中,是以第一步要安裝JDK

yum install -y java-1.8.0-openjdk-devel

           

2.下載下傳elasticsearch

https://www.elastic.co/cn/downloads/elasticsearch,是ELasticsearch的官方站點,如果需要下載下傳最新的版本,進入官網下載下傳即可。可以下載下傳到本地電腦然後再導入CentOS中,也可以直接在CentOS中下載下傳。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.rpm

           

3.安裝elasticsearch

rpm -ivh elasticsearch-6.5.4.rpm

           

4.配置目錄

安裝完畢後會生成很多檔案,包括配置檔案日志檔案等等,下面幾個是最主要的配置檔案路徑

/etc/elasticsearch/elasticsearch.yml                            # els的配置檔案
/etc/elasticsearch/jvm.options                                  # JVM相關的配置,記憶體大小等等
/etc/elasticsearch/log4j2.properties                            # 日志系統定義

/usr/share/elasticsearch                                        # elasticsearch 預設安裝目錄
/var/lib/elasticsearch                                          # 資料的預設存放位置

           

5.建立用于存放資料與日志的目錄

資料檔案會随着系統的運作飛速增長,是以預設的日志檔案與資料檔案的路徑不能滿足我們的需求,那麼手動建立日志與資料檔案路徑,可以使用NFS、可以使用Raid等等友善以後的管理與擴充

mkdir -p /opt/elasticsearch/data
mkdir -p /opt/elasticsearch/log
chown -R elasticsearch.elasticsearch /opt/elasticsearch/*

           

6.叢集配置

叢集配置中最重要的兩項是

node.name

network.host

,每個節點都必須不同。其中

node.name

是節點名稱主要是在Elasticsearch自己的日志加以區分每一個節點資訊。

discovery.zen.ping.unicast.hosts

是叢集中的節點資訊,可以使用IP位址、可以使用主機名(必須可以解析)。

vim /etc/elasticsearch

cluster.name: my-els                               # 叢集名稱
node.name: els-node1                               # 節點名稱,僅僅是描述名稱,用于在日志中區分

path.data: /opt/elasticsearch/data                 # 資料的預設存放路徑
path.logs: /opt/elasticsearch/log                  # 日志的預設存放路徑

network.host: 192.168.1.101                        # 目前節點的IP位址
http.port: 9200                                    # 對外提供服務的端口,9300為叢集服務的端口
#添加如下内容
#culster transport port
transport.tcp.port: 9300
transport.tcp.compress: true

discovery.zen.ping.unicast.hosts: ["192.168.1.101", "192.168.1.102","192.168.1.103"]       
# 叢集個節點IP位址,也可以使用els、els.shuaiguoxia.com等名稱,需要各節點能夠解析

discovery.zen.minimum_master_nodes: 2              # 為了避免腦裂,叢集節點數最少為 半數+1
           

7.JVM配置 

由于Elasticsearch是Java開發的,是以可以通過

/etc/elasticsearch/jvm.options

配置檔案來設定JVM的相關設定。如果沒有特殊需求按預設即可。

不過其中還是有兩項最重要的

-Xmx1g

-Xms1g

JVM的最大最小記憶體。如果太小會導緻Elasticsearch剛剛啟動就立刻停止。太大會拖慢系統本身。

vim /etc/elasticsearch/jvm.options

-Xms1g                                                  # JVM最大、最小使用記憶體
-Xmx1g
           

8.配置為系統服務

sudo chkconfig --add elasticsearch
           

9.啟動Elasticsearch

sudo service elasticsearch start

Starting elasticsearch:                                    [  OK  ]
           

10.測試

Elasticsearch直接聽過了http接口,是以直接使用curl指令就可以檢視到一些叢集相關的資訊。

可以使用curl指令來擷取叢集的相關的資訊,

  • _cat代表檢視資訊
  • nodes為檢視節點資訊,預設會顯示為一行,是以就用刀了?preety讓資訊更有好的顯示
  • ?preety讓輸出資訊更友好的顯示
可以使用curl指令來擷取叢集的相關的資訊,

#單台測試
curl http://192.168.1.101:9200

{
  "name" : "els-node1",
  "cluster_name" : "my-els",
  "cluster_uuid" : "Kmi9jmG7SdWAYu9k8_-yaw",
  "version" : {
    "number" : "6.5.4",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "d2ef93d",
    "build_date" : "2018-12-17T21:17:40.758843Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

#叢集測試
curl http://192.168.1.101:9200/_cluster/health?pretty

{
  "cluster_name" : "my-els",
  "status" : "green",               #green即為健康
  "timed_out" : false,              
  "number_of_nodes" : 3,            #可以看到number_of_nodes為3
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

curl http://192.168.1.101:9200/_cat/nodes?pretty

192.168.1.103 33 16 0 0.08 0.10 0.12 mdi - els-node3
192.168.1.101 31 37 0 0.02 0.12 0.13 mdi - els-node1
192.168.1.102 24 26 0 0.02 0.01 0.01 mdi * els-node2 #  *号表示為目前節點為主節點的意思
           

如果你要想檢視更多有關于叢集資訊、目前節點統計資訊等等,可以使用一下指令來擷取到所有可以檢視的資訊。

curl http://192.168.1.101: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
           

***如果無法通路,說明啟動失敗了,在配置 /opt/elasticsearch/log 中 my-els.log 日志檔案,可能遇到如下的錯誤:

1、第一種錯誤

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

解決辦法:切換到root使用者,編輯limits.conf 添加類似如下内容

vi /etc/security/limits.conf 
#<domain>      <type>  <item>         <value>
# 添加如下内容
   *           soft    nofile         65536
   *           hard    nofile         131072
   *           soft    nproc          2048
   *           hard    nproc          4096
           

2、第二種錯誤

max number of threads [1024] for user [elasticsearch] is too low, increase to at least [4096]
           

解決辦法:切換到root使用者,進入limits.d目錄下修改配置檔案

vi /etc/security/limits.d/90-nproc.conf 
修改如下内容:

* soft nproc 1024
#修改為
* soft nproc 4096
           

3、第三種錯誤

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

解決辦法:切換到root使用者,修改配置sysctl.conf

vi /etc/sysctl.conf 

添加下面配置:
vm.max_map_count=655360

并執行指令:
sysctl -p
           

然後,重新啟動elasticsearch,即可啟動成功。

版權聲明:本文為CSDN部落客「weixin_34342207」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34342207/article/details/92272040