一、準備環境
采用三台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