• ElasticSearch搭建集群详解


            Elasticsearch如果做集群的话Master节点至少三台服务器或者三个Master实例加入相同集群,三个Master节点最多只能故障一台Master节点,如果故障两个Master节点,Elasticsearch将无法组成集群.会报错,Kibana也无法启动,因为Kibana无法获取集群中的节点信息。

            我们可以在虚拟机中启动三台虚拟机或者购买三台服务器,考虑个人电脑同时打开3台虚拟机太卡或者购买服务器价格过高,可以使用在一台虚拟机或服务器安装三个ES实列,搭建伪集群,ES启动是比较耗内存的,启用之前先配置好内存使用大小限制。

    es下载安装详解参考博文:Linux系统中安装elasticsearch详解_IT之一小佬的博客-CSDN博客

    整体步骤:

    本文以elasticsearch-7.17.6版本为例:

    1. 首先将下载解压后的elasticsearch-7.17.6文件夹复制3份,分别命名为elasticsearch-7.17.6-node1、elasticsearch-7.17.6-node2和elasticsearch-7.17.6-node3。
    2. 然后配置elasticsearch.yml文件内容。
    3. 然后分别启动node1、node2和node3节点。
    4. 最后打开浏览器输入:http://192.168.1.1:9201/_cat/health?v ,如果返回的node.total为3,则表示集群搭建成功。

    集群的环境如下表所示:

    cluster namenode nameIP Addrhttp端口/通信端口
    es-clusternode1192.168.1.19201 / 9700
    es-clusternode2192.168.1.19202 / 9800
    es-clusternode3192.168.1.19203 / 9900

    注意:本测试用例使用一台服务器,使用同一个IP地址,所以将端口号分别设置为不同的。

    拷贝文件:

    创建数据存储目录

    授权给xxx用户

    如:chown -R admin:admin ./logs

    elasticsearch.yml配置文件:

    elasticsearch-7.17.6-node1配置文件:

    1. cluster.name: es_cluster
    2. node.name: node1
    3. node.master: true
    4. node.data: true
    5. node.max_local_storage_nodes: 3
    6. network.host: 0.0.0.0
    7. http.port: 9201
    8. transport.tcp.port: 9700
    9. discovery.seed_hosts: ["localhost:9700", "localhost:9800", "localhost:9900"]
    10. cluster.initial_master_nodes: ["node1", "node2", "node3"]
    11. path.data: /home/admin/es_cluster/data
    12. path.logs: /home/admin/es_cluster/logs
    1. # 详细介绍
    2. # 集群名称
    3. cluster.name: es_cluster
    4. # 节点名称
    5. node.name: node1
    6. # 是不是有资格主节点
    7. node.master: true
    8. # 是否存储数据
    9. node.data: true
    10. # 最大集群数量
    11. node.max_local_storage_nodes: 3
    12. # IP地址
    13. network.host: 0.0.0.0
    14. http.port: 9201
    15. # 节点之间沟通端口
    16. transport.tcp.port: 9700
    17. # 节点发现
    18. discovery.seed_hosts: ["localhost:9700", "localhost:9800", "localhost:9900"]
    19. # 初始化一个新的集群时需要此配置来选举master
    20. cluster.initial_master_nodes: ["node1", "node2", "node3"]
    21. # 数据和存储路径
    22. path.data: /home/admin/es_cluster/data
    23. path.logs: /home/admin/es_cluster/logs

    elasticsearch-7.17.6-node2配置文件:

    1. cluster.name: es_cluster
    2. node.name: node2
    3. node.master: true
    4. node.data: true
    5. node.max_local_storage_nodes: 3
    6. network.host: 0.0.0.0
    7. http.port: 9202
    8. transport.tcp.port: 9800
    9. discovery.seed_hosts: ["localhost:9700", "localhost:9800", "localhost:9900"]
    10. cluster.initial_master_nodes: ["node1", "node2", "node3"]
    11. path.data: /home/admin/es_cluster/data
    12. path.logs: /home/admin/es_cluster/logs

    elasticsearch-7.17.6-node3配置文件:

    1. cluster.name: es_cluster
    2. node.name: node3
    3. node.master: true
    4. node.data: true
    5. node.max_local_storage_nodes: 3
    6. network.host: 0.0.0.0
    7. http.port: 9203
    8. transport.tcp.port: 9900
    9. discovery.seed_hosts: ["localhost:9700", "localhost:9800", "localhost:9900"]
    10. cluster.initial_master_nodes: ["node1", "node2", "node3"]
    11. path.data: /home/admin/es_cluster/data
    12. path.logs: /home/admin/es_cluster/logs

    jvm.options文件配置

    修改 jvm.options文件内存使用的大小,分别对三个文件修改

    设置es的jvm占用内存参数,防止内存不足的错误或系统卡顿。

    -xms:最小内存

    -xmx:最大内存

    启动节点

    启动时可能报的错误:

    查看: 

    sudo sysctl -a|grep vm.max_map_count

     修改:

     sudo sysctl -w vm.max_map_count=262144

    注意:上述方法在服务器或虚拟机重启后会恢复默认值,可以使用下述方法一劳永逸:

    在 /etc/sysctl.conf文件最后添加一行
    vm.max_map_count=262144
    即可永久修改

    运行node1节点:

    上述可以从日志中看到: master not discovered yet。还没有发现主节点。

    访问单个node1节点:

    访问集群状态信息:http://192.168.1.1:9201/_cat/health?v显示不成功。

    当其它节点也启动时显示成功。

     当看到total为3时,表示集群启动成功!

     在elasticsearch-header中查看:

    为了更好的管理集群,可以在kibana中进行配置。

  • 相关阅读:
    go sync.Map Range 的同时进行 Store,Range 的遍历结果如何?(源码分析)
    丹青映画携梦枕貘巨著《暗狩之师》参加玩协四展
    在 Ubuntu 22.04安装配置 Ansible
    数据仓库作业五:第8章 关联规则挖掘
    如果手机被偷了,里面的微信和支付宝绑定了银行卡,该怎么办?
    uniapp——项目day03
    再获深交所认可,Smartbi实力领跑金融BI赛道
    陈志泊主编《数据库原理及应用教程第4版微课版》的实验题目参考答案实验4
    18uec++多人游戏【服务器为两个角色发枪,并能在线开枪】
    聊聊httpclient的disableConnectionState
  • 原文地址:https://blog.csdn.net/weixin_44799217/article/details/126901107