精华内容
下载资源
问答
  • docker swarm 搭建 elasticsearch 集群
    2022-03-31 13:10:31

    本次使用镜像为官方6.x镜像

    容器版本为

    Docker version 18.09.4, build d14af54266

    version: ‘3.3’
    services:
    es:
    image: shihangyu/es
    networks:
    - es
    ports:
    - 6666:9200
    - 9300:9300
    environment:
    ES_JAVA_OPTS: “-Xms1g -Xmx1g”
    discovery.zen.ping.unicast.hosts: es1, es
    cluster.name: my-application
    volumes:
    - /home/dockeres/db:/usr/share/elasticsearch/data
    - /home/dockeres/db/log:/usr/share/elasticsearch/logs
    deploy:
    restart_policy:
    condition: on-failure
    replicas: 1
    placement:
    constraints:
    - node.hostnameslaver-02
    resources:
    limits:
    cpus: ‘2’
    memory: 2200M
    reservations:
    cpus: ‘0.5’
    memory: 800M
    es1:
    image: shihangyu/es
    networks:
    - es
    environment:
    ES_JAVA_OPTS: “-Xms1g -Xmx1g”
    discovery.zen.ping.unicast.hosts: es1, es
    cluster.name: my-application
    volumes:
    - /home/dockeres/db:/usr/share/elasticsearch/data
    - /home/dockeres/db/log:/usr/share/elasticsearch/logs
    deploy:
    restart_policy:
    condition: on-failure
    replicas: 1
    placement:
    constraints:
    - node.hostname
    slaver-01
    endpoint_mode: dnsrr
    resources:
    limits:
    cpus: ‘2’
    memory: 2200M
    reservations:
    cpus: ‘0.5’
    memory: 800M

    networks:
    es:
    external: true

    创建目录作为数据存储地址

    - /home/dockeres/db
    - /home/dockeres/db/log

    #启动时可能报错

    echo “vm.max_map_count=655300” > /etc/sysctl.conf

    sysctl -p

    2gvq4e9qgcew es_es replicated 1/1 shihangyu/es:latest *:6666->9200/tcp, *:9300->9300/tcp
    sisshra1a16j es_es1 replicated 1/1 shihangyu/es:latest

    swarm elasticsearch 启动成功

    公司用kibana 来做elasticsearch mapping 创建

    接下来构建 kibana

    version: ‘3.3’
    services:
    kiban:
    image: docker.elastic.co/kibana/kibana:6.4.2
    ports:
    - 5603:5601
    networks:
    - es
    environment:
    - ELASTICSEARCH_URL=http://es:9200
    configs:
    - source: kibana.yml
    target: /usr/share/kibana/config/kiban.yml
    deploy:
    restart_policy:
    condition: on-failure
    replicas: 1
    placement:
    constraints:
    - node.hostname==slaver-01
    endpoint_mode: vip
    resources:
    limits:
    cpus: ‘2’
    memory: 1500M
    reservations:
    cpus: ‘0.5’
    memory: 800M
    networks:
    es:
    external: true

    configs:
    kibana.yml:
    file: ./kibana.yml

    kibana yml文件

    [root@master docker]# cat kibana.yml
    server.name: kibana
    server.host: “0.0.0.0”
    elasticsearch.url: http://es:9200
    #elasticsearch.username: elastic
    #elasticsearch.password: acl123456
    xpack.monitoring.ui.container.elasticsearch.enabled: true
    xpack.security.enabled: false

    注意kibana 版本一定要和es版本一致

    更多相关内容
  • docker简易搭建ElasticSearch集群

    万次阅读 多人点赞 2018-10-23 09:17:11
    写在前面:为什么要用ElasticSearch?我们的应用经常需要添加检索功能,开源的Elastic Search是目前全文检索引擎的首选。它可以快速的存储、搜索和分析海量数据。ElasticSearch是一个分布式搜索框架,提供RestfulAPI...

    写在前面:为什么要用ElasticSearch?我们的应用经常需要添加检索功能,开源的Elastic Search是目前全文检索引擎的首选。它可以快速的存储、搜索和分析海量数据。ElasticSearch是一个分布式搜索框架,提供RestfulAPI,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能。

    Elasticsearch: 权威指南(中文):https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

    一、拉取ElasticSearch镜像

    在centos窗口中,执行如下命令:

    docker pull elasticsearch:5.6.8
    

    当前ES镜像版本信息:

     {
      "name" : "WlwFyqU",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "78UDZtviQqiWmzmenGpSrQ",
      "version" : {
        "number" : "5.6.8",
        "build_hash" : "cfe3d9f",
        "build_date" : "2018-09-10T20:12:43.732Z",
        "build_snapshot" : false,
        "lucene_version" : "6.6.1"
      },
      "tagline" : "You Know, for Search"
     }
    

    二、创建数据挂在目录,以及配置ElasticSearch集群配置文件,调高JVM线程数限制数量

    1.创建数据文件挂载目录,并开放通信端口

    在centos窗口中,执行如下操作:

    [root@localhost soft]# pwd
    /home/soft
    [root@localhost soft]# mkdir -p ES/config
    [root@localhost soft]# cd  ES 
    [root@localhost ES]# mkdir data1
    [root@localhost ES]# mkdir data2
    [root@localhost ES]# mkdir data3
    [root@localhost ES]# cd ES/config/
    [root@localhost ES]# firewall-cmd --add-port=9300/tcp
    success
    [root@localhost ES]# firewall-cmd --add-port=9301/tcp
    success
    [root@localhost ES]# firewall-cmd --add-port=9302/tcp
    success
    
    

    注:如果ELK选的6.X版本的,那么读者需将data1 data2 data3 开启777权限=> chmod 777 data1 data2 data3

    2.创建ElasticSearch配置文件

    在centos窗口中,使用vim命令分别创建如下文件:es1.yml,es2.yml,es3.yml

    es1.yml

    cluster.name: elasticsearch-cluster
    node.name: es-node1
    network.bind_host: 0.0.0.0
    network.publish_host: 192.168.9.219
    http.port: 9200
    transport.tcp.port: 9300
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    node.master: true 
    node.data: true  
    discovery.zen.ping.unicast.hosts: ["192.168.9.219:9300","192.168.9.219:9301","192.168.9.219:9302"]
    discovery.zen.minimum_master_nodes: 2
    

    es2.yml

    cluster.name: elasticsearch-cluster
    node.name: es-node2
    network.bind_host: 0.0.0.0
    network.publish_host: 192.168.9.219
    http.port: 9201
    transport.tcp.port: 9301
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    node.master: true 
    node.data: true  
    discovery.zen.ping.unicast.hosts: ["192.168.9.219:9300","192.168.9.219:9301","192.168.9.219:9302"]
    discovery.zen.minimum_master_nodes: 2
    

    es3.yml

    cluster.name: elasticsearch-cluster
    node.name: es-node3
    network.bind_host: 0.0.0.0
    network.publish_host: 192.168.9.219
    http.port: 9202
    transport.tcp.port: 9302
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    node.master: true 
    node.data: true  
    discovery.zen.ping.unicast.hosts: ["192.168.9.219:9300","192.168.9.219:9301","192.168.9.219:9302"]
    discovery.zen.minimum_master_nodes: 2
    

    注:本机虚拟机ip:192.168.9.219 读者请自行更改

    3.调高JVM线程数限制数量

    在centos窗口中,修改配置sysctl.conf

    vim /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]

    三、启动ElasticSearch集群容器

    启动ElasticSearch集群容器
    在centos窗口中,执行如下命令:

     docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /home/soft/ES/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/soft/ES/data1:/usr/share/elasticsearch/data --name ES01 elasticsearch:5.6.8
     
     docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 -v /home/soft/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/soft/ES/data2:/usr/share/elasticsearch/data --name ES02 elasticsearch:5.6.8
    
     docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9202:9202 -p 9302:9302 -v /home/soft/ES/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/soft/ES/data3:/usr/share/elasticsearch/data --name ES03 elasticsearch:5.6.8
    

    注:设置-e ES_JAVA_OPTS="-Xms256m -Xmx256m" 是因为/etc/elasticsearch/jvm.options 默认jvm最大最小内存是2G,读者启动容器后 可用docker stats命令查看

    四、验证是否搭建成功

    1.在浏览器地址栏访问http://192.168.9.219:9200/_cat/nodes?pretty 查看节点状态

    在这里插入图片描述
    注:节点名称带表示为主节点*

    2.使用elasticsearch-head前端框架

    • 1.拉取镜像
    docker pull mobz/elasticsearch-head:5
    
    • 2.启动容器
    docker run -d -p 9100:9100 --name es-manager  mobz/elasticsearch-head:5
    
    • 3.浏览器访问http://192.168.9.219:9100/

    在这里插入图片描述

    写在最后,这里要多提一点索引分片设置以及副本,官方推荐设置,读者根据自身需要进行修改:
    curl -XPUT ‘http://localhost:9200/_all/_settings?preserve_existing=true’ -d ‘{
    “index.number_of_replicas” : “1”,
    “index.number_of_shards” : “10”
    }’

    附录:

    1.查看容器内存

    docker stats $(docker ps --format={{.Names}})
    

    2.查看容器日志

    docker logs 容器名/容器ID
    

    3.ElasticSearch配置文件说明

    cluster.name: elasticsearch-cluster
    node.name: es-node1
    #index.number_of_shards: 2
    #index.number_of_replicas: 1
    network.bind_host: 0.0.0.0
    network.publish_host: 192.168.9.219
    http.port: 9200
    transport.tcp.port: 9300
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    node.master: true 
    node.data: true  
    discovery.zen.ping.unicast.hosts: ["es-node1:9300","es-node2:9301","es-node3:9302"]
    discovery.zen.minimum_master_nodes: 2
    

    • cluster.name:用于唯一标识一个集群,不同的集群,其 cluster.name 不同,集群名字相同的所有节点自动组成一个集群。如果不配置改属性,默认值是:elasticsearch。

    • node.name:节点名,默认随机指定一个name列表中名字。集群中node名字不能重复

    • index.number_of_shards: 默认的配置是把索引分为5个分片

    • index.number_of_replicas:设置每个index的默认的冗余备份的分片数,默认是1

    通过 index.number_of_shards,index.number_of_replicas默认设置索引将分为5个分片,每个分片1个副本,共10个结点。
    禁用索引的分布式特性,使索引只创建在本地主机上:
    index.number_of_shards: 1
    index.number_of_replicas: 0
    但随着版本的升级 将不在配置文件中配置而实启动ES后,再进行配置

    • bootstrap.memory_lock: true 当JVM做分页切换(swapping)时,ElasticSearch执行的效率会降低,推荐把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的物理内存分配给ES,同时允许ElasticSearch进程锁住内存

    • network.bind_host: 设置可以访问的ip,可以是ipv4或ipv6的,默认为0.0.0.0,这里全部设置通过

    • network.publish_host:设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址

      同时设置bind_host和publish_host两个参数可以替换成network.host
      network.bind_host: 192.168.9.219
      network.publish_host: 192.168.9.219
      =>network.host: 192.168.9.219

    • http.port:设置对外服务的http端口,默认为9200

    • transport.tcp.port: 设置节点之间交互的tcp端口,默认是9300

    • http.cors.enabled: 是否允许跨域REST请求

    • http.cors.allow-origin: 允许 REST 请求来自何处

    • node.master: true 配置该结点有资格被选举为主结点(候选主结点),用于处理请求和管理集群。如果结点没有资格成为主结点,那么该结点永远不可能成为主结点;如果结点有资格成为主结点,只有在被其他候选主结点认可和被选举为主结点之后,才真正成为主结点。

    • node.data: true 配置该结点是数据结点,用于保存数据,执行数据相关的操作(CRUD,Aggregation);

    • discovery.zen.minimum_master_nodes: //自动发现master节点的最小数,如果这个集群中配置进来的master节点少于这个数目,es的日志会一直报master节点数目不足。(默认为1)为了避免脑裂,个数请遵从该公式 => (totalnumber of master-eligible nodes / 2 + 1)。 * 脑裂是指在主备切换时,由于切换不彻底或其他原因,导致客户端和Slave误以为出现两个active master,最终使得整个集群处于混乱状态*

    • discovery.zen.ping.unicast.hosts: 集群个节点IP地址,也可以使用es-node等名称,需要各节点能够解析

    展开全文
  • 使用docker搭建elasticsearch7集群

    千次阅读 2020-12-29 21:30:32
    文章目录环境准备安装docker操作系统限制修改创建es配置启动es安装es-head 环境准备 节点名称 ip地址 node1 192.168.130.20 node2 192.168.130.19 node2 192.168.130.21 安装docker 略 操作系统限制...

    环境准备

    节点名称ip地址
    node1192.168.130.20
    node2192.168.130.19
    node2192.168.130.21

    安装docker

    操作系统限制修改

    vim /etc/sysctl.conf
    

    在最后面追加以下内容

    vm.max_map_count=655360
    

    使配置生效

    sysctl -p
    

    创建es配置

    创建目录(三个节点)

    # 创建主节点数据存放目录
    mkdir -p /root/elasticsearch/data
    # 创建主节点配置存放目录
    mkdir -p /root/elasticsearch/config
    # 创建主节点日志存放目录
    mkdir -p /root/elasticsearch/logs
    # 创建主节点插件存放目录
    mkdir -p /root/elasticsearch/plugins
    

    编辑配置文件(三个节点)

    cd /root/elasticsearch/config
    vi elasticsearch.yml
    

    写入配置信息(三个节点)

    node1配置

    # 设置集群名称,集群内所有节点的名称必须一致。
    cluster.name: kont
    # 设置节点名称,集群内节点名称必须唯一。
    node.name: node1
    # 表示该节点会不会作为主节点,true表示会;false表示不会
    node.master: true
    # 当前节点是否用于存储数据,是:true、否:false
    node.data: true
    # 索引数据存放的位置
    #path.data: /usr/share/elasticsearch/data
    # 日志文件存放的位置
    #path.logs: /usr/share/elasticsearch/logs
    # 需求锁住物理内存,是:true、否:false
    #bootstrap.memory_lock: true
    # 监听地址,用于访问该es
    network.host: 192.168.130.20
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    transport.tcp.port: 9300
    # 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
    discovery.zen.minimum_master_nodes: 1
    # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
    discovery.seed_hosts: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
    discovery.zen.fd.ping_timeout: 1m
    discovery.zen.fd.ping_retries: 5
    # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
    cluster.initial_master_nodes: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
    # 是否支持跨域,是:true,在使用head插件时需要此配置
    http.cors.enabled: true
    # “*” 表示支持所有域名
    http.cors.allow-origin: "*"
    

    node2配置

    # 设置集群名称,集群内所有节点的名称必须一致。
    cluster.name: kont
    # 设置节点名称,集群内节点名称必须唯一。
    node.name: node2
    # 表示该节点会不会作为主节点,true表示会;false表示不会
    node.master: true
    # 当前节点是否用于存储数据,是:true、否:false
    node.data: true
    # 索引数据存放的位置
    #path.data: /usr/share/elasticsearch/data
    # 日志文件存放的位置
    #path.logs: /usr/share/elasticsearch/logs
    # 需求锁住物理内存,是:true、否:false
    #bootstrap.memory_lock: true
    # 监听地址,用于访问该es
    network.host: 192.168.130.19
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    transport.tcp.port: 9300
    # 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
    discovery.zen.minimum_master_nodes: 1
    # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
    discovery.seed_hosts: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
    discovery.zen.fd.ping_timeout: 1m
    discovery.zen.fd.ping_retries: 5
    # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
    cluster.initial_master_nodes: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
    # 是否支持跨域,是:true,在使用head插件时需要此配置
    http.cors.enabled: true
    # “*” 表示支持所有域名
    http.cors.allow-origin: "*"
    
    

    node3配置

    # 设置集群名称,集群内所有节点的名称必须一致。
    cluster.name: kont
    # 设置节点名称,集群内节点名称必须唯一。
    node.name: node3
    # 表示该节点会不会作为主节点,true表示会;false表示不会
    node.master: true
    # 当前节点是否用于存储数据,是:true、否:false
    node.data: true
    # 索引数据存放的位置
    #path.data: /usr/share/elasticsearch/data
    # 日志文件存放的位置
    #path.logs: /usr/share/elasticsearch/logs
    # 需求锁住物理内存,是:true、否:false
    #bootstrap.memory_lock: true
    # 监听地址,用于访问该es
    network.host: 192.168.130.21
    # es对外提供的http端口,默认 9200
    http.port: 9200
    # TCP的默认监听端口,默认 9300
    transport.tcp.port: 9300
    # 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
    discovery.zen.minimum_master_nodes: 1
    # es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
    discovery.seed_hosts: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
    discovery.zen.fd.ping_timeout: 1m
    discovery.zen.fd.ping_retries: 5
    # es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
    cluster.initial_master_nodes: ["192.168.130.20:9300", "192.168.130.19:9300","192.168.130.21:9300"]
    # 是否支持跨域,是:true,在使用head插件时需要此配置
    http.cors.enabled: true
    # “*” 表示支持所有域名
    http.cors.allow-origin: "*"
    
    

    启动es

    node1

    docker run  -d  --network=host --privileged=true  \
    -e ES_JAVA_OPTS="-Xms2048m -Xmx2048m"  \
    -e TAKE_FILE_OWNERSHIP=true --name es-node1 \
    -v /root/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v /root/elasticsearch/data:/usr/share/elasticsearch/data \
    -v /root/elasticsearch/logs:/usr/share/elasticsearch/logs \
    -v /root/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    elasticsearch:7.6.1
    

    node2

    docker run  -d  --network=host --privileged=true  \
    -e ES_JAVA_OPTS="-Xms2048m -Xmx2048m"  \
    -e TAKE_FILE_OWNERSHIP=true --name es-node2 \
    -v /root/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v /root/elasticsearch/data:/usr/share/elasticsearch/data \
    -v /root/elasticsearch/logs:/usr/share/elasticsearch/logs \
    -v /root/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    elasticsearch:7.6.1
    

    node3

    docker run  -d  --network=host --privileged=true  \
    -e ES_JAVA_OPTS="-Xms2048m -Xmx2048m"  \
    -e TAKE_FILE_OWNERSHIP=true --name es-node3 \
    -v /root/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v /root/elasticsearch/data:/usr/share/elasticsearch/data \
    -v /root/elasticsearch/logs:/usr/share/elasticsearch/logs \
    -v /root/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    elasticsearch:7.6.1
    

    打开浏览器,检查集群是否正常
    http://xx.xx.xx.xx:9200/_cat/nodes?pretty

    安装es-head(可选)

    docker run -d --name es-head -p 9100:9100 mobz/elasticsearch-head:5
    

    打开http://xx.xx.xx.xx:9100 连接上面任意一个节点

    展开全文
  • docker compose搭建elasticsearch7集群

    千次阅读 2022-03-28 16:21:05
    一、集群介绍 系统环境:Centos7.5 服务器节点: 主机名 IP hadoop03 192.168.1.153 hadoop04 192.168.1.154 hadoop05 192.168.1.155 二、环境准备 1、安装docker:略过 2、安装docker ...

    一、集群介绍

    系统环境:Centos7.5

    服务器节点:

    主机名IP
    hadoop03192.168.1.153
    hadoop04192.168.1.154
    hadoop05192.168.1.155

    二、环境准备

    1、安装docker:略过

    2、安装docker compose

    1)使用官方推荐方式(此方式需服务器翻外网)

    curl -L "https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
    
    chmod +x /usr/local/bin/docker-compose
    
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    
    docker-compose --version

    2)自行下载

            由于服务器连不上Github,因此手动下载:https://github.com/docker/compose/releases/

    选择docker-compose-linux-x86_64并下载,然后上传到fuwuq 并下载,然后上传到服务器,

    mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
    
    chmod +x /usr/local/bin/docker-compose
    
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    
    docker-compose --version

    3)修改系统参数

    vim /etc/sysctl.conf
    vm.max_map_count = 262144
    
    # 使配置生效
    sysctl -p
    # 临时修改,系统重启后就失效
    sysctl -w vm.max_map_count=262144

    三、安装elasticsearch

    1、新建目录

            在三台服务器上新建elasticsearch用户:

    mkdir -p /soft/elasticsearch/es/
    cd /soft/elasticsearch/es/
    mkdir conf
    mkdir logs
    mkdir data

    2、创建docker-compose.yml文件

    三个节点分别执行

    cd /soft/elasticsearch/es
    touch  docker-compose.yml

    1)hadoop03节点

    vim docker-compose.yml
    
    version: '1.0'
    services:
      es:                    # 服务名称
        image: elasticsearch:7.3.0      # 使用的镜像
        container_name: es01   # 容器名称
        restart: always                 # 失败自动重启策略
        environment:
          - node.name=es01                 # 节点名称,集群模式下每个节点名称唯一
          - network.host=0.0.0.0                # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
          - network.publish_host=192.168.1.153      # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
          - discovery.seed_hosts=192.168.1.153,192.168.1.154,192.168.1.155          # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
          - cluster.initial_master_nodes=es01  # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
          - cluster.name=es-cluster-prod     # 集群名称,相同名称为一个集群, 三个es节点须一致
    #      - http.cors.enabled=true    # 是否支持跨域,是:true // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
    #      - http.cors.allow-origin="*" # 表示支持所有域名      // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
          - bootstrap.memory_lock=true  # 内存交换的选项,官网建议为true
          - node.master=true
          - node.data=true
          - http.port=9200
          - transport.tcp.port=9300
          - "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 设置内存,如内存不足,可以尝试调低点
        ulimits:        # 栈内存的上限
          memlock:
            soft: -1    # 不限制
            hard: -1    # 不限制
        volumes:
          - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
          - ./data:/usr/share/elasticsearch/data  # 存放数据的文件
          - ./logs:/usr/share/elasticsearch/logs  #存放日志文件
          - ./plugins:/usr/share/elasticsearch/plugins #存放插件
          - ./conf/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 #存放证书
        ports:
          - 9200:9200    # http端口,可以直接浏览器访问
          - 9300:9300    # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。
        networks:
          - elk
      es-head:
        image: tobias74/elasticsearch-head:6
        container_name: es-head
        restart: always
        ports:
          - 9100:9100
        networks:
          - elk
    networks:
      elk:
        driver: bridge
    

    2)hadoop04节点

    docker-compose.yml
    
    version: '1.0'
    services:
      es:                    # 服务名称
        image: elasticsearch:7.3.0      # 使用的镜像
        container_name: es02   # 容器名称
        restart: always                 # 失败自动重启策略
        environment:
          - node.name=es02                 # 节点名称,集群模式下每个节点名称唯一
          - network.host=0.0.0.0                # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
          - network.publish_host=192.168.1.154      # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
          - discovery.seed_hosts=192.168.1.153,192.168.1.154,192.168.1.155          # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
          - cluster.initial_master_nodes=192.168.1.153  # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
          - cluster.name=es-cluster-prod     # 集群名称,相同名称为一个集群, 三个es节点须一致
    #      - http.cors.enabled=true    # 是否支持跨域,是:true // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
    #      - http.cors.allow-origin="*" # 表示支持所有域名      // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
          - bootstrap.memory_lock=true  # 内存交换的选项,官网建议为true
          - node.master=true
          - node.data=true
          - http.port=9200
          - transport.tcp.port=9300
          - "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 设置内存,如内存不足,可以尝试调低点
        ulimits:        # 栈内存的上限
          memlock:
            soft: -1    # 不限制
            hard: -1    # 不限制
        volumes:
          - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
          - ./data:/usr/share/elasticsearch/data  # 存放数据的文件
          - ./logs:/usr/share/elasticsearch/logs  #存放日志文件
          - ./plugins:/usr/share/elasticsearch/plugins #存放插件
          - ./conf/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 #存放证书
        ports:
          - 9200:9200    # http端口,可以直接浏览器访问
          - 9300:9300    # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。
    

    3)hadoop05节点

    docker-compose.yml
    
    version: '1.0'
    services:
      es:                    # 服务名称
        image: elasticsearch:7.3.0      # 使用的镜像
        container_name: es03   # 容器名称
        restart: always                 # 失败自动重启策略
        environment:
          - node.name=es03                 # 节点名称,集群模式下每个节点名称唯一
          - network.host=0.0.0.0                # 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,即本机
          - network.publish_host=192.168.1.155      # 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
          - discovery.seed_hosts=192.168.1.153,192.168.1.154,192.168.1.155          # es7.0之后新增的写法,写入候选主节点的设备地址,在开启服务后,如果master挂了,哪些可以被投票选为主节点
          - cluster.initial_master_nodes=192.168.1.153  # es7.0之后新增的配置,初始化一个新的集群时需要此配置来选举master
          - cluster.name=es-cluster-prod     # 集群名称,相同名称为一个集群, 三个es节点须一致
    #      - http.cors.enabled=true    # 是否支持跨域,是:true // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
    #      - http.cors.allow-origin="*" # 表示支持所有域名      // 这里设置不起作用,但是可以将此文件映射到宿主机进行修改,然后重启,解决跨域
          - bootstrap.memory_lock=true  # 内存交换的选项,官网建议为true
          - node.master=true
          - node.data=true
          - http.port=9200
          - transport.tcp.port=9300
          - "ES_JAVA_OPTS=-Xms2g -Xmx2g" # 设置内存,如内存不足,可以尝试调低点
        ulimits:        # 栈内存的上限
          memlock:
            soft: -1    # 不限制
            hard: -1    # 不限制
        volumes:
          - ./conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  # 将容器中es的配置文件映射到本地,设置跨域, 否则head插件无法连接该节点
          - ./data:/usr/share/elasticsearch/data  # 存放数据的文件
          - ./logs:/usr/share/elasticsearch/logs  #存放日志文件
          - ./plugins:/usr/share/elasticsearch/plugins #存放插件
          - ./conf/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 #存放证书
        ports:
          - 9200:9200    # http端口,可以直接浏览器访问
          - 9300:9300    # es集群之间相互访问的端口,jar之间就是通过此端口进行tcp协议通信,遵循tcp协议。

            这里要注意的是,  network.publish_host这个属性必须指定为宿主机的IP;否则它默认使用的本机IP,也就是容器自己的IP,由于三个docker容器分别在不容的服务器,这样是互相发现不了的,会报这个错:master not discovered yet, this node has not previously joined a bootstrapped (v7+) cluster,以及这个错:javax.net.ssl.SSLHandshakeException: Insufficient buffer remaining for AEAD cipher fragment (2). Needs to be more than tag size (16)。由于第一个错只是warn,而第二个错误直接是异常比较明显,所以一直在去网上搜索第二个错误,碰巧的是第二个错误网上大部分说是openJDK的一个bug,以至于快把我整抑郁了;但其实第二个错误是第一个错误引起的。

    3、配置elasticsearch.yml

    vim es/conf/elasticsearch.yml
    
    network.host: 0.0.0.0
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    http.cors.allow-headers: Authorization,Content-Type
    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
    

    4、获取授权证书

            由于开启了X-Pack安全认证,需要获取证书,这里的思路是临时创建一个es容器,在里面生成证书后,拷贝出来:

    #生成es临时容器
    docker run -dit --name=es elasticsearch:7.3.0 /bin/bash
    #进入容器内
    docker exec -it es /bin/bash
    #生成证书的命令
    ./bin/elasticsearch-certutil ca
    #一通回车后
    ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
    #又一通回车后,退出容器
    exit
    
    # 复制出来
    docker cp es:/usr/share/elasticsearch/elastic-certificates.p12 .
    #移除临时容器
    docker kill es
    docker rm es
    # 将证书移动到conf目录下
    mv elastic-certificates.p12 /soft/elasticsearch/es/conf
    # 将证书拷贝到另外两台机器
    scp /soft/elasticsearch/es/conf/elastic-certificates.p12 hadoop04:/soft/elasticsearch/es/conf
    scp /soft/elasticsearch/es/conf/elastic-certificates.p12 hadoop05:/soft/elasticsearch/es/conf

    5、授权

    如果绑定安装一个本地目录或文件,那么它必须是elasticsearch用户可读的(在容器内部默认使用elasticsearch用户运行)。此外,该用户必须对数据和日志目录具有写权限。

    chmod -R 777 es
    

    6、启动/停止

    # -d表示后台启动
    docker-compose up -d
    
    # 命令将停止运行的容器,但不会删除它们
    docker-compose stop
    
    # 停止运行的容器,并且会删除已停止的容器以及已创建的所有网络;添加-v标记以删除所有卷。这对于通过运行在环境中进行完全重置非常有用
    docker-compose down -v

    7、设置密码

    在hadoop03节点执行:

    docker exec -it es01 /bin/bash
    
    ./bin/elasticsearch-setup-passwords interactive
    
    Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
    You will be prompted to enter passwords as the process progresses.
    Please confirm that you would like to continue [y/N]y
     
    Enter password for [elastic]: 
    Reenter password for [elastic]: 
    Enter password for [apm_system]: 
    Reenter password for [apm_system]: 
    Enter password for [kibana]: 
    Reenter password for [kibana]: 
    Enter password for [logstash_system]: 
    Reenter password for [logstash_system]: 
    Enter password for [beats_system]: 
    Reenter password for [beats_system]: 
    Enter password for [remote_monitoring_user]: 
    Reenter password for [remote_monitoring_user]: 
    Changed password for user [apm_system]
    Changed password for user [kibana]
    Changed password for user [logstash_system]
    Changed password for user [beats_system]
    Changed password for user [remote_monitoring_user]
    Changed password for user [elastic]
    

    建议密码设置为一样的,方便记忆。

    8、es-head连接不上es

      1)跨域问题

           在elasticsearch.yml配置文件中有如下设置:

    # 如果不设置这个,只能在本机访问
    network.host: 0.0.0.0
    # 处理跨域问题
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    http.cors.allow-headers: Authorization,Content-Type

    2)401(Unauthorized)问题

       这是因为加了X-Pack认证,需要用户名密码才可以访问:

    http://192.168.1.153:9100/?auth_user=elastic&auth_password=Zstax@123

    按照如下方式访问即可:

    四、安装kibana

    1、新建目录

    mkdir /soft/elasticsearch/kibana
    cd kibana
    mkdir conf
    mkdir data

     2、配置docker-compose

    cd /soft/elasticsearch/kibana
    vim docker-compose.yml
    
    version: '1.0'
    services:
      kibana:
        image: docker.elastic.co/kibana/kibana:7.3.0
        container_name: kibana
        environment:
          - SERVER_NAME=kibana
          - ELASTICSEARCH_HOSTS=http://192.168.1.153:9200  #这个地址如果是阿里云、华为云等云服务器,则需要是对外IP,也就是用户电脑能访问到的IP
          - XPACK_MONITORING_ENABLED=true
        ports:
          - 5601:5601
        volumes:
          - ./conf/kibana.yml:/usr/share/kibana/config/kibana.yml
          - ./data:/usr/share/kibana/data
        depends_on:
          - es
        networks:
          - elk
    networks:
      elk:
        driver: bridge
    

    3、配置kibana.yml

    vim /soft/elasticsearch/kibana/conf/kibana.yml
    
    elasticsearch.username: "elastic"
    elasticsearch.password: "Zstax@123"
    xpack.monitoring.enabled: true
    xpack.monitoring.ui.container.elasticsearch.enabled: true
    server.host: "0.0.0.0"
    i18n.locale: zh-CN #中文
    #去除警告:Generating a random key for xpack.reporting.encryptionKey. 
    #To prevent pending reports from failing on restart, please set xpack.reporting.encryptionKey in kibana.ym
    xpack.reporting.encryptionKey: "122333444455555666666777777788888888"
    #去除警告:Generating a random key for xpack.security.encryptionKey. 
    #To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.y
    xpack.security.encryptionKey: "122333444455555666666777777788888888"
    

    4、授权

    如果绑定安装一个本地目录或文件,那么它必须是elasticsearch用户可读的(在容器内部默认使用elasticsearch用户运行)。此外,该用户必须对数据和日志目录具有写权限。

    chmod -R 777 kibana
    

    5、启动/停止

    # -d表示后台启动
    docker-compose up -d
    
    # 命令将停止运行的容器,但不会删除它们
    docker-compose stop
    
    # 停止运行的容器,并且会删除已停止的容器以及已创建的所有网络;添加-v标记以删除所有卷。这对于通过运行在环境中进行完全重置非常有用
    docker-compose down -v

    展开全文
  • docker搭建Elasticsearch集群

    千次阅读 2022-03-10 16:28:55
    docker pull es镜像 配置配置文件 # es1 # 主master配置样例子 # 集群的名称 cluster.name: "docker-cluster" # 节点的名称 node.name: node-1 # 此节点是否可以用作master节点 node.master: true # 此节点是否是...
  • 点击上方蓝字关注我们作者:做最会吹牛的程序猿https://blog.csdn.net/belonghuang157405写在前面:为什么要用ElasticSearch?我们的应用经常需要...
  • ES 集群搭建 这里使用docker搭建集群,使用安装包搭建步骤差不多,ES版本为7.4.2,服务器为阿里云Centos7 一、拉取镜像 docker pull elasticsearch:7.4.2 二、创建挂载目录 mkdir /mydata/elasticsearch 三、创建...
  • docker搭建es集群

    千次阅读 2021-12-01 20:48:27
    docker-compose 搭建es集群
  • 记录下docker 集群搭建及使用docker compose 搭建es集群的探索过程一.创建虚拟机二.配置网络三.安装docker四.Swarm配置五.搭建Portainer可视化界面 一.创建虚拟机 硬盘64G,内存24G,CPU4,网络适配器网桥,...
  • 使用docker搭建es集群

    2021-09-24 14:01:49
    使用docker搭建es集群 一、安装es 1.1 拉取es镜像 docker pull elasticsearch:7.9.3(重点7.x开始不需要手动下载x-pack) 1.2 配置es并启动 mkdir -p data/es/config cd data/es mkdir -p node1/data chmod 777 ...
  • 192.168.38.50 docker node1 192.168.38.51 docker node2 192.168.38.52 docker node3 192.168.38.53 docker kibana 2 前置环境 描述: 3台服务都要修改。 vim /etc/sysctl.conf #fs.file-max主要是配置系统最大...
  • docker搭建es集群+skywalking 1.利用docker镜像在一台服务器上搭建es集群 我的整个过程都是在/usr/local/packages中进行,所以最好先切换到该目录,没有则创建 mkdir -p /usr/local/packages cd /usr/local/...
  • 点击关注公众号,实用技术文章及时了解来源:blog.csdn.net/belonghuang157405/article/details/83301937写在前面:为什么要用ElasticSearch?我们的应用经常需要添加检索功能,开源的Elastic Search是目前全文检索...
  • v /root/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ elasticsearch:7.10.1 还可以添加其他参数,限制内存大小和挂载数据卷: docker run -d --name es1 \ -p 9200:9200 -p 9300:9300 \ -v /root/...
  • 修改ip地址 将虚拟机的IP地址修改为192.168.64.181 关闭防火墙 后面我们要使用多个端口,为了...我们使用 Docker 来运行 Elasticsearch,首先安装 Docker,参考下面笔记: Doker笔记 下载 Elastic Search 镜像 docker
  • 利用docker compose 搭建es 3节点集群环境
  • centos7使用docker搭建elasticsearch集群

    千次阅读 2022-02-16 09:56:16
    前几天买了腾讯云的服务器,正巧最近在学习elasticsearch,于是想搭建一个es集群玩玩。根据关键字在百度上搜了几篇博客,发现内容出奇的相似,我就预感事情并不简单。 果然!没有一篇博客能够完整安装的,翻了翻官方...
  • 基于Docker方式实现Elasticsearch集群搭建 1、拉取Elasticsearch 2、创建es挂载目录 创建3个文件夹用于存放es挂载地址:es01、es02、es03 3、创建配置文件及数据存放目录 我们以es01 为例,cd es01,增加es01.yml...
  • Docker部署elasticsearch 6.8集群

    千次阅读 2022-03-10 20:11:34
    1、生成ssl证书 ...docker run -it --rm -v /usr/local/elasticsearch/config/certs:/usr/share/elasticsearch/config/certs elasticsearch:6.8.13 bash # 进入证书保存目录 cd config/certs elasticsearch-c
  • Docker搭建Elasticsearch(ES)集群 1关闭防火墙 安装软件成功后要做端口映射,为了防止访问不到所以要关闭防火墙 关闭防火墙 systemctl stop firewalld.service 禁用防火墙 systemctl disable firewalld.service 2...
  • docker-compose搭建elasticsearch集群

    千次阅读 2020-07-06 19:14:54
    mkdir /home/wangyan/es/master/config && mkdir /home/wangyan/es/master/data && mkdir /home/wangyan/es/master/log && mkdir /home/wangyan/es/node1/config && mkdir /...
  • Docker 搭建 ElasticSearch7.x 集群

    千次阅读 2020-04-30 17:40:01
    Docker 搭建 ElasticSearch7.x 集群一.环境准备二.编写配置文件三.版本配置更新 *四.[配置完成即可参照5.x步骤继续](https://blog.csdn.net/zbdaowohao/article/details/105436668) 一.环境准备 mkdir -p ES/config ...
  • 使用docker搭建esElasticSearch集群 准备环境 在生产环境中在Docker中运行Elasticsearch时,以下要求和建议适用。 防止jvm报错:该vm.max_map_count内核设置必须至少设置为262144用于生产。 Linux系统: 该vm....
  • 前言 目前主要的一些 APM 工具有: Cat、...1、基于 Docker 安装 ElasticSearch DockerDocker-Compose安装 Centos7(Ubuntu18.04)安装Docker 创建目录 mkdir -p /usr/local/docker/skywalking docker-compose.yml v
  • 参考链接: http://www.manongjc.com/detail/14-bitvbzpdbvgoovk.html
  • ES集群搭建 一、环境准备 JDK 配置。 略 2. elasticsearch7.X开始需要java11,通常我们用jdk1.8作为共有环境变量,我们可以不安装 jdk11版本 。但启动会报错,因为与现有环境变量冲突。 敲黑板: es安装包包...
  • Linux基于Docker搭建Elasticsearch-7.6.0集群

    千次阅读 多人点赞 2020-02-29 12:40:33
    Linux基于Docker搭建Elasticsearch集群1、首先我们需要安装Docker2、下载镜像3、设置Elasticsearch挂载目录4、创建多个yml至data目录中5、开启端口或关闭防火墙6、安装并启动容器7、安装并启动Kibana容器8、检查...
  • 本文主要记录了如何在单机下通过docker-compsoe搭建Elasticsearch集群和相关插件。包含了:es集群(6.7.0)+ik分词器+kibana+head插件。 更多文章欢迎访问我的个人博客–>幻境云图 1. 概述 Elasticsearch是一个...
  • 适用人群 开发从业人员,大数据从业人员,运维从业人员,IT相关从业人员,想快速掌握技能的一切人员 课程概述 ElasticSearch7.x集群Elasticsearch-head7.x官网都没有的插件整合?cerebro插件酷炫暗黑插件神器?一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,466
精华内容 2,986
关键字:

es集群搭建docker