Linux安装Elasticsearch集群-----docker安装es集群

目录

技术背景

1.2 实验目标

二、实验内容

1.1 服务器规划

二、传统方式安装Elasticsearch集群

2.1 安装Java环境(10.1.1.6/8)

2.3 配置集群节点(以10.1.1.6)

2.4 启动服务

ES Data节点1(10.1.1.8)

2.5 其他节点配置

测试

二、Docker安装方式任务分工

编写docker-compose.yml


技术背景

Elasticsearch(ES)作为分布式搜索引擎,其核心价值在于通过集群部署实现高可用性和数据冗余。本实验对比两种典型部署方案:

原生Linux部署:直接安装ES服务,适用于生产环境,资源利用率高,但需手动管理多节点。

Docker容器化部署:通过容器快速搭建集群,适合测试或动态扩展场景,具备资源隔离和快速回滚优势。

1.2 实验目标

掌握原生Linux环境下ES集群(≥2节点)的搭建与配置。

掌握Docker Compose部署ES集群的方法。

集成Kibana实现数据可视化。

对比两种部署方式的效率、资源占用及运维复杂度。

二、实验内容

环境准备

所有节点

# 关闭SELinux

sudo setenforce 0

sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 调整内核参数

echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

sudo sysctl -p

#关闭防火墙

systemctl stop firewalld

# 开放防火墙端口

sudo firewall-cmd --permanent --add-port={9200/tcp,9300/tcp,5601/tcp}

sudo firewall-cmd --reload

1.1 服务器规划

角色 IP地址 部署方式

ES Master节点1 10.1.1.6 传统安装/Docker

ES Date节点1 10.1.1.8 传统安装/Docker

Kibana节点 10.1.1.7 传统安装/Docker

1.2 系统要求

CentOS 7.x/8.x

Java 8+ (Elasticsearch依赖)

Docker 20.10+ (Docker部署方式需要)

防火墙开放端口:9200(HTTP), 9300(TCP传输), 5601(Kibana)

二、传统方式安装Elasticsearch集群

2.1 安装Java环境(10.1.1.6/8)

sudo yum install java-11-openjdk-devel

java -version

报错

# 选择 Java 11 作为默认版本(输入选项 2)

sudo alternatives --config java

2.2 安装Elasticsearch

# 下载RPM包(以7.17.4为例)

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.4-x86_64.rpm

sudo rpm --install elasticsearch-7.17.4-x86_64.rpm

2.3 配置集群节点(以10.1.1.6)

sudo vi /etc/elasticsearch/elasticsearch.yml

修改以下配置:

cluster.name: my-es-cluster

node.name: es-master-1

node.roles: [master, data]

network.host: 0.0.0.0

discovery.seed_hosts: ["10.1.1.6", "10.1.1.8"]

cluster.initial_master_nodes: ["es-master-1", "es-master-2"]

http.port: 9200

transport.port: 9300

2.4 启动服务

sudo systemctl daemon-reload

sudo systemctl start elasticsearch

sudo systemctl enable elasticsearch

ES Data节点1(10.1.1.8)

步骤1:安装Java环境(同上)

步骤2:安装Elasticsearch(同上)

步骤3:配置Elasticsearch

 cluster.name: my-es-cluster

 node.name: es-data-1

 node.roles: [data] # 纯Data节点

 network.host: 0.0.0.0

 discovery.seed_hosts: ["10.1.1.6", "10.1.1.8"]

 cluster.initial_master_nodes: ["es-master-1"]

 http.port: 9200

 transport.port: 9300

2.5 其他节点配置

重复2.2-2.4步骤,修改node.name和IP地址,确保discovery.seed_hosts包含所有节点IP。

 Kibana节点(10.1.1.7)

步骤1:安装Kibana

 wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.4-x86_64.rpm

 sudo rpm --install kibana-7.17.4-x86_64.rpm

步骤2:配置Kibana

 sudo vi /etc/kibana/kibana.yml

修改配置:

 server.host: "0.0.0.0"

 elasticsearch.hosts: ["http://10.1.1.6:9200", "http://10.1.1.7:9200"]

步骤3:启动服务

 sudo systemctl start kibana

 sudo systemctl enable kibana

测试

10.1.1.8

成功

如果报错

Java版本与elastic版本不同步,查看Java版本版本太低则需要重新安装

二、Docker安装方式任务分工

1. 所有节点(6/7/8)

步骤1:安装Docker和docker compose

sudo yum install -y docker

sudo systemctl start docker

sudo systemctl enable docker

编写docker-compose.yml

sudo yum install docker-compose-plugin

2. ES Master节点1(10.1.1.6)

步骤3:创建Docker Compose文件

 version: '3.8'

 services:

 es-master1:

 image: elasticsearch:7.17.4

 container_name: es-master1

 environment:

 - node.name=es-master1

 - cluster.name=docker-es-cluster

 - discovery.seed_hosts=es-data1

 - cluster.initial_master_nodes=es-master1

 - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

 ulimits:

 memlock:

 soft: -1

 hard: -1

 volumes:

 - es-master1-data:/usr/share/elasticsearch/data

 ports:

 - "9200:9200"

 networks:

 - es-net

 volumes:

 es-master1-data:

 networks:

 es-net:

 driver: bridge

步骤4:启动容器

 docker-compose up -d

3. ES Data节点1(8)

步骤3:创建Docker Compose文件

 version: '3.8'

 services:

 es-data1:

 image: elasticsearch:7.17.4

 container_name: es-data1

 environment:

 - node.name=es-data1

 - cluster.name=docker-es-cluster

 - discovery.seed_hosts=es-master1

 - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

 ulimits:

 memlock:

 soft: -1

 hard: -1

 volumes:

 - es-data1-data:/usr/share/elasticsearch/data

 networks:

 - es-net

 volumes:

 es-data1-data:

 networks:

 es-net:

 driver: bridge

步骤4:启动容器(同上)

4. Kibana节点(7)

步骤3:创建Docker Compose文件

 version: '3.8'

 services:

 kibana:

 image: kibana:7.17.4

 container_name: kibana

 environment:

 ELASTICSEARCH_HOSTS: http://es-master1:9200

 ports:

 - "5601:5601"

 networks:

 - es-net

 depends_on:

 - es-master1

 networks:

 es-net:

 driver: bridge

五、集群验证

在任意节点执行以下命令:

 curl -XGET "http://10.1.1.7:9200/_cluster/health?pretty"

 curl -XGET "http://10.1.1.7:9200/_cat/nodes?v&pretty"

或通过浏览器访问Kibana:http://10.1.1.7:5601

- es-data1-data:/usr/share/elasticsearch/data

networks:

- es-net

volumes:

es-ma

六、总结

传统部署适合长期稳定运行的环境,需手动管理依赖和配置。

Docker部署便于快速扩展和隔离环境,适合测试或动态调整资源。

Kibana提供直观的集群监控和数据可视化界面。

注意事项:生产环境需配置安全认证(X-Pack)

调整JVM内存避免OOM

定期备份集群数据

监控磁盘空间和节点负载

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

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

相关文章

【嵌入式】复刻SQFMI开源的Watchy墨水屏电子表——(2)软件部分

书接上文 基于乐鑫 ESP32-PICO-D4 模块的墨水屏智能手表开源项目Watchy 完成了硬件部分,接下来就是软件部分: 一 开发环境配置(Arduino ESP32) 首先需要进行 Arduino ESP32 开发环境的安装配置,过程参考之前的帖子&a…

关于微信小程序端base64解码问题

由于atob是浏览器端的,对于微信小程序不支持,导致模拟器【开发工具】显示正常,但真机异常解析失败问题,微信小程序原有的api,官方文档中也废弃了 解决方案: 调用: const decodedString ba…

如何通过Odoo 18创建与配置服务器操作

如何通过Odoo 18创建与配置服务器操作 服务器操作是Odoo实现业务流程自动化的核心工具,允许你在服务器端执行自动化任务,通常由按钮点击或自动化工作流等事件触发。这些操作使用 Python 编写,能够执行复杂的业务逻辑,从而增强 Od…

Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传

以下内容源于日常学习的整理,欢迎交流。 下图是Windows主机、虚拟机Ubuntu、开发者三者之间文件互传的方式示意图: 注意,下面谈及的所有方式,都要求两者的IP地址处于同一网段,涉及到的软件资源见felm。 一、Windows主…

[设计模式与源码]1_Spring三级缓存中的单例模式

欢迎来到啾啾的博客🐱,一个致力于构建完善的Java程序员知识体系的博客📚,记录学习的点滴,分享工作的思考、实用的技巧,偶尔分享一些杂谈💬。 欢迎评论交流,感谢您的阅读&#x1f604…

微服务架构中的API网关:Spring Cloud与Kong/Traefik等方案对比

微服务架构中的API网关:Spring Cloud与Kong/Traefik等方案对比 一、API 网关的概念二、API 网关的主要功能2.1 统一入口与路由转发2.2 安全与权限控制2.3 流量管理与容错2.4 API 管理与聚合2.5 监控与日志2.5 协议转换与适配2.6 控制平面与配置管理 三、API 网关选型…

中兴B860AV3.2-T/B860AV3.1-T2_S905L3-B_2+8G_安卓9.0_先线刷+后卡刷固件-完美修复反复重启瑕疵

中兴电信B860AV3.2-T/B860AV3.1-T2_晶晨S905L3-B芯片_28G_安卓9.0_先线刷后卡刷-刷机固件包,完美修复刷机后盒子反复重启的瑕疵。 这两款盒子是可以通刷的,最早这个固件之前论坛本人以及其他水友都有分享交流过不少的固件,大概都…

Stable Diffusion lora训练(一)

一、不同维度的LoRA训练步数建议 2D风格训练 数据规模:建议20-50张高质量图片(分辨率≥10241024),覆盖多角度、多表情的平面风格。步数范围:总步数控制在1000-2000步,公式为 总步数 Repeat Image Epoch …

Web3 时代数据保护的关键挑战与应对策略

Web3 时代数据保护的关键挑战与应对策略 随着互联网技术的飞速发展,我们正步入 Web3 时代,这是一个以去中心化、用户主权和数据隐私为核心的新时代。在这个时代,数据保护成为了一个至关重要的议题。本文将探讨 Web3 时代数据保护面临的主要挑…

微信小程序计算属性与监听器:miniprogram-computed

小程序框架没有提供计算属性相关的 api ,但是官方为开发者提供了拓展工具库 miniprogram-computed。 该工具库提供了两个功能: 计算属性 computed监听器 watch 一、安装 miniprogram-computed 在项目的根目录下,使用如下命令,…

实体机安装linux视频教程。windows和ubuntu共存。启动时选择切换引导系统。

登录ubuntu官网下载iso镜像。 https://ubuntu.com/download 桌面版带G U I 操作界面,服务版靠远程命令行操作,类似wsl,没有图形界面,显卡跑满无需分散算力到显示交互界面上。 点alter natice downloads可以下载旧版本。具体版本选…

Numpy

一、Numpy优势 学习目标 目标 了解Numpy运算速度上的优势 知道Numpy的数组内存块风格 知道Numpy的并行化运算 1 Numpy介绍 Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。 Numpy支持常见的数组和矩…

小红书不绑定手机号会显示ip吗

小红书作为一个生活方式分享平台,拥有庞大的用户群体。在小红书上,用户可以分享自己的生活点滴、购物心得、美食体验等,与其他用户进行互动交流。最近,不少用户对于小红书是否会在不绑定手机号的情况下显示IP属地产生了疑问&#…

FPGA multiboot 方案

FPGA multiboot 方案 初版方案 初版方案不需要软件参与,只是为了验证flash启动。当前已完成。 使用jtag 通过vivaod harwaremanager去将fpga bit流文件加载到demo板flash中。 具体操作: 约束添加for golden bitstream # 设置电源参考,1.…

SpringBoot的启动原理?

大家好,我是锋哥。今天分享关于【SpringBoot的启动原理?】面试题。希望对大家有帮助; SpringBoot的启动原理? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot的启动原理主要是通过 SpringApplication 类来…

aws训练快速入门教程

AWS 相关核心概念 简洁地介绍一下AWS训练云服务的核心关联概念: AWS核心服务层: 基础设施层: EC2(计算), S3(存储), RDS(数据库)等人工智能层: SageMaker(训练平台), AI服务等 机器学习服务分级: 高层: 预构建AI服务(开箱即用)中层: SageMaker(主要训练平台)底层: 框架和基…

(一)飞行器的姿态欧拉角, 欧拉旋转, 完全数学推导(基于坐标基的变换矩阵).(偏航角,俯仰角,横滚角)

(这篇写的全是基矢变换矩阵)不是坐标变换矩阵,坐标变换矩阵的话转置一下,之后会有推导. 是通过M转置变换到P撇点.

工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

在 Windows 系统下,将 FFmpeg 编译为 .so 文件

1. 准备环境 确保你的 Windows 系统已安装以下工具: Android Studio NDK(Native Development Kit) MSYS2(用于提供类 Unix 环境) FFmpeg 源码 Git Bash(可选,推荐使用) 安装 …

蓝桥杯备考---》分类讨论之Fixed Points

这道题的意思啊,就是说我们在数组里输入n个数,我们尽可能让下标和数组的值相同,我们只能交换一次,最多能有多少个值和下标一样 这里我们需要分类讨论,如果每个下标的值都符合要求,我们就不交换了 如果不是…