1、集群簡介:
ElasticSearch集群配置一般情況下需要的服務器台數為3台、5台、7台等,這里我們就以三台ElasticSearch服務器為例,並成功安裝ElasticSearch7.6.1,成功安裝后分別啟動三個ElasticSearch服務(安裝方法請參考:Elasticsearch安裝教程),服務啟動后后測試三台服務均能正常使用。接下來我們就可以在此基礎上配置ElasticSearch集群了,均用於保存數據且可被選為master節點。
服務版本:
服務 版本
elasticsearch 7.6.1
jdk 1.8
2、elasticsearch.yml配置說明:
參數 說明
cluster.name 集群名稱,相同名稱為一個集群
node.name 節點名稱,集群模式下每個節點名稱唯一
node.master 當前節點是否可以被選舉為master節點,是:true、否:false
node.data 當前節點是否用於存儲數據,是:true、否:false
path.data 索引數據存放的位置
path.logs 日志文件存放的位置
bootstrap.memory_lock 需求鎖住物理內存,是:true、否:false
bootstrap.system_call_filter SecComp檢測,是:true、否:false
network.host 監聽地址,用於訪問該es
network.publish_host 可設置成內網ip,用於集群內各機器間通信
http.port es對外提供的http端口,默認 9200
transport.tcp.port TCP的默認監聽端口,默認 9300
discovery.seed_hosts es7.x 之后新增的配置,寫入候選主節點的設備地址,在開啟服務后可以被選為主節點
cluster.initial_master_nodes es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉master
http.cors.enabled 是否支持跨域,是:true,在使用head插件時需要此配置
http.cors.allow-origin “*” 表示支持所有域名
3、集群搭建:
3.1、節點1配置:配置過程中,只需要設置elasticsearch.yml文件,其他的無須設置。
# 設置集群名稱,集群內所有節點的名稱必須一致。
cluster.name: myes
# 設置節點名稱,集群內節點名稱必須唯一。
node.name: node1
# 表示該節點會不會作為主節點,true表示會;false表示不會
node.master: true
# 當前節點是否用於存儲數據,是:true、否:false
node.data: true
# 索引數據存放的位置
path.data: /opt/elasticsearch/data
# 日志文件存放的位置
path.logs: /opt/elasticsearch/logs
# 需求鎖住物理內存,是:true、否:false
bootstrap.memory_lock: true
# 監聽地址,用於訪問該es
network.host: 172.16.100.1
# es對外提供的http端口,默認 9200
http.port: 9200
# TCP的默認監聽端口,默認 9300
transport.tcp.port: 9300
# 設置這個參數來保證集群中的節點可以知道其它N個有master資格的節點。默認為1,對於大的集群來說,可以設置大一點的值(2-4)
discovery.zen.minimum_master_nodes: 2
# es7.x 之后新增的配置,寫入候選主節點的設備地址,在開啟服務后可以被選為主節點
discovery.seed_hosts: ["172.16.100.1:9300", "172.16.100.2:9300", "172.16.100.3:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉master
cluster.initial_master_nodes: ["node1", "node2", "node3"]
# 是否支持跨域,是:true,在使用head插件時需要此配置
http.cors.enabled: true
# “*” 表示支持所有域名
http.cors.allow-origin: "*"
action.destructive_requires_name: true
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.security.enabled: false
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false
3.2、節點2配置:配置過程中,只需要設置elasticsearch.yml文件,其他的無須設置
# 設置集群名稱,集群內所有節點的名稱必須一致。
cluster.name: myes
# 設置節點名稱,集群內節點名稱必須唯一。
node.name: node1
# 表示該節點會不會作為主節點,true表示會;false表示不會
node.master: true
# 當前節點是否用於存儲數據,是:true、否:false
node.data: true
# 索引數據存放的位置
path.data: /opt/elasticsearch/data
# 日志文件存放的位置
path.logs: /opt/elasticsearch/logs
# 需求鎖住物理內存,是:true、否:false
bootstrap.memory_lock: true
# 監聽地址,用於訪問該es
network.host: 172.16.100.2
# es對外提供的http端口,默認 9200
http.port: 9200
# TCP的默認監聽端口,默認 9300
transport.tcp.port: 9300
# 設置這個參數來保證集群中的節點可以知道其它N個有master資格的節點。默認為1,對於大的集群來說,可以設置大一點的值(2-4)
discovery.zen.minimum_master_nodes: 2
# es7.x 之后新增的配置,寫入候選主節點的設備地址,在開啟服務后可以被選為主節點
discovery.seed_hosts: ["172.16.100.1:9300", "172.16.100.2:9300", "172.16.100.3:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉master
cluster.initial_master_nodes: ["node1", "node2", "node3"]
# 是否支持跨域,是:true,在使用head插件時需要此配置
http.cors.enabled: true
# “*” 表示支持所有域名
http.cors.allow-origin: "*"
action.destructive_requires_name: true
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.security.enabled: false
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false
3.3、節點3配置:配置過程中,只需要設置elasticsearch.yml文件,其他的無須設置
# 設置集群名稱,集群內所有節點的名稱必須一致。
cluster.name: myes
# 設置節點名稱,集群內節點名稱必須唯一。
node.name: node1
# 表示該節點會不會作為主節點,true表示會;false表示不會
node.master: true
# 當前節點是否用於存儲數據,是:true、否:false
node.data: true
# 索引數據存放的位置
path.data: /opt/elasticsearch/data
# 日志文件存放的位置
path.logs: /opt/elasticsearch/logs
# 需求鎖住物理內存,是:true、否:false
bootstrap.memory_lock: true
# 監聽地址,用於訪問該es
network.host: 172.16.100.3
# es對外提供的http端口,默認 9200
http.port: 9200
# TCP的默認監聽端口,默認 9300
transport.tcp.port: 9300
# 設置這個參數來保證集群中的節點可以知道其它N個有master資格的節點。默認為1,對於大的集群來說,可以設置大一點的值(2-4)
discovery.zen.minimum_master_nodes: 2
# es7.x 之后新增的配置,寫入候選主節點的設備地址,在開啟服務后可以被選為主節點
discovery.seed_hosts: ["172.16.100.1:9300", "172.16.100.2:9300", "172.16.100.3:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# es7.x 之后新增的配置,初始化一個新的集群時需要此配置來選舉master
cluster.initial_master_nodes: ["node1", "node2", "node3"]
# 是否支持跨域,是:true,在使用head插件時需要此配置
http.cors.enabled: true
# “*” 表示支持所有域名
http.cors.allow-origin: "*"
action.destructive_requires_name: true
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.security.enabled: false
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false
3.4、分別啟動三台elasticsearch服務。在瀏覽器中輸入http://172.16.100.1:9200/_cat/nodes,執行如下圖所示結果,則表示配置成功。
4、配置過程中的注意事項:
4.1、在配置discovery.seed_hosts: [“172.16.100.1:9300”, “172.16.100.2:9300”, “172.16.100.3:9300”]需要注意如下圖所示內容中的空格不能去掉,否則集群搭建不成:
4.2、在啟動的elasticsearch服務的過程有時候報如下面代碼所示錯誤:
[2017-08-13T23:28:10,458][DEBUG][o.e.a.ActionModule ] Using REST wrapper from plugin org.elasticsearch.xpack.XPackPlugin
[2017-08-13T23:28:21,144][ERROR][o.e.b.Bootstrap ] Exception
org.elasticsearch.ElasticsearchException: Failed to create native process factories for Machine Learning
at org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:289) ~[?:?]
at org.elasticsearch.xpack.XPackPlugin.createComponents(XPackPlugin.java:288) ~[?:?]
at org.elasticsearch.node.Node.lambda$new$7(Node.java:411) ~[elasticsearch-5.5.1.jar:5.5.1]
at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) ~[?:1.8.0_131]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) ~[?:1.8.0_131]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_131]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_131]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_131]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_131]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[?:1.8.0_131]
at org.elasticsearch.node.Node.<init>(Node.java:413) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.node.Node.<init>(Node.java:244) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:232) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:232) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:351) [elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) [elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) [elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) [elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) [elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.cli.Command.main(Command.java:88) [elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.5.1.jar:5.5.1]
Caused by: java.io.FileNotFoundException: \\.\pipe\controller_log_4992 (系統找不到指定的文件。)
at java.io.FileInputStream.open0(Native Method) ~[?:1.8.0_131]
at java.io.FileInputStream.open(FileInputStream.java:195) ~[?:1.8.0_131]
at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[?:1.8.0_131]
at java.io.FileInputStream.<init>(FileInputStream.java:93) ~[?:1.8.0_131]
at org.elasticsearch.xpack.ml.utils.NamedPipeHelper$PrivilegedInputPipeOpener.run(NamedPipeHelper.java:297) ~[?:?]
at org.elasticsearch.xpack.ml.utils.NamedPipeHelper$PrivilegedInputPipeOpener.run(NamedPipeHelper.java:286) ~[?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_131]
at org.elasticsearch.xpack.ml.utils.NamedPipeHelper.openNamedPipeInputStream(NamedPipeHelper.java:139) ~[?:?]
at org.elasticsearch.xpack.ml.utils.NamedPipeHelper.openNamedPipeInputStream(NamedPipeHelper.java:106) ~[?:?]
at org.elasticsearch.xpack.ml.job.process.ProcessPipes.connectStreams(ProcessPipes.java:140) ~[?:?]
at org.elasticsearch.xpack.ml.job.process.NativeController.<init>(NativeController.java:67) ~[?:?]
at org.elasticsearch.xpack.ml.job.process.NativeControllerHolder.getNativeController(NativeControllerHolder.java:50) ~[?:?]
at org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:279) ~[?:?]
... 21 more
解決辦法:在Elasticsearch/config/elasticsearch.yml配置文件中加入如下參數,並重啟即可。
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.security.enabled: false
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false
4.3、transport.tcp.port端口未開啟問題:
測試是否開啟的方法:在cmd輸入框中 1)、先輸入 ping 172.16.100.1(ping ip地址);2)、然后再輸入 telnet 172.16.100.1 9300 (測試端口號是否開啟)。
————————————————
版權聲明:本文為CSDN博主「smile in spring」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_27512271/article/details/98740135