• Elasticsearch集群搭建


    本次集群搭建基于Elasticsearch 7.8.1
    下载地址(Elastic中文社区):https://elasticsearch.cn/download/#seg-12

    一、节点规划
    ES服务器节点分配
    192.168.0.01master
    192.168.0.02slave
    192.168.0.03slave
    192.168.0.04slave
    192.168.0.05slave,kibana
    二、es新建用户
    useradd elastic
    passwd ***
    
    • 1
    • 2
    三、修改最大文件数

    root用户执行:vim /etc/security/limits.conf

    添加:

    elastic soft nofile 65536
    elastic hard nofile 65536
    elastic soft nproc 65536
    elastic hard nproc 65536
    elastic soft memlock unlimited
    elastic hard memlock unlimited
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    四、修改虚拟机最大内存

    root用户执行:vim /etc/sysctl.conf

    添加:

    vm.max_map_count=262144
    vm.swappiness=1
    
    • 1
    • 2

    修改生效:sysctl -p

    或者使用临时修改(服务器重启后失效):

    sysctl  -w vm.max_map_count=262144
    sysctl -w vm.swappiness=1
    
    • 1
    • 2
    五、配置内存锁定

    elasticsearch官网建议生产环境需要设置 bootstrap.memory_lock: true

    官网的解释 是:发生系统swapping(内存交换)的时候ES节点的性能会非常差,也会影响节点的稳定性。所以要不惜一切代价来避免swapping。swapping会导致Java GC的周期延迟从毫秒级恶化到分钟,更严重的是会引起节点响应延迟甚至脱离集群。

    vim /etc/systemd/system.conf
    
    • 1

    在文件末尾添加

    DefaultLimitNOFILE=65536
    DefaultLimitNPROC=32000
    DefaultLimitMEMLOCK=infinity
    
    • 1
    • 2
    • 3

    但保存后,并不能立即生效,使之生效有两种方法

    1. 重启系统
    2. 执行:systemctl daemon-reexec
    六、切换用户并创建目录

    切换至 elastic用户,并查看磁盘挂载点

    su elastic
    df -h
    
    • 1
    • 2

    找到一个磁盘空间最大的挂载点,新建 elasticsearch 数据存储目录

    本次部署与技服沟通,将2T硬盘挂载在了 /data 下 ,直接在 /data 下新建目录

    • elasticsearch —— 应用目录
    • data —— 数据存储目录
    • logs —— 存储日志
    • keystore —— xpack集群通信密钥存储
    mkdir -p /data/elasticsearch
    mkdir -p /data/data
    mkdir -p /data/logs
    mkdir -p /data/keystore
    
    • 1
    • 2
    • 3
    • 4

    务必确保 /data下各个文件 的权限属于你为elasticsearch准备的非root账户,如果不是,使用root用户执行如下

    chown -R elastic:elastic /data
    
    • 1
    七、上传tar包

    将安装包上传至/data/elasticsearch下,解压,然后删除压缩包

    tar -zxvf elasticsearch-7.8.1.tar.gz
    
    • 1
    rm -rf elasticsearch-7.8.1.tar.gz
    
    • 1
    八、修改JVM内存

    进入 /data/elasticsearch/elasticsearch-7.8.1/config

    修改 jvm 配置

    vim jvm.options
    
    • 1
    -Xms8g # 注意,该项值不要超过32G,最佳值是26g
    -Xmx8g
    
    • 1
    • 2

    为了保证JVM利用率,建议上述两个值相同

    九、修改节点配置
    vim elasticsearch.yml
    
    • 1

    master节点:

    cluster.name: es #集群名称
    node.name: node-01 #节点名称,1-9的节点建议命名为01-09,方便查看
    path.data: /data/data #数据存放路径
    path.logs: /data/logs #日志存放路径
    bootstrap.memory_lock: true #开启内存锁定
    network.host: 192.168.0.01 #节点IP
    http.port: 9200 #对外暴露端口
    discovery.seed_hosts: ["192.168.0.01:9300", "192.168.0.02:9300","192.168.0.03:9300","192.168.0.04:9300","192.168.0.05:9300"] #集群内部可发现节点及IP
    cluster.initial_master_nodes: ["192.168.0.01:9300"]#初始化的master的节点
    
    # 开启xpack认证
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    slave节点:

    cluster.name: es #集群名称
    node.name: node-02 #节点名称,1-9的节点建议命名为01-09,方便查看
    path.data: /data/data #数据存放路径
    path.logs: /data/logs #日志存放路径
    bootstrap.memory_lock: true #开启内存锁定
    network.host: 192.168.0.02 #节点IP
    http.port: 9200 #对外暴露端口
    discovery.seed_hosts: ["192.168.0.01:9300", "192.168.0.02:9300","192.168.0.03:9300","192.168.0.04:9300","192.168.0.05:9300"] #集群内部可发现节点及IP
    cluster.initial_master_nodes: ["192.168.0.01:9300"]#初始化的master的节点
    
    # 开启xpack认证
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    十、指定内置jdk

    进入 /data/elasticsearch/elasticsearch-7.8.1/bin

    vim elasticsearch
    
    • 1

    在开头添加

    export JAVA_HOME=/data/elasticsearch/elasticsearch-7.8.1/jdk/
    export PATH=$JAVA_HOME/bin:$PATH
    
    #添加jdk判断
    if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="/data/elasticsearch/elasticsearch-7.8.1/jdk/bin/java"
    else
        JAVA=`which java`
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    十一、添加分词器

    下载对应版本的分词器,解压,然后按文件夹规整,放到 /data/elasticsearch/elasticsearch-7.8.1/plugins

    本次安装使用以下三个分词器ik、pinyin、stconvert

    十二、CA授权认证
    1、机构授权

    进入 /data/elasticsearch/elasticsearch-7.8.1/bin 目录下,执行

    ./elasticsearch-certutil ca
    
    • 1

    执行后会有如下询问,请输入elasticsearch.yml中的存储路径,文件名使用 elastic-stack-ca.p12

    Please enter the desired output file [elastic-stack-ca.p12]:/data/keystore/elastic-stack-ca.p12
    
    • 1

    然后继续输入自己设定的==授权机构的密码==,该密码在日后集群扩容时非常有用,需要记住

    2、生成证书

    输入密码后,授权机构生成,然后生成授权证书

    ./elasticsearch-certutil cert --ca /data/keystore/elastic-stack-ca.p12
    
    • 1

    此过程中共有三次输入

    1. 输入==授权机构的密码==
    2. 输入CA证书绝对路径 :/data/keystore/elastic-certificates.p12
    3. 输入CA证书密码(为方便管理使用,同授权机构密码)

    最终 /data/keystore 目录下生成以下两个文件

    • elastic-certificates.p12
    • elastic-stack-ca.p12
    3、证书加密

    将/data/keystore 目录下的elastic-certificates.p12elastic-stack-ca.p12放到 config 目录

    然后执行下面的命令

    ./elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
    ./elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
    
    • 1
    • 2

    密码为刚才输入的==授权机构的密码==

    十三、部署其余节点

    将配置好的 elasticsearch 分发到每个节点的相应位置,并且为每个节点做响应配置

    特别注意,需要修改的地方有 节点名称,主机名等

    • 其余节点都需要再次执行证书加密操作
    十四、启动

    bin目录下执行 ./elasticsearch -d,即可启动,启动所有节点

    十五、配置内置用户密码
    ./elasticsearch-setup-passwords interactive
    
    • 1
    用户名作用
    elastic超级用户
    kibana用于负责Kibana连接Elasticsearch
    logstash_systemLogstash将监控信息存储在Elasticsearch中时使用
    beats_systemBeats在Elasticsearch中存储监视信息时使用
    apm_systemAPM服务器在Elasticsearch中存储监视信息时使用
    remote_monitoring_userMetricbeat用户在Elasticsearch中收集和存储监视信息时使用
    十六、kibana
    vim kibana.yml
    
    • 1
    server.port: 5601
    server.host: "192.168.0.05" #本机IP
    elasticsearch.hosts: ["http://192.168.0.01:9200","http://192.168.0.02:9200","http://192.168.0.03:9200","http://192.168.0.04:9200","http://192.168.0.05:9200"] #ES集群IP
    elasticsearch.username: "elastic"
    elasticsearch.password: "***"
    i18n.locale: "zh-CN"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    nohup ./kibana &
    
    • 1
  • 相关阅读:
    计算机组成详解(运算器、控制器、存储器、I/O部件)
    低代码开发平台
    Stable Diffusion 系统教程 | 强大的ControlNet 控制网
    【技术】BootStrapTable 滚动条控制
    ubunu 18.04 LTS安装Qt-5.14-2并一起安装Qt Creator
    一次性看懂 C/C++ 当中的声明规则 与 const
    抓包整理外篇——————状态栏[ 四]
    十年诉讼,迈瑞真的赢了吗?
    数据化运营10 运营评估:如何通过数据复盘衡量你的运营策略?
    erlang开发环境搭建(Intellij IDEA)
  • 原文地址:https://blog.csdn.net/Answer0902/article/details/134185441