• Linux中使用Docker安装ElasticSearch7.10.x集群


    使用Docker安装ElasticSearch7.10.x单节点请访问这里

    一、集群环境说明

    服务器IP地址
    192.168.137.1,192.168.137.2,192.168.137.3

    二、前期准备

    1. 拉取镜像
    docker pull elasticsearch:7.10.1
    
    • 1
    2. 首先需要创建一个用于生成秘钥的初始容器,如下是命令:
    docker run -d --user=root --privileged=true --name elasticsearch-temp -p 9200:9200 \
    -p 9300:9300 --ulimit nofile=65536:65536  \
    -v /home/elasticsearch_temp/data:/usr/share/elasticsearch/data \
    -v /home/elasticsearch_temp/logs:/usr/share/elasticsearch/logs \
    -e ES_JAVA_OPTS="-Xms2G -Xmx2G" \
    -e discovery.seed_hosts=["192.168.137.1"] elasticsearch:7.10.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    3. 进入容器内部,并执行如下命令生成秘钥:
    #进入容器操作系统
    1. docker exec -it elasticsearch-temp /bin/bash
    #生成秘钥
    2. bin/elasticsearch-certutil cert
    #一路回车直到创建完成,生成的目录默认是(/usr/share/elasticsearch/config/elastic-certificates.p12)
    #退出容器,并将容器内此秘钥文件复制出来(命令最后有个点,表示复制到当前目录)
    3. docker cp elasticsearch-temp:/usr/share/elasticsearch/config/elastic-certificates.p12 .
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    说明(重要): 这里复制出来的elastic-certificates.p12文件,需要同时放到剩余两台服务器上。

    三、开始部署

    1. 创建ElasticSearch相关文件夹

    说明: 以服务器192.168.137.1为例,其他两台服务器操作是一样的

    #1.以/data目录为例
    mkdir -p /data/elasticsearch7-10-1/{data,logs,plugins}
    
    • 1
    • 2
    2. 创建配置文件
    vim elasticsearch.yml
    
    • 1

    以下为配置文件内容(其他服务器仅需修改node.name的值和network.publish_host的值为本机ip即可)

    cluster.name: es-cluster
    node.name: node-1
    node.master: true
    node.data: true
    network.bind_host: 0.0.0.0
    network.publish_host: 192.168.137.1
    http.port: 9200
    transport.tcp.port: 9300
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    discovery.zen.minimum_master_nodes: 2
    discovery.seed_hosts: ["192.168.137.1:9300","192.168.137.2:9300","192.168.137.3:9300"]
    cluster.initial_master_nodes: ["node-1"]
    xpack.sql.enabled: false
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.license.self_generated.type: basic
    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
    • 18
    • 19
    • 20
    3. 将步骤1创建的文件夹授权,否则启动会报错无权限
    #到ElasticSearch的根目录的上级目录,因为需要给整个elasticsearch7-10-1文件夹授权
    cd /data/
    #授权
    chmod -R 777 elasticsearch7-10-1/
    
    • 1
    • 2
    • 3
    • 4
    4. 编写启动脚本方便留痕
    1. 进入ElasticSearch主目录:
    cd /home/elasticsearch7-10-1
    
    • 1
    1. 创建脚本文件
    vim create_es.sh
    
    • 1
    1. create_es.sh内容如下:
    docker run -d --user=root --privileged=true \
    --name elasticsearch-1 -p 9200:9200 -p 9300:9300 --ulimit nofile=65536:65536 \
    -v ${PWD}/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v ${PWD}/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 \
    -v ${PWD}/logs:/usr/share/elasticsearch/logs \
    -v ${PWD}/plugins:/usr/share/elasticsearch/plugins \
    -v ${PWD}/data:/usr/share/elasticsearch/data \
    -e ES_JAVA_OPTS="-Xms2G -Xmx2G" elasticsearch:7.10.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    属性说明:

    属性配置说明
    ulimit nofile=65536:65536设置进程可用资源,如果不设置,启动会报错提示
    discovery.type=single-node设置模式为单节点模式启动
    ES_JAVA_OPTS=“-Xms2G -Xmx2G”设置ElasticSearch中的Java虚拟机环境变量
    –user=root使用root用户
    -v ${PWD}/xxxxx:/yyyyy表示将当前目录的xxxxx映射到docker容器的yyyyyy位置
    1. 将【前期准备-步骤3】中从docker容器中复制出来的elastic-certificates.p12放到/home/elasticsearch7-10-1目录下

    四、启动测试

    1. 分别启动三台服务器上的ElasticSearch服务
    sh create_es.sh
    
    • 1

    注意: 如果提示max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 这个错误的话,需要进行如下设置:

    #修改文件
    sudo vim /etc/sysctl.conf
    #添加参数
    vm.max_map_count = 262144
    #重新加载
    sysctl -p
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    2. 打开浏览器访问http://192.168.137.1:9200地址

    如果能正常打开ElasticSearch的登录页面并弹窗让你输入用户名密码,即表示启动成功

    五、设置自定义密码

    1.任选其中一台服务器,进入ElasticSearch的容器中
    docker exec -it elasticsearch-1 /bin/bash
    
    • 1
    2. 执行设置密码命令(在任意一台中执行即可,其他节点会自动同步)
    bin/elasticsearch-setup-passwords interactive
    
    • 1

    为每个用户设置密码
    说明: 为每个用户设置密码,并且会让你输入两遍密码,需要保持输入的两次密码保持一致。

    3. 设置完成后,再次访问http://192.168.137.1:9200地址,在弹出的提示框中:

    用户名:elastic
    密 码:你在上一步中为elastic用户设置的密码

    输入正确的用户名密码之后将看到如下界面:
    登录成功之后的图示

    4. 查看集群状态

    访问地址http://192.168.137.1:9200/_cluster/health?pretty
    在这里插入图片描述
    上图红框中status状态为green表示健康,node.total表示节点数量为3个,node.data表示数据节点为3个。

    如此ElasticSearch集群就搭建完成了 喜欢的就点个关注再走吧~

  • 相关阅读:
    python关于sorted排序函数详细解析 附实战代码(全)
    【无标题】
    有赞商城如何对接ERP、CRM系统?
    工作心得——css让元素居中的方法
    C++面试八股文:std::string是如何实现的?
    【python基础】复杂数据类型-字典(嵌套)
    centos 创建python虚拟环境遇到的问题及解决方法
    Caller 服务调用 - HttpClient
    SSM_整合篇
    (原创)自定义Drawable
  • 原文地址:https://blog.csdn.net/langmeng110/article/details/132811290