採用三臺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
1.安裝JDKcentos
Elasticsearch是基於Java開發是一個Java程序,運行在Jvm中,因此第一步要安裝JDKbash
yum install -y java-1.8.0-openjdk-devel
https://www.elastic.co/cn/downloads/elasticsearch,是ELasticsearch的官方站點,若是須要下載最新的版本,進入官網下載便可。能夠下載到本地電腦而後再導入CentOS中,也能夠直接在CentOS中下載。服務器
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.rpm
rpm -ivh elasticsearch-6.5.4.rpm
安裝完畢後會生成不少文件,包括配置文件日誌文件等等,下面幾個是最主要的配置文件路徑dom
/etc/elasticsearch/elasticsearch.yml # els的配置文件 /etc/elasticsearch/jvm.options # JVM相關的配置,內存大小等等 /etc/elasticsearch/log4j2.properties # 日誌系統定義 /usr/share/elasticsearch # elasticsearch 默認安裝目錄 /var/lib/elasticsearch # 數據的默認存放位置
數據文件會隨着系統的運行飛速增加,因此默認的日誌文件與數據文件的路徑不能知足咱們的需求,那麼手動建立日誌與數據文件路徑,可使用NFS、可使用Raid等等方便之後的管理與擴展curl
mkdir -p /opt/elasticsearch/data mkdir -p /opt/elasticsearch/log chown -R elasticsearch.elasticsearch /opt/elasticsearch/*
集羣配置中最重要的兩項是node.name
與network.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
與-Xms1g
JVM的最大最小內存。若是過小會致使Elasticsearch剛剛啓動就馬上中止。太大會拖慢系統自己。
vim /etc/elasticsearch/jvm.options -Xms1g # JVM最大、最小使用內存 -Xmx1g
sudo chkconfig --add elasticsearch
sudo service elasticsearch start Starting elasticsearch: [ OK ]
Elasticsearch直接聽過了http接口,因此直接使用curl命令就能夠查看到一些集羣相關的信息。
可使用curl命令來獲取集羣的相關的信息,
可使用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,便可啓動成功。