• elasticsearch 小总结


    elasticsearch 小总结

    0. 起因

    距离初次写关于es的文章 https://blog.csdn.net/aca_jingru/article/details/44488703 已经过去4年多了。。有必要更新一下了。把小tips总结一下。比较浅显。

    1. 安装规划配置

    规划分软件配置和硬件配置,
    首先硬件,内存方面推荐是8g 的heap size ,那么整个系统就考虑16G的了。
    现在用云的话不够就可以升级了,但是还是要凭经验规划好,重启一次节点可是非常耗时的。硬盘推荐ssd或者高效云盘。
    硬盘最好做lvm,这样可以无感扩磁盘。es是支持对数据节点多目录的,但是没试过,不知道有没有什么坑。

    操作系统建议centos7 ,都9102年了,你再用个centos6,那就真的无话可说了。

    jdk方面openjdk8 就可以很顺畅的跑了。jdk的gc 不要乱改。这是官方一再强调的。

    软件方面,详细配置可以看官网https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html

    最后贴一个es maser节点的配置

    cluster.name: my-ems
    node.name: master-1
    path.data: /vdb/lib/elasticsearch
    path.logs: /vdb/log/elasticsearch
    http.host: 0.0.0.0
    discovery.zen.ping.unicast.hosts: ["ip1,"ip2"]
    transport.host: 0.0.0.0
    node.master: true
    node.data: false
    discovery.zen.minimum_master_nodes: 2
    

    数据节点跟他类似,不说了。

    2. es滚动升级

    这个非常重要,总不可能中断服务升级吧。

    英文原文https://www.elastic.co/guide/en/elasticsearch/reference/current/rolling-upgrades.html

    适用于升级的情况,主要点是在关节点前禁止shard allocation

    默认情况下,关了es节点,经过index.unassigned.node_left.delayed_timeout(默认是一分钟) 后会进行

    curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
    {
      "persistent": {
        "cluster.routing.allocation.enable": "primaries"
      }
    }
    '
    

    stop elasticsearch, 然后 设置

    curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
    {
      "persistent": {
        "cluster.routing.allocation.enable": null
      }
    }
    '
    

    注意要等一个节点完全起来了再操作另外节点,不然可是会有丢数据的情况。

    4. data节点master节点分离

    实践下来最好分开,这样每次node节点重启并不会发生master 选举的情况,而且master 和data 节点都要用heap 内存,之前的实践来看如果内存不够大,会频繁gc ,影响master效率。

    5. 运维工具使用

    salt,ansible,fabric,puppet,chef等 这种挑一种熟练掌握就行了,官方提供了3个解决方案,https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html ,puppet,chef,ansible 。个人觉得有点重,喜欢自己写。

    6. 队列使用

    之前还是使用redis, 确实方便调试,但是现在是9102年,不用kafka这种神器有点说不过去了,
    kafka 的使用上面我的经验是手动创建topic ,指定大一点的分区。为了ha 最好是3节点的集群。硬件无特别注意之处。kafka对硬件的要求真的很小。
    redis的话很容易爆内存。redis也没啥特别好的ha方案。

    7. 监控

    kibana 自带的一个es的监控非常好用,可以看index速度,jdk gc情况。
    另外如果使用了kafka的话最好接入promethues+grafana+alertmanager 。

  • 相关阅读:
    hdfs搭建常见问题
    [转]opencv与Labview的结合(Dll调用)
    [转]opencv二值化的cv2.threshold函数
    忙在比赛前
    [转]使用charls抓包微信小程序的解决方案
    [转]Python调用C语言
    [转]基于Python实现matplotlib中动态更新图片(交互式绘图)
    [转]Python十六进制与字符串的转换
    STM32学习日记
    [转]Linux下的softlink和hardlink
  • 原文地址:https://www.cnblogs.com/gqdw/p/10664345.html
Copyright © 2020-2023  润新知