Docker部署ES集群

引言:

Elasticsearch(ES)作为分布式搜索引擎,其核心价值在于通过集群部署实现高可用性和数据冗余。 本实验对比两种典型部署方案: 原生Linux部署:直接安装ES服务,适用于生产环境,资源利用率高,但需手动管理多节点。 Docker容器化部署:通过容器快速搭建集群,适合测试或动态扩展场景,具备资源隔离和快速回滚优势。 掌握原生Linux环境下ES集群(≥2节点)的搭建与配置。

克隆一台新虚拟机(ip10.1.1.42)

也需关闭Slinux和防火墙

一. 创建集群所需要的目录

1.1 创建ES的挂载目录

mkdir -p /usr/local/elasticsearch_jiqun_3_node/node-{1..3}/{config,plugins,data,log}

chmod 777 /usr/local/elasticsearch_jiqun_3_node/node-{1..3}/{config,plugins,data,log}

mkdir -p /usr/local/elasticsearch_jiqun_3_node/node-{1..3}/{config,plugins,data,log}
chmod 777 /usr/local/elasticsearch_jiqun_3_node/node-{1..3}/{config,plugins,data,log}

1.2 创建kibana的挂载目录

mkdir -p /usr/local/elasticsearch_jiqun_3_node/kibana/config/

chmod 777 /usr/local/elasticsearch_jiqun_3_node/kibana/config/

mkdir -p /usr/local/elasticsearch_jiqun_3_node/kibana/config/
chmod 777 /usr/local/elasticsearch_jiqun_3_node/kibana/config/

二.修改Linux的句柄数

vim /etc/sysctl.conf

添加如下内容:(vm.max_map_count=655360)

接下来再关闭swap

swapoff -a

三.修改最大线程数

因为ES运行期间可能创建大量线程,如果线程数支持较少可能报错

vim /etc/security/limits.conf

# 添加以下内容

* soft nofile 65536

* hard nofile 131072

* soft nproc 4096

* hard nproc 4096

# 添加以下内容
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096

重启

reboot

四.添加IK分词器

下载方式1
链接: https://pan.baidu.com/s/1zxetPFZyRPyxwFFIL113DQ 提取码: 9m6a

下载方式2

github中下载对应版本的分词器,网址:Releases · infinilabs/analysis-ik · GitHub

将下载的分词器复制到ES安装目录的plugins目录中并进行解压

将这个ik目录分别添加到ES的三个节点的plugins目录里

cp -R ik/* /usr/local/elasticsearch_jiqun_3_node/node-1/plugins/

cp -R ik/* /usr/local/elasticsearch_jiqun_3_node/node-2/plugins/

cp -R ik/* /usr/local/elasticsearch_jiqun_3_node/node-3/plugins/

cp -R ik/* /usr/local/elasticsearch_jiqun_3_node/node-1/plugins/
cp -R ik/* /usr/local/elasticsearch_jiqun_3_node/node-2/plugins/
cp -R ik/* /usr/local/elasticsearch_jiqun_3_node/node-3/plugins/

五. 编写配置文件

5.1 节点文件

Node-1

vi /usr/local/elasticsearch_jiqun_3_node/node-1/config/elasticsearch.yml

cluster.name: elastic

node.name: node-1

node.master: true

node.data: true

node.max_local_storage_nodes: 3

path.data: /usr/share/elasticsearch/data

path.logs: /usr/share/elasticsearch/log

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.seed_hosts: ["node-1","node-2","node-3"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

gateway.recover_after_nodes: 2

xpack.security.enabled: false

cluster.name: elastic
node.name: node-1
node.master: true
node.data: true
node.max_local_storage_nodes: 3
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/log
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["node-1","node-2","node-3"]
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
gateway.recover_after_nodes: 2
xpack.security.enabled: false

Node-2

vi /usr/local/elasticsearch_jiqun_3_node/node-2/config/elasticsearch.yml

cluster.name: elastic

node.name: node-2

node.master: true

node.data: true

node.max_local_storage_nodes: 3

path.data: /usr/share/elasticsearch/data

path.logs: /usr/share/elasticsearch/log

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.seed_hosts: ["node-1","node-2","node-3"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

gateway.recover_after_nodes: 2

xpack.security.enabled: false

cluster.name: elasticnode.name: node-2node.master: truenode.data: truenode.max_local_storage_nodes: 3path.data: /usr/share/elasticsearch/datapath.logs: /usr/share/elasticsearch/lognetwork.host: 0.0.0.0http.port: 9200transport.tcp.port: 9300discovery.seed_hosts: ["node-1","node-2","node-3"]cluster.initial_master_nodes: ["node-1","node-2","node-3"]gateway.recover_after_nodes: 2xpack.security.enabled: false

Node-3

vi /usr/local/elasticsearch_jiqun_3_node/node-3/config/elasticsearch.yml

cluster.name: elastic

node.name: node-3

node.master: true

node.data: true

node.max_local_storage_nodes: 3

path.data: /usr/share/elasticsearch/data

path.logs: /usr/share/elasticsearch/log

network.host: 0.0.0.0

http.port: 9200

transport.tcp.port: 9300

discovery.seed_hosts: ["node-1","node-2","node-3"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

gateway.recover_after_nodes: 2

xpack.security.enabled: false

cluster.name: elastic
node.name: node-3
node.master: true
node.data: true
node.max_local_storage_nodes: 3
path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/log
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["node-1","node-2","node-3"]
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
gateway.recover_after_nodes: 2
xpack.security.enabled: false

该配置文件定义了 3 个 Elasticsearch 节点,它们组成一个集群,每个节点都将数据存储在独立的卷上。

5.2 Kibana文件

vi  /usr/local/elasticsearch_jiqun_3_node/kibana/config/kibana.yml

server.host: 0.0.0.0

# 监听端口

server.port: 5601

server.name: "kibana"

# kibana访问es服务器的URL,就可以有多个,以逗号","隔开

elasticsearch.hosts: ["http://node-1:9200","http://node-2:9201","http://node-3:9202"]

monitoring.ui.container.elasticsearch.enabled: true

# kibana访问Elasticsearch的账号与密码(如果ElasticSearch设置了的话)

elasticsearch.username: "kibana"

elasticsearch.password: "12345"

# kibana日志文件存储路径

logging.dest: stdout

# 此值为true时,禁止所有日志记录输出

logging.silent: false

# 此值为true时,禁止除错误消息之外的所有日志记录输出

logging.quiet: false

# 此值为true时,记录所有事件,包括系统使用信息和所有请求

logging.verbose: false

ops.interval: 5000

# kibana web语言

i18n.locale: "zh-CN"

5.3 编写Docker部署文档

cd /usr/local/elasticsearch_jiqun_3_node/

vi docker-compose.yml

version: "3"
services:node-1:image: elasticsearch:7.17.5container_name: es_jiqun_3node-node-1environment:- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"- "TZ=Asia/Shanghai"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536ports:- "9200:9200"logging:driver: "json-file"options:max-size: "50m"volumes:- /usr/local/elasticsearch_jiqun_3_node/node-1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /usr/local/elasticsearch_jiqun_3_node/node-1/plugins:/usr/share/elasticsearch/plugins- /usr/local/elasticsearch_jiqun_3_node/node-1/data:/usr/share/elasticsearch/data- /usr/local/elasticsearch_jiqun_3_node/node-1/log:/usr/share/elasticsearch/lognetworks:- elasticnode-2:image: elasticsearch:7.17.5container_name: es_jiqun_3node-node-2environment:- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"- "TZ=Asia/Shanghai"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536ports:- "9201:9200"logging:driver: "json-file"options:max-size: "50m"volumes:- /usr/local/elasticsearch_jiqun_3_node/node-2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /usr/local/elasticsearch_jiqun_3_node/node-2/plugins:/usr/share/elasticsearch/plugins- /usr/local/elasticsearch_jiqun_3_node/node-2/data:/usr/share/elasticsearch/data- /usr/local/elasticsearch_jiqun_3_node/node-2/log:/usr/share/elasticsearch/lognetworks:- elasticnode-3:image: elasticsearch:7.17.5container_name: es_jiqun_3node-node-3environment:- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"- "TZ=Asia/Shanghai"ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536ports:- "9202:9200"logging:driver: "json-file"options:max-size: "50m"volumes:- /usr/local/elasticsearch_jiqun_3_node/node-3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /usr/local/elasticsearch_jiqun_3_node/node-3/plugins:/usr/share/elasticsearch/plugins- /usr/local/elasticsearch_jiqun_3_node/node-3/data:/usr/share/elasticsearch/data- /usr/local/elasticsearch_jiqun_3_node/node-3/log:/usr/share/elasticsearch/lognetworks:- elastickibana:container_name: es_jiqun_3node_node-kibanaimage: kibana:7.17.5volumes:- /usr/local/elasticsearch_jiqun_3_node/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.ymlports:- 5601:5601networks:- elasticcerebro:image: lmenezes/cerebro:0.9.4container_name: es_jiqun_3node_node-cerebroenvironment:TZ: 'Asia/Shanghai'ports:- '9000:9000'networks:- elastic
networks:elastic:
driver: bridge

六. 启动服务

七.测试集

输入http://10.1.1.42:9200

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

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

相关文章

老硬件也能运行的Win11 IoT LTSC (OEM)物联网版

#记录工作 Windows 11 IoT Enterprise LTSC 2024 属于物联网相关的版本。 Windows 11 IoT Enterprise 是为物联网设备和场景设计的操作系统版本。它通常针对特定的工业控制、智能设备等物联网应用进行了优化和定制,以满足这些领域对稳定性、安全性和长期支持的需求…

【教程】xrdp修改远程桌面环境为xfce4

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 xfce4 vs GNOME对比 配置教程 1. 安装 xfce4 桌面环境 2. 安装 xrdp 3. 配置 xrdp 使用 xfce4 4. 重启 xrdp 服务 5. 配置防火墙&#xff…

【数据结构 · 初阶】- 顺序表

目录 一、线性表 二、顺序表 1.实现动态顺序表 SeqList.h SeqList.c Test.c 问题 经验:free 出问题,2种可能性 解决问题 (2)尾删 (3)头插,头删 (4)在 pos 位…

windows主机中构建适用于K8S Operator开发环境

基于win 10 打造K8S应用开发环境(wsl & kind) 一、wsl子系统安装 1.1 确认windows系统版本 cmd/powershell 或者win r 运行winver 操作系统要> 19044 1.2 开启wsl功能 控制面板 -> 程序 -> 启用或关闭Windows功能 开启适用于Linu…

计算机视觉色彩空间全解析:RGB、HSV与Lab的实战对比

计算机视觉色彩空间全解析:RGB、HSV与Lab的实战对比 一、前言二、RGB 色彩空间​2.1 RGB 色彩空间原理​2.1.1 基本概念​2.1.2 颜色混合机制​ 2.2 RGB 在计算机视觉中的应用​2.2.1 图像读取与显示​2.2.2 颜色识别​2.2.3 RGB 色彩空间的局限性​ 三、HSV 色彩空…

PyTorch多GPU训练实战:从零实现到ResNet-18模型

本文将介绍如何在PyTorch中实现多GPU训练,涵盖从零开始的手动实现和基于ResNet-18的简洁实现。代码完整可直接运行。 1. 环境准备与库导入 import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l from torchvisio…

micro介绍

micro介绍 Micro 的首要特点是易于安装(它只是一个静态的二进制文件,没有任何依赖关系)和易于使用Micro 支持完整的插件系统。插件是用 Lua 编写的,插件管理器可自动为你下载和安装插件。使用简单的 json 格式配置选项&#xff0…

Linux内核分页——线性地址结构

每个进程通过一个指针&#xff08;即进程的mm_struct→pgd&#xff09;指向其专属的页全局目录&#xff08;PGD&#xff09;&#xff0c;该目录本身存储在一个物理页框中。这个页框包含一个类型为pgd_t的数组&#xff0c;该类型是与架构相关的数据结构&#xff0c;定义在<as…

微信小程序开发:微信小程序上线发布与后续维护

微信小程序上线发布与后续维护研究 摘要 微信小程序作为移动互联网的重要组成部分,其上线发布与后续维护是确保其稳定运行和持续优化的关键环节。本文从研究学者的角度出发,详细探讨了微信小程序的上线发布流程、后续维护策略以及数据分析与用户反馈处理的方法。通过结合实…

分享一些使用DeepSeek的实际案例

文章目录 前言职场办公领域生活领域学习教育领域商业领域技术开发领域 前言 以下是一些使用 DeepSeek 的实际案例&#xff1a; DeepSeek使用手册资源链接&#xff1a;https://pan.quark.cn/s/fa502d9eaee1 职场办公领域 行业竞品分析&#xff1a;刚入职的小李被领导要求一天内…

flink iceberg写数据到hdfs,hive同步读取

目录 1、组件版本 环境变量配置 2、hadoop配置 hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 3、hive配置 hive-env.sh hive-site.xml HIVE LIB 原始JAR 4、flink配置集成HDFS和YARN 修改iceberg源码 编译iceberg-flink-runtime-1…

qq邮箱群发程序

1.界面设计 1.1 环境配置 在外部工具位置进行配置 1.2 UI界面设计 1.2.1 进入QT的UI设计界面 在pycharm中按顺序点击&#xff0c;进入UI编辑界面&#xff1a; 点击第三步后进入QT的UI设计界面&#xff0c;通过点击按钮进行界面设计&#xff0c;设计后进行保存到当前Pycharm…

【C++游戏引擎开发】第10篇:AABB/OBB碰撞检测

一、AABB(轴对齐包围盒) 1.1 定义 ​最小点: m i n = ( x min , y min , z min ) \mathbf{min} = (x_{\text{min}}, y_{\text{min}}, z_{\text{min}}) min=(xmin​,ymin​,zmin​)​最大点: m a x = ( x max , y max , z max ) \mathbf{max} = (x_{\text{max}}, y_{\text{…

大模型是如何把向量解码成文字输出的

hidden state 向量 当我们把一句话输入模型后&#xff0c;例如 “Hello world”&#xff1a; token IDs: [15496, 995]经过 Embedding Transformer 层后&#xff0c;会得到每个 token 的中间表示&#xff0c;形状为&#xff1a; hidden_states: (batch_size, seq_len, hidd…

C++指针(三)

个人主页:PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 文章目录 前言 1.字符指针 1.1字符指针的概念 1.2字符指针的用处 1.3字符指针的操作 1.3.1定义 1.3.2初始化 1.4字符指针使用注意事项 2.数组参数&#xff0c;指针参数 2.1数组参数 2.1.1数组参数的概念 2.1…

生命篇---心肺复苏、AED除颤仪使用、海姆立克急救法、常见情况急救简介

生命篇—心肺复苏、AED除颤仪使用、海姆立克急救法、常见情况急救简介 文章目录 生命篇---心肺复苏、AED除颤仪使用、海姆立克急救法、常见情况急救简介一、前言二、急救1、心肺复苏&#xff08;CPR&#xff09;&#xff08;1&#xff09;适用情况&#xff08;2&#xff09;操作…

基于神经环路的神经调控可增强遗忘型轻度认知障碍患者的延迟回忆能力

简要总结 这篇文章提出了一种名为CcSi-MHAHGEL的框架&#xff0c;用于基于多站点、多图谱fMRI的功能连接网络&#xff08;FCN&#xff09;分析&#xff0c;以辅助自闭症谱系障碍&#xff08;ASD&#xff09;的识别。该框架通过多视图超边感知的超图嵌入学习方法&#xff0c;整合…

[WUSTCTF2020]level1

关键知识点&#xff1a;for汇编 ida64打开&#xff1a; 00400666 55 push rbp .text:0000000000400667 48 89 E5 mov rbp, rsp .text:000000000040066A 48 83 EC 30 sub rsp, 30h .text:000000…

cpp自学 day20(文件操作)

基本概念 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放 通过文件可以将数据持久化 C中对文件操作需要包含头文件 <fstream> 文件类型分为两种&#xff1a; 文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的…

Gartner发布软件供应链安全市场指南:软件供应链安全工具的8个强制功能、9个通用功能及全球29家供应商

攻击者的目标是由开源和商业软件依赖项、第三方 API 和 DevOps 工具链组成的软件供应链。软件工程领导者可以使用软件供应链安全工具来保护他们的软件免受这些攻击的连锁影响。 主要发现 越来越多的软件工程团队现在负责解决软件供应链安全 (SSCS) 需求。 软件工件、开发人员身…