Elasticsearch單主機多節點配置
系統版本
[[email protected] elasticsearch]$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core)
Release: 7.6.1810
Codename: Core
JAVA版本
[[email protected] elasticsearch]$ java -version
java version “12.0.1” 2019-04-16
Java™ SE Runtime Environment (build 12.0.1+12)
Java HotSpot™ 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)
Es版本
[[email protected] bin]$ curl http://192.168.0.1:9200
“name” : “es-node1”,
“cluster_name” : “test-es”,
“cluster_uuid” : “EB7JncpdSQWBHNP0HICsAw”,
“version” : {
“number” : “6.5.4”,
“build_flavor” : “default”,
“build_type” : “tar”,
“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”
建立并切換到普通使用者
因es不能夠使用root來啟動,是以需建立普通使用者來啟動es
useradd Elastic
su - Elastic
JDK環境配置
在環境變量配置檔案添加如下内容
JAVA_HOME=/usr/local/Java/jdk-12.0.1
JRE_HOME=/usr/local/Java/jdk-12.0.1/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
核心參數
sed -i ‘$avm.max_map_count = 655360’ /etc/sysctl.conf
使用者限制參數
sed -i ‘$aElastic - nofile 65536’ /etc/security/limits.conf
es記憶體大小
切換到普通使用者
sed -i ‘$aexport ES_HEAP_SIZE=512M’ ~/.bash_profile(因測試虛機記憶體較小,顧設定為512M,)
source ~/.bash_profile
擷取壓縮包
Es:https://www.elastic.co/cn/downloads/
JDK:http://jdk.java.net/java-se-ri/
解壓壓縮包
tar xf elasticsearch-6.5.4.tar.gz
mv elasticsearch-6.5.4 elasticsearch1
cp elasticsearch1 elasticsearch2
修改elasticsearch1的主配置檔案
Vim conf/elasticsearch.yml
添加如下内容:
###叢集名稱,叢集内所有的這個要相同###
cluster.name: Elasticsearch
###節點名稱,每個節點的名稱要區分開來###
node.name: es-node1
###是否可以被選舉成master節點,一般來說都是為true的,除了你會使用單個節點去作為master##
node.master: true
###是否可稱為資料節點###
node.data: true
###是否壓縮TCP傳輸時的資料,預設為false###
transport.tcp.compress: true
###叢集内使用的接口号,這個不能夠跟端口号相同
transport.tcp.port: 9300###
###資料存放的位置###
path.data: /data/elasticsearch/data
###日志存放的位置###
path.logs: /data/elasticsearch/logs
###本機的IP###
network.host: 192.168.0.1
###使用的端口号###
http.port: 9200
###叢集内的節點###
discovery.zen.ping.unicast.hosts:[“192.168.0.1:9300”, “192.168.0.1:9301”]
###有多少節點存活的情況下,叢集可以正常運作,計算方式為n/2+1
discovery.zen.minimum_master_nodes: 1
修改elasticsearch2的主配置檔案
Vim conf/elasticsearch.yml
添加如下内容:
###叢集名稱,叢集内所有的這個要相同###
cluster.name: Elasticsearch
###節點名稱,每個節點的名稱要區分開來###
node.name: es-node1
###是否可以被選舉成master節點,一般來說都是為true的,除了你會使用單個節點去作為master##
node.master: true
###是否可稱為資料節點###
node.data: true
###是否壓縮TCP傳輸時的資料,預設為false###
transport.tcp.compress: true
###叢集内使用的接口号,這個不能夠跟端口号相同###
transport.tcp.port: 9301
###資料存放的位置###
path.data: /data/elasticsearch1/data
###日志存放的位置###
path.logs: /data/elasticsearch1/logs
###本機的IP###
network.host: 192.168.0.1
###使用的端口号###
http.port: 9201
###叢集内的節點###
discovery.zen.ping.unicast.hosts:[“192.168.0.1:9300”, “192.168.0.1:9301”]
###有多少節點存活的情況下,叢集可以正常運作,計算方式為n/2+1
discovery.zen.minimum_master_nodes: 1
啟動elasticsearch1
-
使用背景啟動方式,使用nohup把程式放在背景運作
nohup ./elasticsearch1/bin/elasticsearch &
-
等待一會兒,使用netstat檢視端口資訊
netstat -an | grep 9200
啟動elasticsearch2
-
使用背景啟動方式,使用nohup把程式放在背景運作
nohup ./elasticsearch1/bin/elasticsearch &
-
等待一會兒,使用netstat檢視端口資訊
netstat -an | grep 9201
檢查節點和叢集資訊
檢視節點資訊
[[email protected] elasticsearch1]$ curl -XGET http://192.168.0.1:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.0.1 39 97 1 1.72 1.13 0.48 mdi * es-node1
192.168.0.1 21 97 29 1.72 1.13 0.48 mdi - es-node2
檢視叢集狀态
[[email protected] elasticsearch1]$ curl -XGET http://192.168.0.1:9200/_cluster/health?pretty
{
“cluster_name” : “test-es”,
“status” : “green”,
“timed_out” : false,
“number_of_nodes” : 2,
“number_of_data_nodes” : 2,
“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
}
完成
注意事項: 叢集的master節點是可以自動選舉或者是自己定義的,這使用的是自動選舉,如果一個節點當機,那麼另外一個節點就會自動選舉為master,保證業務的正常運作,在實際生産環境中可以使用多個節點來保證業務的穩定性