一、部署三个节点
node1:9301
node2:9302
node3:9303
二、创建配置文件
1、节点1配置
vi /usr/etc/es/node1.yml
cluster.name: hzq‐es
node.name: node1
network.host: 0.0.0.0
# 外部访问es的端口
http.port: 9301
# 节点之间通讯的端口
transport.tcp.port: 9304
# 各个节点的ip与通讯端口
discovery.seed_hosts: ["192.168.124.20:9304","192.168.124.20:9305","192.168.124.20:9306"]
cluster.initial_master_nodes: ["node1"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
2、节点2配置
cluster.name: hzq‐es
node.name: node2
network.host: 0.0.0.0
http.port: 9302
transport.tcp.port: 9305
discovery.seed_hosts: ["192.168.124.20:9304","192.168.124.20:9305","192.168.124.20:9306"]
cluster.initial_master_nodes: ["node1"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
3、节点3配置
cluster.name: hzq‐es
node.name: node3
network.host: 0.0.0.0
http.port: 9303
transport.tcp.port: 9306
discovery.seed_hosts: ["192.168.124.20:9304","192.168.124.20:9305","192.168.124.20:9306"]
cluster.initial_master_nodes: ["node1"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
三、创建与启动docker容器
创建docker容器:
docker create --name node1 --net elastic -p 9301:9301 -p9304:9304 -v /usr/etc/es/node1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -t docker.elastic.co/elasticsearch/elasticsearch:7.12.0
docker create --name node2 --net elastic -p 9302:9302 -p9305:9305 -v /usr/etc/es/node2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -t docker.elastic.co/elasticsearch/elasticsearch:7.12.0
docker create --name node3 --net elastic -p 9303:9303 -p9306:9306 -v /usr/etc/es/node3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -t docker.elastic.co/elasticsearch/elasticsearch:7.12.0
启动docker容器:
docker start node1
docker start node2
docker start node3
四、查看集群节点状态
curl http://192.168.124.20:9301/_cat/health?v
也可以网页打开 http://192.168.124.20:9301/_cat/health?v
五、不同节点介绍
-1. 客户端节点
当主节点和数据节点配置都设置为false的时候,该节点只能处理路由请求,处理
搜索,分发索引操作等,从本质上来说该客户节点表现为智能负载平衡器。
独立的客户端节点在一个比较大的集群中是非常有用的,他协调主节点和数据节
点,客户端节点加入集群可以得到集群的状态,根据集群的状态可以直接路由请求。
-2. 数据节点数据节点主要是存储索引数据的节点,主要对文档进行增删改查操作,聚合操作
等。数据节点对cpu,内存,io要求较高, 在优化的时候需要监控数据节点的状态,
当资源不够的时候,需要在集群中添加新的节点。
-3. 主节点
主资格节点的主要职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节
点是群集的一部分,并决定哪些分片分配给相关的节点。稳定的主节点对集群的健康
是非常重要的,默认情况下任何一个集群中的节点都有可能被选为主节点,索引数据
和搜索查询等操作会占用大量的cpu,内存,io资源,为了确保一个集群的稳定,分离
主节点和数据节点是一个比较好的选择。
在一个生产集群中我们可以对这些节点的职责进行划分,建议集群中设置3台以上的节
点作为master节点,这些节点只负责成为主节点,维护整个集群的状态。再根据数据
量设置一批data节点,这些节点只负责存储数据,后期提供建立索引和查询索引的服
务,这样的话如果用户请求比较频繁,这些节点的压力也会比较大,所以在集群中建
议再设置一批client节点(node.master: false node.data: false),这些节点只负责
处理用户请求,实现请求转发,负载均衡等功能