• 基于docker搭建es集群


    一、部署三个节点

    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),这些节点只负责

    处理用户请求,实现请求转发,负载均衡等功能

  • 相关阅读:
    SEHLL常见逻辑运算符解析
    Deep Recurrent Q-Learning for Partially Observable MDPs(DRQN)
    【云原生Docker系列第三篇】Docker网络模式(在失去的所有人里,我最怀念自己 )
    Scala 【集合常用方法和函数操作-上】
    Spring基础元注解@Target、@Retention、@Documented、@Inherited
    Retrofit项目 - Android和Java的类型安全的HTTP客户端
    PlugLink:让数据分析与工作流无缝连接(附源码)
    java并发编程
    WebGL 雾化
    rk3399 linux4.19 ubuntu mpv播放概率性内核崩溃在vop_crtc_atomic_flush
  • 原文地址:https://blog.csdn.net/mingshen3/article/details/127040283