Centos6.5 搭建 Elasticsearch-6.5.4 集羣

1、準備環境

採用三臺CentOS6.5部署Elasticsearch集羣,部署Elasticsearch集羣就不得不提索引分片,如下是索引分片的簡單介紹。java

       系統    節點名稱            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集羣中索引可能由多個分片構成,而且每一個分片能夠擁有多個副本。經過將一個單獨的索引分爲多個分片,咱們能夠處理不能在一個單一的服務器上面運行的大型索引,簡單的說就是索引的大小過大,致使效率問題。不能運行的緣由多是內存也多是存儲。因爲每一個分片能夠有多個副本,經過將副本分配到多個服務器,能夠提升查詢的負載能力。node

因爲 Elasticsearch 6.5.4要求linux 內核版本要高於3.5+,因此咱們先要將系統內核升級至3.5+,詳細請移步linux

CentOS6.5升級內核至4.4vim

2、Elasticsearch集羣搭建

1.安裝JDKcentos

Elasticsearch是基於Java開發是一個Java程序,運行在Jvm中,因此第一步要安裝JDKbash

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.配置目錄

安裝完畢後會生成不少文件,包括配置文件日誌文件等等,下面幾個是最主要的配置文件路徑dom

/etc/elasticsearch/elasticsearch.yml                            # els的配置文件
/etc/elasticsearch/jvm.options                                  # JVM相關的配置,內存大小等等
/etc/elasticsearch/log4j2.properties                            # 日誌系統定義

/usr/share/elasticsearch                                        # elasticsearch 默認安裝目錄
/var/lib/elasticsearch                                          # 數據的默認存放位置

5.建立用於存放數據與日誌的目錄

數據文件會隨着系統的運行飛速增加,因此默認的日誌文件與數據文件的路徑不能知足咱們的需求,那麼手動建立日誌與數據文件路徑,可使用NFS、可使用Raid等等方便之後的管理與擴展curl

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

6.集羣配置

集羣配置中最重要的兩項是node.namenetwork.host,每一個節點都必須不一樣。其中node.name是節點名稱主要是在Elasticsearch本身的日誌加以區分每個節點信息。
discovery.zen.ping.unicast.hosts是集羣中的節點信息,可使用IP地址、可使用主機名(必須能夠解析)。jvm

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-Xms1gJVM的最大最小內存。若是過小會致使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 日誌文件,可能遇到以下的錯誤:

一、第一種錯誤

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

二、第二種錯誤

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

三、第三種錯誤

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,便可啓動成功。

相關文章
相關標籤/搜索