一 、docker的安裝
https://www.cnblogs.com/ghostdot/p/12410242.html
二、創建相關映射文件
cd /home/
mkdir node
cd node
mkdir es_node1 es_node2 es_node2 plugins
cd es_node1
mkdir data
touch elastisearch.yml
cd /home/node
cd es_node2
mkdir data
touch elastisearch.yml
cd /home/node
cd es_node3
mkdir data
touch elastisearch.yml
三、編寫elasticsearch.yml配置文件
vim /home/node/es_node1/elasticsearch.yml
cluster.name: elasticsearch-cluster #集群唯一名稱,所有節點一致
node.name: es_node1 #節點名稱
network.bind_host: 0.0.0.0 #設置可以訪問的ip,默認為0.0.0.0,這里全部設置通過
network.publish_host: 192.168.2.2 #設置其它結點和該結點交互的ip地址
http.port: 9200 #設置對外服務的http端口,默認為9200
transport.tcp.port: 9300 #設置節點之間交互的tcp端口,默認是9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true #配置該結點是否有資格被選舉為主結點(候選主結點),為了防止腦裂,配置奇數個候選主結點
node.data: true #配置該結點是數據結點,用於保
discovery.zen.ping.unicast.hosts: ["192.168.2.2:9300","192.168.2.2:9301","192.168.2.2:9302"] #集群個節點IP地址
discovery.zen.minimum_master_nodes: 2 #自動發現master節點的最小數
indices.query.bool.max_clause_count: 10240
vim /home/node/es_node2/elasticsearch.yml
cluster.name: elasticsearch-cluster #集群唯一名稱,所有節點一致
node.name: es_node2 #節點名稱
network.bind_host: 0.0.0.0 #設置可以訪問的ip,默認為0.0.0.0,這里全部設置通過
network.publish_host: 192.168.2.2 #設置其它結點和該結點交互的ip地址
http.port: 9201 #設置對外服務的http端口,默認為9200
transport.tcp.port: 9301 #設置節點之間交互的tcp端口,默認是9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true #配置該結點是否有資格被選舉為主結點(候選主結點),為了防止腦裂,配置奇數個候選主結點
node.data: true #配置該結點是數據結點,用於保存
discovery.zen.ping.unicast.hosts: ["192.168.2.2:9300","192.168.2.2:9301","192.168.2.2:9302"] #集群個節點IP地址
discovery.zen.minimum_master_nodes: 2 #自動發現master節點的最小數
indices.query.bool.max_clause_count: 10240
vim /home/node/es_node3/elasticsearch.yml
cluster.name: elasticsearch-cluster #集群唯一名稱,所有節點一致
node.name: es_node3 #節點名稱
network.bind_host: 0.0.0.0 #設置可以訪問的ip,默認為0.0.0.0,這里全部設置通過
network.publish_host: 192.168.2.2 #設置其它結點和該結點交互的ip地址
http.port: 9202 #設置對外服務的http端口,默認為9200
transport.tcp.port: 9302 #設置節點之間交互的tcp端口,默認是9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true #配置該結點是否有資格被選舉為主結點(候選主結點),為了防止腦裂,配置奇數個候選主結點
node.data: true #配置該結點是數據結點,用於保存數據
discovery.zen.ping.unicast.hosts: ["192.168.2.2:9300","192.168.2.2:9301","192.168.2.2:9302"] #集群個節點IP地址
discovery.zen.minimum_master_nodes: 2 #自動發現master節點的最小數
indices.query.bool.max_clause_count: 10240
四、修改宿主機相關配置文件
# 關閉防火牆
systemctl status firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
# 修改limits.conf
vim /etc/security/limits.conf
# 在最后添加: *表示所用用戶
* hard nofile 65536
* soft nofile 65536
* soft nproc 65536
* hard nproc 65536
# 修改sysctl.conf
vim /etc/sysctl.conf
# 在最后添加
vm.max_map_count=262144
# 關閉selinux
vim /etc/sysconfig/selinux
# 將 SELINUX=enforcing 改為 SELINUX=disabled
五、ES插件的安裝
如果不需要插件,這個步驟可以省略
# 下載地址:
# https://github.com/medcl/elasticsearch-analysis-ik/releases
# 拷貝到plugins下
# tar -zxvf 下載文件
# 解壓后將原文件刪除
# 建議chmod -R 777 包名
六、啟動ES集群
docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9200:9200 -p 9300:9300 -v /home/node/es_node1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/node/es_node1/data:/usr/share/elasticsearch/data -v /home/node/plugins:/usr/share/elasticsearch/plugins --name ES01 elasticsearch:5.1.1
docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9201:9201 -p 9301:9301 -v /home/node/es_node2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/node/es_node2/data:/usr/share/elasticsearch/data -v /home/node/plugins:/usr/share/elasticsearch/plugins --name ES02 elasticsearch:5.1.1
docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9202:9202 -p 9302:9302 -v /home/node/es_node3/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/node/es_node3/data:/usr/share/elasticsearch/data -v /home/node/plugins:/usr/share/elasticsearch/plugins --name ES03 elasticsearch:5.1.1
訪問 http://宿主機ip:9200/_cat/nodes
七、寫在最后
ES_JAVA_OPTS="-Xms512m -Xmx512m"
512m為其內存,可以自己根據尋求就行分配,內存越高es的效率也就越高
elasticsearch:5.1.1
版本可以自己根據需要進行選擇
如果出現權限不足或者報錯,可以嘗試
cd /home
chmod -R 777 node
chown -R 777 node
插件選擇時版本應該和ES版本相對應
給出集群創建后的tree,各節點中data下,在創建前是沒有內容的,圖片中為節點生成后,docker內部映射出來的文件,如果需要重新創建請刪除data中的內容,以免影響集群的創建成功