使用docker构建ElasticSearch集群

news2024/11/30 1:53:15

目录

一、准备工作

二、编写docker-compose.yml

三、编写ElasticSearch和kibana的配置文件

四、执行构建ElasticSearch集群

五、验证结果:

六、可视化工具

ElasticSearch可视化工具介绍(elasticsearch-head、kibana、elasticHD)

一、elasticsearch-head

二、kibana

三、elasticHD


一、准备工作

1、拉取ElasticSearch镜像

docker pull elasticsearch:7.14.1
docker tag docker.io/elasticsearch:7.14.1 elasticsearch
docker rmi docker.io/elasticsearch:7.14.1

2、创建相关文件夹,用于存放配置文件

mkdir -p /data//docker-compose/elasticsearch
mkdir -p /data/docker-data/elasticsearch/101/config
mkdir -p /data/docker-data/elasticsearch/102/config
mkdir -p /data/docker-data/elasticsearch/103/config

3、赋予文件夹权限

chmod -R 777 /data/docker-data/elasticsearch

ElasticSearch对共享目录的文件夹权限有要求,因此这里为共享目录设置权限

4、将当前用户的内存权限变大

查看当前用户的内存权限
sysctl -a|grep vm.max_map_count
# 显示 vm.max_map_count = 65530

elasticsearch要求该值至少是262144,否则会报错,max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

# 将用户拥有的内存权限增大
sysctl -w vm.max_map_count=262144

 

二、编写docker-compose.yml

cd /data/docker-compose/elasticsearch
vi docker-compose.yml

version: '3.6'
services:
  es_101:
    image: elasticsearch
    container_name: es_101
    hostname: es_101
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /data/docker-data/elasticsearch/101/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /data/docker-data/elasticsearch/101/data:/usr/share/elasticsearch/data
    privileged: true
    ports:
      - 9201:9200
      - 9301:9300

  es_102:
    image: elasticsearch
    container_name: es_102
    hostname: es_102
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /data/docker-data/elasticsearch/102/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /data/docker-data/elasticsearch/102/data:/usr/share/elasticsearch/data
    privileged: true
    ports:
      - 9202:9200
      - 9302:9300

  es_103:
    image: elasticsearch
    container_name: es_103
    hostname: es_103
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /data/docker-data/elasticsearch/103/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /data/docker-data/elasticsearch/103/data:/usr/share/elasticsearch/data
    privileged: true
    ports:
      - 9203:9200
      - 9303:9300

 

三、编写ElasticSearch和kibana的配置文件

cd /data/docker-data/elasticsearch/101/config
vi elasticsearch.yml

cluster.name: es_cluster
node.name: es_101
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["es_101","es_102","es_103"]
discovery.zen.minimum_master_nodes: 1
cluster.initial_master_nodes: es_101
http.cors.enabled: true
http.cors.allow-origin: "*"
cd /data/docker-data/elasticsearch/102/config
vi elasticsearch.yml

cluster.name: es_cluster
node.name: es_102
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.unicast.hosts: ["es_101","es_102","es_103"]
http.cors.enabled: true
http.cors.allow-origin: "*"
cd /data/docker-data/elasticsearch/103/config
vi elasticsearch.yml

cluster.name: es_cluster
node.name: es_103
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.unicast.hosts: ["es_101","es_102","es_103"]
http.cors.enabled: true
http.cors.allow-origin: "*"

 

四、执行构建ElasticSearch集群

1、开始构建

cd /data/docker-compose/elasticsearch
docker-compose up -d

此时,因为没有授予共享目录文件夹权限,因此es集群其实是启动不成功的

2、授予文件夹权限

chmod -R 777 /data/docker-data/elasticsearch/

3、重新执行构建

cd /data/docker-compose/elasticsearch
docker-compose restart

 

五、验证结果:

宿主机:192.168.78.200

访问192.168.78.200:9201 或 192.168.78.200:9202 或 192.168.78.200:9203

返回下面结果:

// 20210927041419
// http://192.168.78.200:9201/

{
  "name": "es_101",
  "cluster_name": "es_cluster",
  "cluster_uuid": "_KgoQSikS6StSHpBK4Yr0Q",
  "version": {
    "number": "7.14.1",
    "build_flavor": "default",
    "build_type": "docker",
    "build_hash": "66b55ebfa59c92c15db3f69a335d500018b3331e",
    "build_date": "2021-08-26T09:01:05.390870785Z",
    "build_snapshot": false,
    "lucene_version": "8.9.0",
    "minimum_wire_compatibility_version": "6.8.0",
    "minimum_index_compatibility_version": "6.0.0-beta1"
  },
  "tagline": "You Know, for Search"
}

说明集群搭建成功了。

六、可视化工具

ElasticSearch可视化工具介绍(elasticsearch-head、kibana、elasticHD)

一、elasticsearch-head

1、拉取镜像

docker pull mobz/elasticsearch-head:5
docker tag docker.io/mobz/elasticsearch-head:5 es_head
docker rmi docker.io/mobz/elasticsearch-head:5

2、创建容器

docker run -itd --name es_head -p 9100:9100 es_head

3、访问 192.168.78.200:9100

4、通过postman添加为es集群添加一个索引

测试json:


{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 1
    },
    "mappings": {
        "properties": {
            "id": {
                "type": "keyword"
            },
            "country": {
                "type": "keyword"
            },
            "remark": {
                "type": "text"
            }
        }
    }
}

5、我们再访问192.168.78.200:9100,查看结果:

6、总结及注意

通过elasticsearch-head,我们可以清晰看到数据分片情况,这点是kibana做不到的,后续使用时会有深刻感受,二者结合才是王道。

注意:如果这一步没有添加成功,返回结果是{ "acknowledged": true, "shards_acknowledged": false} ,那很有可能是磁盘空间不足了。

使用df -h命令查看一下,超过95%使用率,es就不会再允许往es里写数据了。

 

二、kibana

1、拉取镜像

docker pull kibana:7.14.1
docker tag docker.io/kibana:7.14.1 kibana
docker rmi docker.io/kibana:7.14.1

2、创建容器

docker run -itd --name kibana --network elasticsearch_default --link es_101:elasticsearch -p 5800:5601 kibana

注意,我这里指定了kibana容器和es集群的三个容器使用了同一个网络,所以可以直接用容器名做外连,将kibana内部配置文件中的elasticsearch直接解析为es_101。

如果不指定使用es的网络,则需要进入容器内配置ElasticSearch的实际ip地址

3、查看结果

访问 http://192.168.78.200:5800/app/dev_tools#/console

 

三、elasticHD

1、下载镜像

docker pull containerize/elastichd
docker tag docker.io/containerize/elastichd elastichd
docker rmi docker.io/containerize/elastichd

2、创建容器

docker run -p 5900:9800 -d --network elasticsearch_default --link es_101:demo elastichd

3、查看结果

访问 http://192.168.78.200:5900

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/528025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTF权威指南 笔记 -第四章Linux安全机制-4.1-Stack Canaries

目录 Stack Canaries 简介 我们进行简单的例子 64 32 checksec Stack Canaries 是对抗栈溢出攻击的技术 SSP安全机制 Canary 的值 栈上的一个随机数 在程序启动时 随机生成并且保存在比返回地址更低值 栈溢出是从低地址向高地址进行溢出 如果攻击者要攻击 就一定要覆…

电动力学专题:圆柱形导体中趋肤效应

电动力学分析 金属导体内的电流密度方程 由Maxwell方程组导出Helmhltz方程 对于良导体,有\sigma/(\omega \eprsilon),因此有 圆柱形导线中电流密度分布 设电流沿Z轴方向流动,均匀导体,可简化为 通解: 安培环路定理 定态电磁波的Maxwell方程组 贝塞尔函数性质&…

【SQL】作为前端,应该了解的SQL知识(第三弹)

📑视图 使用表时,会将数据保存在存储设备(硬盘上) 而使用视图时,并不会将数据保存在存储设备上,也不会将数据保存在任何地方。 视图里面保存的是 从表中取出数据所使用的SELECT语句(视图中的…

zhangrelay博客置顶三篇点击量分析

230515只有三篇置顶,如下: 分别为: 20.03.13 : 901522.01.12 :1372923.04.15 :18836 熟悉zhangrelay博客风格的AI都清楚,他的博客内容都是筛选和设计过的。 置顶三篇阅读量差值为&#xff1…

C++--AVL树的插入,详解四种旋转规则(结尾附源代码链接)

AVL树的插入 前言左单旋右单旋左右双旋右左双旋检查是否这颗树是否是AVL树 前言 AVL树可以说是对二叉搜索树的优化,我们来看二叉树搜索树的下一面一种特殊情况: 当我们插入的数是上面的情况时,二叉树搜索树的特点就形同虚设了,这…

ChatGpt 2步制作流程图与思维导图,你确定不来看一下吗?

什么?你还不会使用ChatGpt。推荐下面这篇文章 ChatGPT保姆级教程,一分钟学会使用ChatGPT! - 掘金 (juejin.cn) 如果没有谷歌账号推荐直接买一个,因为你在中国注册谷歌账号,被谷歌查到,也是使用不了ChatGp…

企业数字化转型过程中面临最大的挑战和问题是什么?

无论组织规模如何,业务的敏捷性、弹性以及生产力的高低都是决定其发展运营成功与否的关键因素。而一个良好的数字化转型战略则是企业发展进步的有力助推器。 麦肯锡称,借助数字化转型,可以实现 20% 至 50% 的经济收益和 20% 至 30% 的客户满…

【Spring Cloud Alibaba】Nacos的安装与介绍以及Nacos集群的安装

欢迎来到 Nacos 的世界! Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性…

shell构建基本脚本

构建基本脚本 使用多个命令 一次使用多个命令,把它们放在一行,使用’;隔开 [rootmyserver ~]# date ; who; ls Sun May 14 23:39:34 CST 2023 root pts/0 2023-05-14 23:31 (192.168.10.1) anaconda-ks.cfg initial-setup-ks.cfg创建shel…

JavaScript学习-DOM事件进阶

事件流 事件流和两个阶段说明 事件流指的是事件完整执行过程中的流动路径 说明:假设页面里有个div,当触发事件时,会经历两个阶段,分别是捕获阶段、冒泡阶段 简单来说:捕获阶段是 从父到子 冒泡阶段是从子到父 或者说从大的往下的是捕获&am…

阿里云服务器如何安装宝塔面板?

使用阿里云服务器安装宝塔面板教程,阿里云服务器网以CentOS操作系统为例,安装宝塔Linux面板,先远程连接到云服务器,然后执行宝塔面板安装命令,系统会自动安装宝塔面板,安装完成后会返回面板地址、账号和密码…

前端有必要掌握TypeScript吗,答案十分肯定

本文首发自「慕课网」(www.imooc.com),想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"或慕课网公众号! 作者:一飞同学 | 慕课网讲师 近几年,前端技术发展越来越迅…

亚马逊云科技助力医疗与生命科学行业,提供高性能计算(HPC)

2023年4月27日,亚马逊云科技医疗与生命科学行业峰会召开。会议上,亚马逊云科技大中华区战略业务发展部总经理顾凡表示:“亚马逊云科技不仅提供覆盖全球的云基础设施以及超过200大类的云服务,更重要的是,我们深刻了解行…

Agisoft Metashape 卫星图像处理

Agisoft Metashape 利用卫星图像创建三维模型 文章目录 Agisoft Metashape 利用卫星图像创建三维模型前言一、添加图像二、对齐图像三、构建 DEM四、生成平铺模型前言 Agisoft Metashape Professional 支持处理带RPC参数的立体卫星图像。支持的卫星数据有:Beijing-3A, Ikonos…

Flash钓鱼->CS上线(免杀过火绒、360等)

先看结果 访问钓鱼页面: 点击立即升级即把马儿下载下来了 这个马儿是rar压缩的,做成的rar解压自启动,所以是个exe的文件,然后这里为了像一点,把图标给改了 双击运行,查看效果: 首先CS是没东西的 解压路…

UNITY3D 5V5网游开发案例教程

文章连载更新中,可以提前领取素材进行预习,自学 素材领取:私信发送 领取RPG网络开发教材 这里写目录标题 游戏玩法这门课适合哪些人学习学完了能达到什么效果项目准备基础系统战斗系统同步设计精讲社交系统副本系统优化项目准备正文美术准备&…

服务(第二十三篇)mysql-mha

1、什么是 MHA MHA(Master High Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过程中最大…

UnityWebSocket | 双端通信支持Text/Binary

跳转官方仓库地址 有多个项目使用该库,平台有PC、WebGL。 一、说明 1)原理 WebSocket是H5提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。数据通常在两个站(点对点)之间进行传输,按照…

动态规划:01背包理论基础 二维dp

1.确定dp数组以及下标的含义 对于背包问题,有一种写法, 是使用二维数组,即dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。[0-i]物品任取放到容量为j的背包中得到的最大价值为dp[i…

想要上手playwright?看这篇文章就够了!(文章有点长,建议收藏)

本文系统地介绍了playwright的基础概念,架构,安装过程,编码demo(python实例),常用API,录制脚本的方法以及playwright在无头模式的应用和其与selenium的对比。相信大家认真阅读本文后一定会对pla…