使用docker-compose 搭建es集群

news2024/12/24 11:39:54

首先需要安装docker,这里就略过了

在第一台机器上创建 docker-compose.yml 文件内容如下:

services:
  es:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2
    container_name: es
    environment:
      - bootstrap.memory_lock=true
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /path/to/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /path/to/es/data:/usr/share/elasticsearch/data
      - /path/to/es/log:/usr/share/elasticsearch/log
      - /path/to/es/plugins:/usr/share/elasticsearch/plugins
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - esnet

networks:
  esnet:
    driver: bridge

映射的配置文件如下:

# 指定集群名称3个节点必须一致
cluster.name: es-cluster
#指定节点名称,每个节点名字唯一
node.name: node-1
#是否有资格为master节点,默认为true
node.master: true
#是否为data节点,默认为true
node.data: true
# 绑定ip,开启远程访问,可以配置0.0.0.0
network.host: 0.0.0.0
# 如果是多台机器,需要指定本机IP
network.publish_host: 192.168.177.131
#指定web端口
http.port: 9200
#指定tcp端口
transport.tcp.port: 9300
#用于节点发现
discovery.seed_hosts: ["192.168.177.131", "192.168.177.132", "192.168.177.133"] 
#7.0新引入的配置项,初始仲裁,仅在整个集群首次启动时才需要初始仲裁。
#该选项配置为node.name的值,指定可以初始化集群节点的名称
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#解决跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"

另外的两台机器也一样

记得更换 node.name,每个节点唯一

cluster.name 集群唯一,也就是三台机器保持一致 

在 Docker Compose 文件中,ulimits 部分用于设置容器内进程的用户限制(user limits),这些限制与操作系统级别的资源限制相对应。ulimits 允许你调整容器内进程可以使用的资源量,比如文件描述符的数量、内存锁定的大小等。

对于ulimits 配置:

ulimits:
memlock:
soft: -1
hard: -1

这里,memlock 指的是内存锁定(memory locking)的限制。内存锁定是一种机制,允许进程将其部分或全部地址空间锁定在物理内存中,防止它们被交换(swapping)到磁盘上的交换空间(swap space)。这对于需要高性能和稳定延迟的应用程序(如数据库和搜索引擎)来说非常重要,因为它们依赖于快速访问内存中的数据。

  • soft 指的是软限制(soft limit),它是操作系统警告进程在超过此限制时应该采取行动的阈值。然而,在这个上下文中,将 soft 设置为 -1 通常意味着没有软限制,或者软限制被设置为尽可能大(尽管 -1 在某些上下文中可能表示“无限制”,但在 ulimits 的上下文中,它实际上被解释为容器可以使用的最大可能值,这取决于宿主机的限制)。

  • hard 指的是硬限制(hard limit),它是进程可以设置的资源使用的绝对上限。将 hard 设置为 -1 在这里同样意味着没有硬限制,或者硬限制被设置为尽可能大。然而,需要注意的是,-1 在这个上下文中可能不会被所有系统或工具直接解释为“无限制”,而是需要依赖于具体的实现和解释。实际上,在许多系统中,硬限制通常有一个最大值,而不是无限制的。

对于 memlock 来说,将 soft 和 hard 都设置为 -1(或尽可能大的值)是为了允许 Elasticsearch 容器锁定尽可能多的内存,从而避免其内存被交换到磁盘上,这有助于提高性能和稳定性。然而,需要注意的是,这样做可能会增加宿主机的内存压力,因为 Elasticsearch 容器将尝试使用尽可能多的内存,而不管宿主机的其他需求如何。因此,在设置这些限制时应该谨慎,并确保宿主机有足够的内存来满足所有运行中的容器和应用程序的需求。

在 docker-compose.yml 文件对应文件下面执行命令

docker compose up -d

报错1:lasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes]........

表示权限不足,出现 AccessDeniedException 错误通常意味着 Docker 容器中的 Elasticsearch 进程没有足够的权限去访问或修改指定的目录。在上面情况中,Elasticsearch 试图在 /usr/share/elasticsearch/data/nodes 下创建目录,但由于权限问题而失败。这个问题通常与 Docker 容器使用的用户权限和宿主机上目录的权限设置有关。

可以修改宿主机目录权限来解决

确保宿主机上的 /path/to/es/data 目录具有适当的权限,允许 Docker 容器内的用户(通常是 elasticsearch 或 root)访问和修改。可以尝试设置该目录的权限为更宽松的值,比如:

sudo chown -R 1000:1000 /path/to/es/data
sudo chmod -R 777 /path/to/es/data

注意:这里使用 1000:1000 是因为 Elasticsearch 官方镜像默认使用 UID 和 GID 为 1000 的用户。但是,使用 777 权限可能带来安全风险,仅作为测试使用。在生产环境中,应该确保只有必要的用户和组有权访问这些目录。

我这里就采用第一个了:sudo chown -R 1000:1000 /path/to/es/data

如果还是报错,清一下缓存再启动

docker compose down
docker compose up -d

错误2:ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

这个错误是由于 Elasticsearch 对虚拟内存区域(virtual memory areas)的数量有限制,而当前系统的 vm.max_map_count 设置太低,无法满足 Elasticsearch 的需求。Elasticsearch 需要大量的内存映射区域来优化其性能,特别是在处理大数据集时。

要解决这个问题,需要增加 vm.max_map_count 的值。这个设置通常需要在宿主机的操作系统上进行修改,因为它是一个系统级别的限制。以下是如何在 Linux 系统上修改这个设置的步骤:

  1. 临时修改(重启后失效):
    你可以通过运行以下命令来临时增加 vm.max_map_count 的值(以 root 用户执行):

    sudo sysctl -w vm.max_map_count=262144

    这个命令会立即生效,但重启后设置会丢失。

  2. 永久修改
    要永久修改这个值,你需要在 /etc/sysctl.conf 文件中添加一行配置,或者在 /etc/sysctl.d/ 目录下创建一个新的配置文件(如 99-elasticsearch.conf),并在其中添加以下行:

    vm.max_map_count=262144

    添加后,运行 sudo sysctl --system 或重启系统来应用更改。

我这里采用永久修改。

报错3:

出现这个错误,看一下配置中 network.publish_host: 192.168.177.131 是不是2忘记加了,加上之后重新启动就好了

最后使用 http://192.168.177.131:9200/_cat/nodes?v 验证:

或者 ​​​​ http://192.168.177.133:9200/_nodes/stats?pretty 查看:

到这里 docker 部署 es 集群就结束啦!!!

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

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

相关文章

精准定位:数字化营销的策略基石

在当今数字化时代,营销环境发生了巨大变化。精准定位已成为数字化营销的关键策略基石,对于企业实现高效营销、提升市场竞争力至关重要。 一、精准定位的重要性 1. 提高营销效率:通过精准定位目标客户群体,企业能够将有限的营销资…

【数据集】部分SAR舰船数据集,用于目标检测

SAR舰船目标检测数据集 1、SSDD 原文:https://sci-hub.se/10.1109/BIGSARDATA.2017.8124934 下载连接:https://github.com/TianwenZhang0825/Official-SSDD/blob/main/README.md 数据介绍: 数量:1160 来源:RadarSat-…

Golang | Leetcode Golang题解之第357题统计各位数字都不同的数字个数

题目&#xff1a; 题解&#xff1a; func countNumbersWithUniqueDigits(n int) int {if n 0 {return 1}if n 1 {return 10}ans, cur : 10, 9for i : 0; i < n-1; i {cur * 9 - ians cur}return ans }

大小端字节序存储介绍

我们知道整形在内存中的存储方式了&#xff0c;但是在VS编译器里发现好像顺序不一样&#xff0c;类如&#xff1a; 这里就涉及到大小端字节序存储了。 什么是大端小端 大端存储模式&#xff1a;是指数据的低位保存在内存的高地址中&#xff0c;数据的高位&#xff0c;保存在内…

《黑神话:悟空》的AI技术解析:游戏智能的新境界

2024 年 8 月的第三周&#xff0c;哪哪都是悟空的声音&#xff0c;让我一度想起当年国足打进世界杯&#xff0c;学校不上课组织看球的场景。 从我个人情感而言&#xff0c;《黑神话&#xff1a;悟空》带来的震撼&#xff0c;惊喜和冲击不亚于当年国足在世界杯赛场上跟巴西踢球。…

海康VisionMaster使用学习笔记16-使用通信切换方案

使用通信切换方案 在VisionMaster中&#xff0c;用户可以使用通信功能来进行方案的切换&#xff0c;该使用方式能提升生产现场的自动化程度&#xff0c;便于VisionMaster与其他设备进行协同操作。 本文介绍VisionMaster中使用通信切换方案的基本操作步骤。以VisionMaster 4.2…

一家餐饮店的流量之路:以“铁哥饭店”为例,探索私域流量增长的深度策略

摘要&#xff1a;本文深入剖析了位于五线城市的小型餐厅“铁哥饭店”在面临流量增长困境时的具体挑战&#xff0c;并通过详细分析其原因&#xff0c;结合当前互联网营销的最新趋势与工具&#xff0c;如“21链动模式”、“AI智能名片”及“S2B2C商城小程序”&#xff0c;提出了一…

收银系统源码-【满额立减】功能介绍

连锁店收银系统源码—多商户平台入驻商城已上线-CSDN博客文章浏览阅读1k次。零售行业连锁店收银管理系统多商户入驻本地生活即时零售平台商城https://blog.csdn.net/V15850290240/article/details/141310629 详细介绍请查看上方文章↑↑↑ 详细介绍请查看上方文章↑↑↑ 详细…

汽车冷却液温度传感器的作用与检测方法

汽车冷却系统中的关键部件之一是冷却液温度传感器&#xff0c;它的位置通常在发动机的缸体或水泵附近&#xff0c;与冷却液直接接触。该传感器的作用是监测发动机冷却液的温度&#xff0c;它采用负温度系数热敏电阻&#xff0c;这种电阻随温度升高而降低。当冷却液温度达到预定…

【信创】全面揭秘Linux操作系统中的DNS解析流程 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【信创】全面揭秘Linux操作系统中的DNS解析流程 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于Linux操作系统上DNS解析的第一篇文章。DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;是互联网的…

容器篇(JavaSE - 单列集合)(持续更新迭代)

作者&#xff1a;研J小政 课堂&#xff1a;wclass &#xff08;有什么弊端请私信我&#xff0c;目前参考众多资料精华整理过程过中&#xff09; 章节&#xff1a;单列集合&#xff01; 进度&#xff1a;持续更新迭代&#xff01; 录课状态&#xff1a;待录 参考文献 有意…

GLM-4开源发布:实力赶超Llama3,多模态能力媲美GPT4V,MaaS平台全面升级

最新版本大模型&#xff0c;6 分钱 100 万 Token。 今天上午&#xff0c;在 AI 开放日上&#xff0c;备受关注的大模型公司智谱 AI 公布了一系列行业落地数字&#xff1a; 根据最新的统计数据&#xff0c;智谱 AI 大模型开放平台目前已经获得 30 万注册用户&#xff0c;日均调用…

GPT4的代码生成能力能不能取代一个月薪5000水平的码农?

GPT-4 的代码生成能力确实非常强大&#xff0c;但它是否能取代一个月薪 5000 元水平的码农&#xff0c;还要看具体情况。以下是几个关键点&#xff1a; 代码质量和复杂性&#xff1a;GPT-4 &#xff08;升级教程&#xff09;可以生成很多常见的代码片段和解决方案&#xff0c;…

【CSP:202305-1】重复局面(Java)

题目链接 202305-1 重复局面 题目描述 样例输入&#xff1a; 8 ******** ******pk *****r*p p*pQ**** ******** **b*B*PP ****qP** **R***K* ******** ******pk *****r*p p*pQ**** *b****** ****B*PP ****qP** **R***K* ******** ******pk *****r*p p*p***** *b**Q*** ****B…

FPGA第 6 篇,PFGA基础数字电路,PFGA基础知识数字电路, 组合逻辑电路和时序逻辑电路,数字电路与模拟电路

前言 FPGA&#xff08;Field-Programmable Gate Array&#xff0c;现场可编程门阵列&#xff09;是一种高度灵活的硬件器件&#xff0c;可以通过编程配置其内部的逻辑单元和连接&#xff0c;适用于各种数字电路设计和实现。在学习FPGA之前&#xff0c;掌握数字电路的基础知识是…

【AI】Ollama+OpenWebUI+llama3本地部署保姆级教程,没有连接互联网一样可以使用AI大模型!!!

1 电脑配置 操作系统CPU内存Windows 10以上12核16GB 2 安装Ollama 2.1 下载Ollama 登录Ollama官网下载Ollama安装包 GitHub&#xff1a;https://github.com/ollama/ollama?tabreadme-ov-file 2.2 安装Ollama Windows下安装Ollama很简单&#xff0c;双击运行安装文件即…

ES6笔记总结(Xmind格式):第三天

Xmind鸟瞰图&#xff1a; 简单文字总结&#xff1a; ES6知识总结&#xff1a; Promise的使用: 1.使用 new Promise() 构造函数来创建一个 promise 对象 2.接受两个函数作为参数&#xff1a;resolve 和 reject ①resolve 函数在异步操作成功完成时调用&#xf…

[000-01-022].第06节:RabbitMQ中的交换机介绍

1.什么是Exchanges(交换机&#xff09;: 1.RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上&#xff0c;通常生产者甚至都不知道这些消息传递传递到了哪些队列中2.生产者只能将消息发送到交换机(exchange)&#xff0c;交换机工作的内容非常…

Axure版需求文档:原型版PRD模板

行业原型预览链接&#xff1a;&#xff08;请与班主任联系获取原型文档&#xff09; 文件类型&#xff1a;.rp 支持版本&#xff1a;Axrure RP 8 文档名称&#xff1a;Axure需求规格说明书-PRD模版 文件大小&#xff1a;3.50 MB 目录内容介绍 文档内容介绍 回复 “211103”…

设计师具备怎样的专业素养,才能走得更远?

设计师具备怎样的专业素养&#xff0c;才能走得更远&#xff1f; 带着这样的思考&#xff0c;我们邀请到莱佛士设计学院知名校友Regina Fang——新加坡独立品牌NEWFOUND纽方品牌创始人&#xff0c;为大家解读设计师在学习技能以及创业的过程&#xff0c;需要具备怎样的专业素养…