通常我们认为一个集群是一组拥有相同cluster_name的节点组成的,因此也可以变相的认为单节点就构成了一个集群。
下边直接上elasticsearch.yml文件的配置:
# 集群的名字
cluster.name: elasticsearch
# 节点名字
node.name: node-1
# 数据存储目录(多个路径用逗号分隔)
path.data: /path/to/data
# 日志目录
path.logs: /path/to/logs
#本机的ip地址
network.host: 192.168.1.204
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["192.168.1.204:9300"]
# 设置节点间交互的tcp端口(集群),(默认9300)
transport.tcp.port: 9300
# 监听端口(默认)
http.port: 9200
# 增加参数,使head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
#默认情况下单机不允许开启多个node,该配置限制了单节点上可以开启的es实例个数
node.max_local_storage_nodes: 10
放一张部署完成的3个节点集群状态图:
注意点1:
每个实例的 node.name、transport.tcp.port、http.port 配置项都需要相应改下。。。
注意点2:
discovery.zen.ping.unicast.hosts:设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
node.max_local_storage_nodes:默认情况下单机不允许开启多个node,该配置限制了单节点上可以开启的es实例个数
注意点3(我的是在window下启动报的错,linux不一定会有这个问题):
当我启动第二个节点的时候报错 java.lang.SecurityException: access denied 的错,查了一下是有的目录权限不足的原因。
解决方案:用“管理员”身份启动es实例即可。
ps:正式环境肯定是一个服务器只部署一个es实例,本文单机多实例情况仅仅适用于 个人学习用来模拟集群真实环境!