Docker 搭建一个Elasticsearch 7.5.1集群+kibana 7.5.1

1.docker安装elasticsearch 7.5.1

  • 拉取镜像

    docker pull elasticsearch:7.5.1
  • 创建网络

    如果需要安装kibana等其他,需要创建一个网络,名字任意取,让他们在同一个网络,使得es和kibana通信

    docker network create esnet(这个名字可以自定义,但是注意启动kibana是名字保持一致)
  • 创建数据卷

    此处为了docker容器删除或者其他异常情况,将ES的重要数据挂载到宿主机

    # 查看当前数据局列表
    docker volume ls
    # 创建数据卷
    docker volume create es-1(名字自拟)
    # 查看数据卷信息
    docker volume inspect es-1

    对应的ES节点挂载到对应的数据卷

  • 将数据卷在宿主机的文件授权
    通过上面查看数据卷信息命令可以看到数据卷具体在宿主的位置
    一般在/var/lib/docker/volumes下
    授权命令:chmod 777 文件夹

    这个操作主要是后面启动ES时需要进行写入操作

  • 启动ES容器

    本次搭建一个伪集群

    # 启动第一个
    docker run --name es-1 -d -p 9200:9200 -p 9300:9300 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-1/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98
    # 启动第二个
    docker run --name es-2 -d -p 9201:9201 -p 9301:9301 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-2/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98
    #启动第三个
    docker run --name es-3 -d -p 9202:9202 -p 9302:9302 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-3/_data,dst=/usr/share/elasticsearch/data 2bd69c322e98

    在此处启动时一般会出现如下错误:

    ERROR: [2] bootstrap checks failed
    [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

    第一个问题可以通过如下命令解决

    sysctl -w vm.max_map_count=262144

    第二个问题则需要通过配置ES的配置文件,当然也可以通过参数输入的方式(-e "")

    但亲测时这样创建的集群clusteruuid将会是"_na",这样节点接不能互通

    ES的配置文件路径:/usr/share/elasticsearch/config

    #集群名称
    cluster.name: my
    #节点名称
    node.name: node-1
    #是不是有资格主节点
    node.master: true
    #是否存储数据
    node.data: true
    #最?集群节点数
    node.max_local_storage_nodes: 3
    #?关地址
    network.host: 0.0.0.0
    # 设置其它结点和该结点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址
    # 如果是docker安装节点的IP将会是配置的IP而不是docker网管ip
    network.publish_host: 192.168.172.128
    #端?
    http.port: 9200
    #内部节点之间沟通端?
    transport.tcp.port: 9300
    #es7.x 之后新增的配置,写?候选主节点的设备地址,在开启服务后可以被选为主节点
    discovery.seed_hosts: ["192.168.172.128:9300","192.168.172.128:9301","192.168.172.128:9302"]
    #es7.x 之后新增的配置,初始化?个新的集群时需要此配置来选举master
    cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
    #数据和存储路径
    path.data: /usr/share/elasticsearch/data
    path.logs: /usr/share/elasticsearch/logs
    
    # 解决跨域问题
    http.cors.enabled: true
    http.cors.allow-origin: "*"
  • 检验是否安装成功
    http://192.168.172.128:9200/_cat/nodes
    
    192.168.172.128 29 46 4 0.01 0.12 0.34 dilm - node-3
    192.168.172.128 20 46 3 0.01 0.12 0.34 dilm - node-1
    192.168.172.128 21 46 3 0.01 0.12 0.34 dilm * node-2
    
    带*的节点就是master

2.docker安装kibana

  • 拉取镜像

    docker pull kibana:7.5.1(注意版本)
  • 由于前面已经创建过网络,启动kibana
    docker run -d --name kibana --net esnet -p 5601:5601 2d043e33afa4
  • 安装好kibana后直接通过下列方式访问会抛出错误
    curl http://localhost:5601
  • 错误如下
    Kibana server is not ready yet
  • 修改kibana配置文件kibana.yml

    配置文件路径:/usr/share/kibana/config

    #
    # ** THIS IS AN AUTO-GENERATED FILE **
    #
    
    # Default Kibana configuration for docker target
    server.name: kibana
    server.host: "0"
    elasticsearch.hosts: [ "http://192.168.172.128:9200","http://192.168.172.128:9201","http://192.168.172.128:9202" ]
    xpack.monitoring.ui.container.elasticsearch.enabled: true

3.kibana客户端查看ES集群

http://192.168.172.128:5601/

进行查看

选择红框选项,因为上面的选项需要配置一些私密钥之类的

4.补充知识

集体的docker容器操作可以查看本人的另一篇博文:<https://blog.51cto.com/9844951/2469349&gt;

原文地址:https://blog.51cto.com/9844951/2471039

时间: 2024-07-29 17:26:48

Docker 搭建一个Elasticsearch 7.5.1集群+kibana 7.5.1的相关文章

搭建一个分布式MongoDB鉴权集群

今天休假在家,测试并搭建了一个replica set shard MongoDB鉴权集群.replica set shard 鉴权集群中文资料比较少,本文是个人笔记,同时也希望对后来者有所帮助.本文仅是搭建步骤和Q&A,用于实际工作中的使用查阅,阅读者需要有分布式集群的理论基础. 关键字:Replica-Set Shard 副本 分片 鉴权 KeyFile auth MongoDB根据部署的不同,有两种添加鉴权的方式,分别是单实例的鉴权方式和KeyFile的鉴权方式.两种方式的共同点都是,先在没

(二)搭建一个完成的Kubernetes/K8s集群v.1.16

单节点集群多节点集群 注意node通过连接loadbalancer 转发到mateter 的apiserver来进行运作的 集群规划: 角色 ip 组件 K8S-master1 192.168.0.101 kube-apiserver kube-controller-manager kube-scheduleretcd K8S-master2 192.168.0.102 kube-apiserver kube-controller-manager kube-scheduleretcd K8S-n

搭建一个三台服务器的Memcached集群

关于memcached的基础知识可以查看博客其他博文,这里只记录了搭建的过程,谢谢! 1.分别在三台服务器上安装Memcached并启动 第一.由于memcached是基于libevent的事件处理,所以需要安装libevent yum install libevent libevent-devel 第二.上传Memcached到三台服务器(192.168.176.129/192.168.176.130/192.168.176.131)解压并安装 tar -zxvf memcached-1.2.

手把手教你搭建一个Elasticsearch集群

一.为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? (1)高可用性 Elasticsearch 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步我们需要保证的就是 Elasticsearch 的高可用性,什么是高可用性呢?它通常是指,通过设计减少系统不能提供服务的时间.假设系统一直能够提供服务,我们说系统的可用性是 100%.如果系统在某个时

手把手教你搭建一个 Elasticsearch 集群

为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? 高可用性 Elasticsearch 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步我们需要保证的就是 Elasticsearch 的高可用性,什么是高可用性呢?它通常是指,通过设计减少系统不能提供服务的时间.假设系统一直能够提供服务,我们说系统的可用性是 100%.如果系统在某个时刻宕掉了,

搭建一个Elasticsearch集群

一.为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? (1)高可用性 Elasticsearch 作为一个搜索引擎,我们对它的基本要求就是存储海量数据并且可以在非常短的时间内查询到我们想要的信息.所以第一步我们需要保证的就是 Elasticsearch 的高可用性,什么是高可用性呢?它通常是指,通过设计减少系统不能提供服务的时间.假设系统一直能够提供服务,我们说系统的可用性是 100%.如果系统在某个时

搭建ELK日志分析平台-分布式集群

ELK安装准备工作准备3台机器,这样才能完成分布式集群的实验,当然能有更多机器更好:配置三台机器的hosts文件内容如下:vim /etc/hosts192.168.254.133 master-node192.168.254.134 data-node1192.168.254.135 data-node2角色划分:? 3台机器全部安装jdk1.8,因为elasticsearch是java开发的? 3台全部安装elasticsearch (后续都简称为es)? 192.168.254.133 作

RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群

本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本文使用VMware虚拟机的克隆功能克隆了两台服务器进行操作,仅作为一个demo,开发中可根据实际情况进行调整. 首先看下RabbitMQ高可用负载均衡集群长什么样子: 使用Docker构建RabbitMQ高可用负载均衡集群大概分为三个步骤: 启动多个(3个为例)RabbitMQ,构建RabbitMQ

keepalived+nginx搭建高可用and负载均衡集群

keepalived+nginx搭建高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worke