zoukankan      html  css  js  c++  java
  • ELK docker 安装elasticsearch 集群之一

    在安装中,感觉有点困难,因es的版本6与7还是挺有区别的。

    非docker版本在之前有写过一篇文章,介绍安装es集群。 https://www.cnblogs.com/a393060727/p/12111542.html

    1、docker软件下载相关镜像

    下载软件,全部统一一个版本:7.1.1。

    // 文件收集logstash

    # docker pull logstash:7.1.1

    // 存储,搜索引擎 elasticsearch

    # docker pull elasticsearch:7.1.1

    // 视图管理

    # docker pull kibana:7.1.1

    // 日志搬运工 Filebeat

    # docker pull filebeat:7.1.1

     

    确认下载完成

    # docker images

     

     

    1、docker安装相关软件

    3.1、创建自定义网络network

    在所有安装的软件,都使用该自定义网络,用于连接到连接到同一网络的其他服务。

    # docker network create esnetwork

    // 查看网络有哪些

    # docker network ls

    // 删除网络

    # docker network rm 网络ID

    // 查看一个网络的信息

    # docker network inspect ec876e3251a7

     

    3.2调高JVM线程数限制数量

    // 编辑文件,增加内容

    # vi /etc/sysctl.conf

    // 增加如下内容

    vm.max_map_count=262144

     

    // 让配置生效

    # sysctl -p

    注:这一步是为了防止启动容器时,报出如下错误:

    bootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

     

     

     

     

    1、挂在文件配置

    elasticsearch.yml配置说明:

    参数

    说明

    cluster.name

    集群名称,相同名称为一个集群

    node.name

    节点名称,集群模式下每个节点名称唯一

    node.master

    当前节点是否可以被选举为master节点,是:true、否:false

    node.data

    当前节点是否用于存储数据,是:true、否:false

    path.data

    索引数据存放的位置

    path.logs

    日志文件存放的位置

    bootstrap.memory_lock

    需求锁住物理内存,是:true、否:false

    bootstrap.system_call_filter

    SecComp检测,是:true、否:false

    network.host

    监听地址,用于访问该es

    network.publish_host

    可设置成内网ip,用于集群内各机器间通信

    http.port

    es对外提供的http端口,默认 9200

    discovery.seed_hosts

    es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点

    cluster.initial_master_nodes

    es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master

    http.cors.enabled

    是否支持跨域,是:true,在使用head插件时需要此配置

    http.cors.allow-origin

    "*" 表示支持所有域名

     

    4.1 elasitsearch 高可用配置

    现固定一个目录是用用于保存ES集群数据、日志、配置文件的。

    目前我使用的是:

    // 新建目录

    # mkdir -p  /home/soft/ES/

    // 配置文件目录

    # mkdir -p /home/soft/ES/config

    // 数据目录

    # mkdir -p /home/soft/ES/data

    // 日志目录

    # mkdir -p /home/soft/ES/logs

     

     

     

    4.2.0 创建IK分词器目录

    在宿主机下载分词器,找到相应版本7.1.1分词器。

    因为是集群,而为了分词器之间互不影响,所以建立文件夹不同的文件夹,将7.1下载的zip包复制到这些目录下,解压,即可。

    在与config同级目录下新建目录

    # mkdir -p /home/soft/ES/plugins/plugins04

    # mkdir -p /home/soft/ES/plugins/plugins05

    # mkdir -p /home/soft/ES/plugins/plugins06

    3个目录都这样操作再讲压缩包复制到这些目录内,进入目录解压

    # cd /home/soft/ES/plugins/plugins04

    # unzip elasticsearch-analysis-ik-7.1.1.zip

    缩短目录名称

    # mv elasticsearch-analysis-ik-7.1.1 ik

     

    4.2.1创建数据存储挂载目录在ES目录下data创建目录用于挂载数据

    # mkdir -p /home/soft/ES/data/data04

    # mkdir -p /home/soft/ES/data/data05

    # mkdir -p /home/soft/ES/data/data06

     

    4.2.2创建数据存储挂载目录在ES目录下logs创建目录用于挂载日志

    # mkdir -p /home/soft/ES/logs/logs04

    # mkdir -p/home/soft/ES/logs/logs05

    # mkdir -p /home/soft/ES/logs/logs06

     

    4.2.3 配置文件信息

    就是各个容器节点的配置文件,挂载时指定

    节点es04.yml

    # vi es04.yml

    cluster.name: esinner

    node.name: es04

    node.master: true

    node.data: true

    bootstrap.memory_lock: false

    bootstrap.system_call_filter: false

    network.host: 172.19.0.14

    http.port: 9200

    transport.tcp.port: 9300

    http.cors.enabled: true

    http.cors.allow-origin: "*"

    discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]

    cluster.initial_master_nodes: ["172.19.0.14"]

    discovery.zen.minimum_master_nodes: 2

     

    节点es05.yml

    # vi es05.yml

    cluster.name: esinner

    node.name: es05

    node.master: true

    node.data: true

    bootstrap.memory_lock: false

    bootstrap.system_call_filter: false

    network.host: 172.19.0.15

    http.port: 9200

    transport.tcp.port: 9300

    http.cors.enabled: true

    http.cors.allow-origin: "*"

    discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]

    cluster.initial_master_nodes: ["172.19.0.14"]

    discovery.zen.minimum_master_nodes: 2

     

    节点es06.yml

    # vi es07.yml

    cluster.name: esinner

    node.name: es06

    node.master: true

    node.data: true

    bootstrap.memory_lock: false

    bootstrap.system_call_filter: false

    network.host: 172.19.0.16

    http.port: 9200

    transport.tcp.port: 9300

    http.cors.enabled: true

    http.cors.allow-origin: "*"

    discovery.seed_hosts: ["172.19.0.14","172.19.0.15","172.19.0.16"]

    cluster.initial_master_nodes: ["172.19.0.14"]

    discovery.zen.minimum_master_nodes: 2

     

    4.2.4、安装elasticsearch

    将端口映射出来,通过参数 -p

    es的端口原样暴露出来,设置容器固定IP,配置文件使用config文件夹下的,将es插件(IK分词器)、es日志、数据信息保存到宿主机。

    docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m"
    -d --net esnetwork --ip 172.19.0.14 -p 9204:9200 -p 9304:9300
    -v /home/soft/ES/config/es04.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    -v /home/soft/ES/plugins/plugins04:/usr/share/elasticsearch/plugins
    -v /home/soft/ES/data/data04:/usr/share/elasticsearch/data
    -v /home/soft/ES/logs/logs04:/usr/share/elasticsearch/logs
    --name es04 elasticsearch:7.1.1

    docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m"
    -d --net esnetwork --ip 172.19.0.15 -p 9205:9200 -p 9305:9300
    -v /home/soft/ES/config/es05.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    -v /home/soft/ES/plugins/plugins05:/usr/share/elasticsearch/plugins
    -v /home/soft/ES/data/data05:/usr/share/elasticsearch/data
    -v /home/soft/ES/logs/logs05:/usr/share/elasticsearch/logs
    --name es05 elasticsearch:7.1.1

    docker run --restart=always -e ES_JAVA_OPTS="-Xms512m -Xmx512m"
    -d --net esnetwork --ip 172.19.0.16 -p 9206:9200 -p 9306:9300
    -v /home/soft/ES/config/es06.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    -v /home/soft/ES/plugins/plugins06:/usr/share/elasticsearch/plugins
    -v /home/soft/ES/data/data06:/usr/share/elasticsearch/data
    -v /home/soft/ES/logs/logs06:/usr/share/elasticsearch/logs
    --name es06 elasticsearch:7.1.1

     

    测试

    # curl http://192.168.89.138:9204

    # curl http://192.168.89.138:9205

    # curl http://192.168.89.138:9206

    返回结果:

    [root@localhost data]# curl http://192.168.89.138:9204

    {

      "name" : "es04",

      "cluster_name" : "esinner",

      "cluster_uuid" : "QLo293zCRO-syPbY4kJCwg",

      "version" : {

        "number" : "7.1.1",

        "build_flavor" : "default",

        "build_type" : "docker",

        "build_hash" : "7a013de",

        "build_date" : "2019-05-23T14:04:00.380842Z",

        "build_snapshot" : false,

        "lucene_version" : "8.0.0",

        "minimum_wire_compatibility_version" : "6.8.0",

        "minimum_index_compatibility_version" : "6.0.0-beta1"

      },

      "tagline" : "You Know, for Search"

    }

     

    验证集群是否OK

    # curl http://192.168.89.137:9200/_cat/nodes?pretty

    访问任意的节点都会得到如下结果:

    [root@localhost data]# curl http://192.168.89.138:9206/_cat/nodes?pretty

    172.19.0.16 74 93 5 0.03 0.07 0.11 mdi * es06

    172.19.0.15 60 93 5 0.03 0.07 0.11 mdi - es05

    172.19.0.14 55 93 5 0.03 0.07 0.11 mdi - es04

    查看集群相应:

    {

      "error" : {

        "root_cause" : [

          {

            "type" : "master_not_discovered_exception",

            "reason" : null

          }

        ],

        "type" : "master_not_discovered_exception",

        "reason" : null

      },

      "status" : 503

    }

    解决:

    配置错误。初始化节点要配置成一样的。都指向同一个机器就可以了。

    配置信息增加节点,指定初始化默认master节点:

    cluster.initial_master_nodes

     

    集群测试:

    访问任意一个节点都是

     

     

    如果关闭掉其中的master节点。集群会自动选举出现的节点作为主节点。如图。

     

    再次恢复节点后,节点将作为从节点加入进来。

     

     

    至此,集群成功。

     

  • 相关阅读:
    java环境--JDK和Tomcat在linux上的安装和配置
    转载:jQuery的deferred对象详解
    js 模板引擎 -Art Template
    sublime text的快捷键
    Spring MVC 配置Controller详解
    转:几款免费的图表js插件
    tomcat manager详解
    C#判断一个string是否为数字
    调用摄像头并将其显示在UGUI image上自适应屏幕大小
    unity监测按下键的键值并输出+unity键值
  • 原文地址:https://www.cnblogs.com/a393060727/p/12292868.html
Copyright © 2011-2022 走看看