Elasticsearch8.5.3集群和Kibana的部署指南

1. Elasticsearch8.5.3集群部署

  1. 下载Elasticsearch8.5.3安装包

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-linux-x86_64.tar.gz
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-linux-x86_64.tar.gz.sha512
    shasum -a 512 -c elasticsearch-8.5.3-linux-x86_64.tar.gz.sha512 
    tar -xzf elasticsearch-8.5.3-linux-x86_64.tar.gz
    cd elasticsearch-8.5.3/
    
  2. 修改虚拟内存的配置/etc/sysctl.conf,分发所有节点

    sudo vim /etc/sysctl.conf
    # 添加 vm.max_map_count = 262144
    sudo sysctl -p  #使修改的配置立即生效(否则下次重启生效)
    
  3. 修改用户资源限制

    vim /etc/security/limits.conf
    * hard nofile 65536
    * soft nofile 131072
    * hard nproc 4096
    * soft nproc 4096
    
  4. 修改java内存配置 jvm.options

    -Xms512m
    -Xmx512m
    
  5. 新增文件夹data

    mkdir data
    
  6. 为elaticsearch创建用户并赋予相应权限

    adduser es
    passwd es
    chown -R es:es /home/es/
    chmod 777 /home/es/
    su es
    
  7. 修改elasticsearch.yml

    # node-1
    cluster.name: elastic-cluster
    node.name: node-1
    node.roles: [master,data]
    path.data: /home/es/elasticsearch-8.5.3/data
    path.logs: /home/es/elasticsearch-8.5.3/logs
    network.host: 0.0.0.0
    network.publish_host: 118.91.83.93
    http.port: 9200
    transport.port: 9300
    http.cors.enabled: true
    http.cors.allow-credentials: true
    http.cors.allow-origin: "*"
    discovery.seed_hosts: ["118.91.83.93:9300", "101.35.51.44:9300"]
    cluster.initial_master_nodes: ["node-1"]
    xpack.security.enabled: false
    
    # node-2
    cluster.name: elastic-cluster
    node.name: node-2
    node.roles: [master,data]
    path.data: /home/es/elasticsearch-8.5.3/data
    path.logs: /home/es/elasticsearch-8.5.3/logs
    network.host: 0.0.0.0
    network.publish_host: 101.35.51.44
    http.port: 9200
    transport.port: 9300
    http.cors.enabled: true
    http.cors.allow-credentials: true
    http.cors.allow-origin: "*"
    discovery.seed_hosts: ["118.91.83.93:9300", "101.35.51.44:9300"]
    cluster.initial_master_nodes: ["node-1"]
    xpack.security.enabled: false
    
  8. 运行elasticsearch服务

    bin/elasticsearch -d # -d 后台执行
    
  9. 关闭elasticsearch服务

    ps aux | grep elasticsearch
    kill -9 <pid>
    
  10. 查看集群状态

    http://118.91.83.93:9200/_cat/nodes
    

2. Elasticsearch集群设置通信加密处理和HTTPS访问

  1. 生成相关证书文件。(只需要在一个节点生成一次)

    # 生成 CA
    ./bin/elasticsearch-certutil ca
    # 输入文件名elastic和密码
    # 基于已有 CA 生成压缩包,里面有个elastic.p12 文件包含节点证书、节点密钥、CA证书
    ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
    # 以上操作会要求输入密码,密码可以不填。若填写密码,下方会有相应配置
    
  2. 将生成的文件放入 /home/es/elasticsearch-8.5.3/config/cert文件夹中。

  3. 修改 config/elasticsearch.yml 文件,添加以下配置:

    xpack.security.enabled: true # false改为true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate
    xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
    
  4. 添加节点证书密码,也就是第一步操作过程中设置的密码。(在每个节点都需要添加)

    ./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
    ./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
    

    至此,集群节点之间的通信做了加密处理。

  5. 生成HTTPS支持所需要的文件。(只需要在一个节点生成一次)

    ./bin/elasticsearch-certutil http
    # /home/es/elasticsearch-8.5.3/config/cert/elastic-stack-ca.p12
    ./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
    
  6. 将生成的文件 http.p12 放入 /home/es/elasticsearch-8.5.3/config/cert文件夹中

  7. 修改 config/elasticsearch.yml 文件,添加以下配置:

    xpack.security.http.ssl.enabled: true
    xpack.security.http.ssl.keystore.path: certs/http.p12
    
  8. 重新启动Elasticsearch节点

3. 安装Kibana及支持HTTPS

  1. 下载Kibana安装包

    cd /home/kibana/
    wget https://artifacts.elastic.co/downloads/kibana/kibana-8.5.3-linux-x86_64.tar.gz
    tar -xzf kibana-8.5.3-linux-x86_64.tar.gz
    
  2. 生成pem文件

    cd /home/es/elasticsearch-8.5.3/config/certs
    openssl pkcs12 -in elastic-certificates.p12 -cacerts -nokeys -out elastic-ca.pem
    # 需要输入其密码
    cd kibana-8.5.3/
    
  3. 为kibana创建用户并赋予相应权限

    adduser kibana
    passwd kibana
    chown -R kibana:kibana /home/kibana/
    chmod 777 /home/kibana/
    su kibana
    
  4. 创建证书与key

    # 创建证书与key
    ./bin/elasticsearch-certutil csr -name kibana-server -dns example.com,www.example.com
    # 将生成的压缩文件解压得到 kibana-server.csr、kibana-server.key 并复制到 kibana 的配置文件夹下面
    
    
  5. 将文件转移到/home/kibana/kibana-8.5.3/config/cert,并生成 kibana-server.crt 文件

    unzip csr-bundle.zip
    openssl x509 -req -in kibana-server.csr -signkey kibana-server.key -out kibana-server.crt
    
  6. 修改 kibana.yml 文件

    server.port: 5601
    server.host: 0.0.0.0
    elasticsearch.hosts: ["https://118.91.83.93:9200","https://101.35.51.44:9200"]
    elasticsearch.username: "kibana"
    elasticsearch.password: "sZWFXdLbImHVxdEcEGFa"
    server.name: kibana
    elasticsearch.ssl.certificateAuthorities: [ "/home/kibana/kibana-8.5.3/config/certs/elastic-ca.pem" ]
    i18n.locale: "zh-CN"
    server.ssl.enabled: true
    server.ssl.certificate: /home/kibana/kibana-8.5.3/config/certs/kibana-server.crt
    server.ssl.key: /home/kibana/kibana-8.5.3/config/certs/kibana-server.key
    
  7. 运行kibana

    cd /home/kibana/kibana-8.5.3
    su kibana
    # 启动 Kibanan
    nohup ./bin/kibana >/dev/null 2>&1 & echo $! > pid
    # 关闭 Kibana
    pkill -F pid
    

4. 补充

  1. 修改elastic和连接kibana的密码

    ./bin/elasticsearch-reset-password -u elastic --auto
    ./bin/elasticsearch-reset-password -u kibana-system --auto
    
  2. JDK问题

    修改ES目录下bin/elasticsearch文件,在文件第二行位置开始添加如下内容:

    export JAVA_HOME=/home/soft/es/elasticsearch-8.5.1/jdk
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
    

    此内容告诉当前的应用使用此临时环境变量,而不使用/ect/profile内的环境变量,这样就可以重新定义使用ES自带的JDK了。

posted @ 2024-08-14 17:10  shiftyCat  阅读(165)  评论(3)    收藏  举报