• ES集群搭建及详解


    1.简介  

    首先引用 Elasticsearch (下文简称 ES)官网的一段描述:

    Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

    本文主要介绍 Elasticsearch 集群的搭建。通过在一台服务器上创建 3 个 ES 实例来创建一个建议的 ES 集群。

    Elasticsearch/ES

    官方的Elasticsearch Reference 提供了不同版本的文档连接,真是赞!

    如果英文的不想看,还提供了中文版的 Elasticsearch 2.x: 权威指南,版本不是最新的,但是了解基本概念也是有帮助的。

    Elasticsearch 7.x 包里自包含了 OpenJDK 的包。如果你想要使用你自己配置好的 Java 版本,需要设置 JAVA_HOME 环境变量 —— 参考

    官方文档 Set up Elasticsearch 有各个 OS 的安装指导,页面 Installing Elasticsearch 中提供了多种安装包对应的指导链接!

    本文选择绿色安装包的的方式(tar.gz)安装。

    由于实验机器有限,可以在同一台机器上模拟出 3 个节点,安装 ES 集群

    2.环境

             1>三台真实服务器:

    1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id)
    $ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
    2
    
    2.cpu核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu cores)
    cat /proc/cpuinfo| grep "cpu cores"| uniq
    
    3.逻辑cpu数:简单来说,它可使处理器中的1颗内核,如2颗内核那样在操作系统中发挥作用。
    $ cat /proc/cpuinfo| grep "cpu cores"| uniq
    cpu cores       : 8
    
    
    4.查看cpu信息(型号)
    $ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
         32  Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
    
    5.查看服务器版本号
    $ more /etc/redhat-release
    CentOS Linux release 7.6.1810 (Core)
    

      

              2>ES版本:elasticsearch-7.9.2-linux-x86_64.tar

              3>kibana版本:kibana-7.9.2-linux-x86_64.tar

                  因是实体机器,所以这里的三台机器用1,2,3机器表示

    3.ES下载

    链接:https://pan.baidu.com/s/1K7XGf0ewWeabIcHBHnCGAw 
    提取码:y2my
    

      

    4.ES集群安装

    4.1调整linux系数相关参数设置

    注意:

    ES最新版本需要jdk11,需要修改环境变量

    所有版本不能用root用户跑ES

         改变其权限

    chown 用户:用户组 elasticsearch-7.9.2-linux-x86_64.tar.gz
    

      

          防火墙状态

    l   firewall-cmd --state 
    
     运行则关闭防火墙
    
    # 临时关闭防火墙
    
    systemctl stop firewalld.service
    
    
    # 永久关闭防火墙`
    
    systemctl disable firewalld
    
    
    

     

    selinux状态
    查看selinux命令
    
    /usr/sbin/sestatus 
    
    临时关闭
    
    setenforce 0 
    
    永久关闭
    
    vim /etc/selinux/config
    将SELINUX=enforcing改为SELINUX=disabled,保存后退出
    
    
    
    

    4.1.1修改最大文件数和锁内存限制以及用户最大线程数

    打开文件vi /etc/security/limits.d/20-nproc.conf
    was soft nproc 20000
    *      soft nproc 4096
    root soft nproc unlimited
    
    
    
    修改完保存即可
    
     同时修改
     vi /etc/security/limits.conf
    
    # End of file
    * soft nofile 300000
    * hard nofile 300000
    * soft nofile 65536
    * hard nofile 65536
    * hard memlock unlimited
    * soft memlock unlimited
    

      

      

       

           查看修改完结果

    # ulimit -a
    
    

      

    4.1.2更改一个进城能拥有的最大内存区域限制,编辑swappiness禁用交换分区

    vi /etc/sysctl.conf
    
    vm.max_map_count=262144
    
    vm.swappiness=1
    
    # sysctl -p
    
    vm.max_map_count = 262144
    
    vm.swappiness = 1
    

      

    4.1.3解压安装包

    tar -zxvf elasticsearch-7.9.2-linux-x86_64.tar.gz
    

      

    4.1.4进入文件,改其env

    vim /data/disk04/es/elasticsearch-7.9.2/bin/elasticsearch-env
    
    在文件第一行加入下面变量
    
    JAVA_HOME="/data/disk04/es/elasticsearch-7.9.2/jdk/"
    

      

    4.1.5修改垃圾回收器需要转换(不转换不会报错,但是会有警告)

    vim /data/disk04/es/elasticsearch-7.9.2/config/jvm.options
    

      改之前

        改之后

    以 – 开头的行被视为jvm版本应用的选项
    -Xmx2g
    以n:-开头的行被视为依赖数字指明的JVM版本
    8:- -Xmx2g
    以n-n开始的行是指明要求了JVM的版本
    8-13
    

      

    4.1.6修改 yml文件(以下标明机器与节点只是例子,不应用本次实验)

    vi  /data/disk04/es/elasticsearch-7.9.2/config/elasticsearch.yml
    
    ******集群名**********
    #集群的名字,每个节点的拥有同一个名字才能认为是同一个集群
    #cluster.name: my-application
    cluster.name: es-cluster
    
    *****节点名字**********
    #节点的名字,保证唯一,每个节点不同,需要修改
    #node.name: node-1
    node.name: node-1(第一个节点)
    node.name: node-2 (第二个节点文件)
    node.name: node-3(第三个节点文件)
    
    ******自带属性 ********
    #自定义的属性,这是官方文档中自带的
    
    # Add custom attributes to the node:
      node.attr.rack: r1
    
    *********网络****** ***
    #设置成 本机 或 0.0.0.0即可
    
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    http.port: 9200
    transport.tcp.port: 9300
    
    ******日志数据存放 *********
    (目录需要有普通用户的权限)
    #根据自己的习惯配置data文件夹
    #path.data: /path/to/data
     path.data: /app/elasticsearch-7.9.2/data
    # Path to log files:
    
    #path.logs: /path/to/logs
     path.logs: /app/elasticsearch-7.9.2/logs/logs
    *******内存 **************
    #开启启动es时锁定内存
    # Lock the memory on startup:
    #
    #bootstrap.memory_lock: true
     bootstrap.memory_lock: true
    
    ***********初始列表**********
    第一个节点
    discovery.seed_hosts: ["10.135.139.11:9200", "10.135.139.12:9200", "10.135.139.13:9200"]
     cluster.initial_master_nodes: ["es-bd1701"]
     client.transport.ping_timeout: 60s
    第二个节点
    discovery.seed_hosts: ["10.135.139.11:9200", "10.135.139.12:9200", "10.135.139.13:9200"]
     cluster.initial_master_nodes: ["es-bd1702"]
     client.transport.ping_timeout: 60s
    第三个节点
    discovery.seed_hosts: ["10.135.139.11:9200", "10.135.139.12:9200", "10.135.139.13:9200"]
     cluster.initial_master_nodes: ["es-bd1703"]
     client.transport.ping_timeout: 60s
    **********跨第三方插件访问 *************
    
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

      

    例如本次实验的第一个节点

    cluster.name: qqd-es-cluster
    node.name: 节点名
    path.data: /data/disk04/es/es_data
    path.logs: /data/disk04/es/es_logs
    node.master: true
    network.host:节点IP
    node.data: true
    http.port: 9200
    transport.tcp.port: 9300
    transport.tcp.compress: true
    node.attr.rack: r1
    transport.profiles.default.port: 9300
    discovery.zen.minimum_master_nodes: 2
    discovery.seed_hosts: ["IP1:节点1", "IP2:节点2", "IP3:节点3"]
    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false
    cluster.initial_master_nodes: ["节点1", "节点2", "节点3"]
    gateway.recover_after_nodes: 3
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

      

    4.1.7配置/etc/hosts

    节点1ip  节点1名称
    节点2ip  节点2名称
    节点3ip  节点3名称
    

      

    4.1.8配置环境变量

    vim /etc/profile 
    #es环境变量
    export ES_HOME=/data/disk04/es/elasticsearch-7.9.2
    export PASH=$ES_HOME/bin:$PATH

    source /etc/profile

      

    4.1.8修改jvm(最好不要超过机器内存的一半或者32以下)

    vi /data/disk04/es/elasticsearch-7.9.2/config/jvm.options
    
    
    
    -Xms31g
    -Xmx31g
    

      

    4.1.8启动es集群(可能会需要点时间)

    /data/disk04/es/elasticsearch-7.9.2/bin/elasticsearch
    

     

    4.1.9查看es集群(*号为主节点)

     

    http://ip:9200/_cat/nodes?pretty

    4.1.10查看es节点

    http://ip:9200/_cat/nodes?pretty
    

      

     

    集群的状态(status):red红表示集群不可用,有故障。yellow黄表示集群不可靠但可用,一般单节点时就是此状态。green正常状态,表示集群一切正常。
    节点数(node.total):节点数,这里是3,表示该集群有三个节点。
    数据节点数(node.data):存储数据的节点数,这里是3。数据节点在Elasticsearch概念介绍有。
    分片数(shards : 表示我们把数据分成多少块存储。
    主分片数(pri):primary shards,实际上是分片数的两倍,因为有一个副本,如果有两个副本,这里的数量应该是分片数的三倍,这个会跟后面的索引分片数对应起来,这里只是个总数。
    激活的分片百分比(active_shards_percent):这里可以理解为加载的数据分片数,只有加载所有的分片数,集群才算正常启动,在启动的过程中,如果我们不断刷新这个页面,我们会发现这个百分比会不断加大。

  • 相关阅读:
    当一个模块没有默认导出
    <<平仓>>
    模态对话框
    PlanB S2F 模型
    <<深入React技术栈>> CSS Modules
    状态提升
    ol.proj.transform 坐标系转换
    HTMLVideoElement.srcObject MediaStream MediaSource Blob File
    毛玻璃特效 backdrop-filter
    Filter
  • 原文地址:https://www.cnblogs.com/hanjiali/p/15872060.html
Copyright © 2020-2023  润新知