当前位置: 首页 > news >正文

带有 Vagrant 和 Virtualbox 的 Elasticsearch 集群

模拟分布式存储和计算环境的一种简单方法是使用 Virtualbox 作为 VM(“虚拟机”)的提供者,使用 Vagrant 作为前端脚本引擎来配置、启动和停止这些 VM。这篇文章的目标是构建一个集群虚拟设备,提供 Elasticsearch 作为可由主机使用/控制的服务。本文中使用的工件可以从 Github下载。

一、背景
面对不断增长的前端需求,后端容量扩展通常通过用更强大的服务器替换较弱的服务器(CPU/RAM/磁盘方面)来解决,即所谓的“垂直扩展”。这与“水平扩展”相反,“水平扩展”只是简单地添加更多服务器来处理额外的需求。直观上,后一种模型很有吸引力,因为它听起来工作量更少!在传统的以 RDBMS 为中心的应用程序中,别无选择,垂直扩展实际上是有意义的,因为很难跨大型分布式数据表进行连接。但垂直扩展有其局限性,更重要的是,在达到这些限制之前,垂直扩展就变得非常昂贵。NoSQL 数据库忽略关系(RDBMS 的“R”)以允许更简单的水平扩展,现已成为当今需要大规模扩展(如 facebook/google 等)的应用程序的首选数据存储。

读者可以参考《Hadoop:权威指南》,其中 Tom White 深入探讨了这些规模问题。在分布式存储和 CPU 上运行的应用程序必须处理自己的问题,例如让 CPU 忙于处理其“本地”数据,确保集群成员彼此了解并知道谁拥有哪部分数据,并可能根据协调、写入等需要选举领导者/主人,因为实施细节因系统而异。我们不会在这里深入探讨所有内容,但我们这篇文章的目标更加务实:

2023 年容器将会发生什么

DZone 的 2023 年容器趋势报告将探讨容器的当前状态、全球容器化战略的主要趋势和进展,以及用于实现软件架构现代化的建设性内容。


开发一种方法来运行由几个节点(“来宾”)组成的虚拟集群,其中来宾目前是由 Virtualbox 从我的笔记本电脑中划分出来的。稍后我们将扩展相同的方式在AWS提供的节点集群上运行服务
在此访客集群上安装分布式数据存储。现在是 Elasticsearch,所以我们可以了解一下机制
确认此“虚拟 Elasticsearch 设备”提供主机完全可控的服务。
2. 虚拟盒子
我们使用 Oracle 的Virtualbox作为来宾虚拟主机的提供者。Virtualbox 可以免费使用,在我的 Linux 笔记本电脑上运行得很好(我的笔记本电脑上运行 Ubuntu 15.04 64 位,具有 8 核 i7、2.2GHz CPU、16GB RAM),并且有关于如何控制要创建的主机的各个方面的大量文档。还有任意数量的开源 Linux 发行版的预构建映像,您可以将它们简单地放入来宾操作系统中。它提供了多种网络选项(我发现有时令人畏惧)来扩展/限制客人的可访问性/能力。出于我们的目的,我们更喜欢具有以下标准的“仅主机”、“专用”网络。

客人和主人应该能够互相交谈。我们希望客人形成一个集群并共同努力提供服务。主机应该能够控制和使用访客集群提供的服务。
客人应该能够访问互联网。这样他们就可以下载运行任何应用程序所需的任何操作系统更新和软件包。
客人无法从外部进入。这只是目前的一个弥补要求,因为我不想将服务暴露给外部。主机是服务的消费者,它可以将其整合到自己的服务中,如果愿意的话,可以向外部提供该服务。
最后,为了便于使用和可移植性,每个来宾在创建时都应“分配”一个 IP 地址和名称。
安装 Virtualbox 并创建各种虚拟机非常简单。根据我下载的预构建映像,我可以按照我想要的方式设置单个虚拟机。对适配器 1 使用 NAT,对适配器 2 使用仅主机接口,并在虚拟机上激活仅主机接口。我想克隆它并构建其他客户端,但我在以可靠/可重复的方式正确建立网络时遇到了麻烦。网络从来都不是我的强项,在通过 GUI 和命令行尝试了一些网络选项后,我放弃了尝试掌握它。我确信网络专家可以做到这一点,所以这当然不是 Virtualbox 的限制,而是我的限制。

但更合理的是,我不想登录来宾进行设置,或者更糟糕的是 - 通过 VirtualBox 提供的 GUI 更改每个来宾的设置。这绝对无法扩展,重现起来很痛苦,而且容易出错。我想要一种交钥匙解决方案,其中我可以预先编写虚拟机集群创建的所有方面的脚本,然后只需运行它即可创建该集群,并安装、启动和培养所有工具。

我很高兴地发现,Vagrant可以让人们轻松地做到这一点。基本上,他们已经弄清楚了“vboxmanage”命令(及其选项!)的确切顺序,以运行以设置由一些高级要求指定的集群......这就是我正在尝试做的事情,他们已经完成了!另外,由于使用 Vagrant 设置的集群是基于文件的,我们可以对其进行版本控制并共享它(与 OVA 文件相比较小),以便在其他地方准确地重现集群。也许由于我在网络设置方面遇到的问题,我有偏见,但读者会参考类似“为什么 Vagrant?” 的讨论。或者为什么我应该使用 Vagrant 而不是 VirtualBox?Vagrant 对我来说真正的吸引力在于它可以通过插件与其他 VM 提供商(例如 AWS、VMWARE)无缝协作,因此只需更改提供商名称即可重复使用相同的配置文件/脚本。从我的笔记本电脑中提取资源来构建虚拟机对于降低机制来说是很好的,但它不会提供高性能的集群!

3.流浪者
我们花了很多言语试图到达这里,所以我们毫不犹豫地直接投入其中。我们准备一个名为“Vagrantfile”的文本文件,其中包含我们要构建的集群的高级详细信息。在命令提示符下运行将生成一个示例文件,可以根据我们的喜好进行编辑。以下是我们的文件满足第 2 节中规定的要求的情况。

我们想要设置一个 2 节点集群(第 3 行)。
我们选择作为每个操作系统映像。如果该映像之前尚未下载到本地存储库(VirtualBox 的“默认计算机文件夹”),Vagrant 将下载它(第 4 行)
我的笔记本电脑有 16GB RAM,我想始终为主机保留 8GB。其余的则由客人平分。同样,来宾也只能使用部分 CPU。(5、6 号线)
我们循环遍历每个客人:
设置其图像(#13)和名称(#14)。
我们选择“ private_network ”模式并设置 IP 地址(#15)。这为我们提供了第 2 节中想要的网络模型。
第 19 行是关于为虚拟机配置工具和应用程序。非常强大且方便。我们可以自动化启动集群每个成员的过程,只使用我们希望该来宾负责的应用程序。无需通过 ssh 连接到每位访客并进行单独的安装 — 非常节省时间!除了简单的 shell 脚本之外,Vagrant 还允许使用其他机制(如 Docker、Chef、Ansible、Puppet 等)来进行配置过程。这里我们使用 shell 脚本“bootstrap.sh”,向其中传递我们需要的参数来设置 Elasticsearch。
这就是 Vagrant 的全部内容,真的。剩下的都是很好的老式 shell 脚本,我们都是老手了——太棒了!一旦脚本准备就绪,我们就运行以启动集群,完成我们的工作并运行以关闭集群。在我们运行之前,集群将保留其应用程序/配置/数据,以便我们可以随时运行以使用集群及其服务。

4. 配置Elasticsearch
这相当简单。要知道的关键一件事是 Vagrant 自动在主机和来宾之间启用一个共享目录。这是文件“Vagrantfile”所在的目录。在来宾上,此目录可作为“/vagrant”访问。因此,如果我们在主机上“Vagrantfile”所在的位置有文件“a/b/c/some_file”,则可以在客户机上以“/vagrant/a/b/c/some_file”的形式访问该“some_file”。我们使用此功能来共享需要在访客上安装的预下载软件包,以及我们想要在启动后运行的任何脚本。

相关文章:

带有 Vagrant 和 Virtualbox 的 Elasticsearch 集群

模拟分布式存储和计算环境的一种简单方法是使用 Virtualbox 作为 VM(“虚拟机”)的提供者,使用 Vagrant 作为前端脚本引擎来配置、启动和停止这些 VM。这篇文章的目标是构建一个集群虚拟设备,提供 Elasticsearch 作为可由主机使用…...

Cross Site Scripting (XSS)

攻击者会给网站发送可疑的脚本,可以获取浏览器保存的网站cookie, session tokens, 或者其他敏感的信息,甚至可以重写HTML页面的内容。 背景 XSS漏洞有不同类型,最开始发现的是存储型XSS和反射型XSS,2005,Am…...

VDA到Excel方案介绍之自定义邮件接收主题

VDA标准是德国汽车工业协会(Verband der Automobilindustrie,简称VDA)制定的一系列汽车行业标准。这些标准包括了汽车生产、质量管理、供应链管理、环境保护、安全性能等方面的规范和指南。VDA标准通常被德国和国际上的汽车制造商采用&#x…...

【opencv】【CPU】windows10下opencv4.8.0-cuda C++版本源码编译教程

【opencv】【CPU】windows10下opencv4.8.0-cuda C版本源码编译教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【opencv】【CPU】windows10下opencv4.8.0-cuda C版本源码编译教程前言准备工具cmakeopencv4.8.0opencv_contrib CMake编译VS2…...

多分类loss学习记录

这里简单的记录在人脸识别/声纹识别中常用的分类loss。详细原理可以参考其他博客。 扩展资料1 扩展资料2 L-softmax A-softmax AM-softmax L-softmax :基于softmax加入了margin, Wx 改写为||w||||x||cos(角度),将角度变为了m角度 A-softmax &…...

Linux创建逻辑卷并扩容(超详细)

目录 ​编辑 一、概念解析 1、LV逻辑卷 2、PV物理卷 3、VG卷组 二、扩容前准备 三、创建逻辑卷并扩容 1、打开虚拟机 2、进入root用户 3、查看新加入的硬盘 4、创建主分区 5、创建物理卷 6、打包为一个卷组 7、创建逻辑卷 8、格式化逻辑卷 9、挂载逻辑卷--开机自…...

buuctf_练[安洵杯 2019]easy_web

[安洵杯 2019]easy_web 文章目录 [安洵杯 2019]easy_web掌握知识解题思路代码分析正式解题 关键paylaod 掌握知识 url地址和源代码的信息捕捉;图片和base64之间转换;base64和十六进制编码的了解;代码审计,绕过正则匹配对关键字的…...

入学生活科研随笔

近而立之年,巅峰享受的时期有两段。一是高考后,收到入学通知书。早晨,八点多,我醒来在院子里看到,爸爸在门口和邮政快递员寒暄。那天应该是8月15号,清晨凉凉爽爽的,杨树遮住了大半个院子。第二段…...

【1++的Linux】之进程间通信(共享内存)

👍作者主页:进击的1 🤩 专栏链接:【1的Linux】 我们在前面的文章中提到过,进程间的通信本质都是先看到同一块资源,然后通过这同一块资源进行通信,并且是单向的通信,只能一端发&#…...

Linux高性能服务器编程——ch8笔记

第8章 高性能服务器程序框架 8.1 服务器模型 服务器启动后,首先创建一个(或多个)监听socket,并调用bind函数将其绑定到服务器感兴趣的端口,然后调用listen函数等待客户连接。服务器稳定运行之后,客户端就可…...

Android WMS——ViewRootImpl分析(六)

一、简介 ViewRootImpl是View中的最高层级,属于所有View的根(但ViewRootImpl不是View,只是实现了ViewParent接口),维护了整个视图结构,并作为输入事件的分发器和绘图管道的输入端点,承担着输入事件分发、窗口管理、视图绘制和系统事件响应等关键角色。对于Android应用程…...

Unsatisfied dependency expressed through bean property ‘sqlSessionTemplate‘;

代码没有问题,但是启动运行报错 2023-10-25 16:59:38.165 INFO 228964 --- [ main] c.h.h.HailiaowenanApplication : Starting HailiaowenanApplication on ganluhua with PID 228964 (D:\ganluhua\code\java\hailiao-java\target\classes …...

【C++】智能指针:auto_ptr、unique_ptr、share_ptr、weak_ptr(技术介绍 + 代码实现)(待更新)

文章目录 0. 概述智能指针,智能在哪儿?RAII 的介绍四个智能指针的特点: 1. auto_ptr(C98)🐎核心功能的简单实现 2. unique_ptr(C11)🐎核心功能的简单实现 3. shared_ptr&…...

nodejs+vue全国公考岗位及报考人数分析

传统的搜索引擎尽管解决了信息搜索问题,但无法进行有效的数据分析和优质资源的获取。并且,人们的需求不同,数据的要求也不同。为了解决这一问题,定向抓取数据的爬虫诞生了。它的诞生把人们从重复性的劳动中解放出来,节…...

【0基础学Java第二课】数据类型与变量

2. 数据类型与变量 2.1 字面常量2.2 数据类型2.3 变量2.3.1 变量概念2.3.2 语法格式 2.4 整型变量2.4.1 整型变量2.4.2 长整型变量2.4.3 短整型变量2.4.4 字节型变量 2.5 浮点型变量2.6 字符型2.7 布尔型变量2.8 类型转换2.9 类型提升2.10 字符串类型2.10.1 字符串拼接操作符 2…...

Pytorch整体工作流程代码详解(新手入门)

一、前言 本文详细介绍Pytorch的基本工作流程及代码,以及如何在GPU上训练模型(如下图所示)包括数据准备、模型搭建、模型训练、评估及模型的保存和载入。 适用读者:有一定的Python和机器学习基础的深度学习/Pytorch初学者。 本文…...

读图数据库实战笔记02_图数据建模

1. 概念 1.1. 实体 1.1.1. 通常用名词来表示 1.1.2. 描述一个领域中的事物或者事物类型 1.1.2.1. 汽车 1.1.2.2. 用户 1.1.2.3. 地理位置 1.1.3. 在逻辑模型和技术实现过程中,实体通常会变成“顶点” 1.2. 关系 1.2.1. 用动词(或动词短语&#…...

竞赛 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐…...

对Happens-Before的理解

Happens-Before Happens-Before 是一种可见性模型,也就是说,在多线程环境下。原本因为指令重排序的存在会导致数据的可见性问题,也就是 A 线程修改某个共享变量对 B 线程不可见。因此,JMM 通过 Happens-Before 关系向开发人员提供…...

分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测

分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测 目录 分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双…...

python 最基础的一些

获取数组长度 lengthlen(list)for 循环数组 for i in list:print (i)打出来的就是数组里的每一个数据。for 循环数组下标 for i in range(length):print(list[i])寻找某个数据在数组里的下标 indexnums[i1:].index(numNeed)i1因为是从i1开始找的,然后用index函数获取…...

PADS VX2.8 极坐标布局技巧:圆形灯板LED高效排列指南

1. 极坐标布局在圆形灯板设计中的核心价值 第一次接触圆形LED灯板设计时,我被密密麻麻的元件排列搞得头晕眼花。传统直角坐标系下,要精确控制每个LED灯珠的间距和角度,需要反复计算XY坐标,效率极低。直到发现PADS VX2.8的极坐标功…...

2025最权威的降重复率方案实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 从多个方面着手,才能降低文本的AIGC检测率。最先要留意语言自然度,使…...

2025届学术党必备的降重复率助手实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对于AI生成文本展现出的高频特性,我们可运用如下一系列指令来实现去机械化的目标…...

Kandinsky-5.0-I2V-Lite-5s图生视频工作流整合:接入Notion/Airtable自动化生成

Kandinsky-5.0-I2V-Lite-5s图生视频工作流整合:接入Notion/Airtable自动化生成 1. 产品介绍与核心价值 Kandinsky-5.0-I2V-Lite-5s是一款革命性的轻量级图生视频模型,它让短视频创作变得前所未有的简单。你只需要准备一张首帧图片,再补充一…...

从野火官方手册到实战:我的RK3568 NPU开发环境搭建全记录(含conda虚拟环境管理心得)

从野火官方手册到实战:我的RK3568 NPU开发环境搭建全记录(含conda虚拟环境管理心得) 作为一名长期在边缘计算领域折腾的开发者,最近终于有机会上手Rockchip的RK3568芯片。这款芯片内置的NPU(神经网络处理单元&#xff…...

VS2022解决找不到属性管理器,只有属性窗口

曾几何时,属性管理器一般是在解决资源管理器旁边,但是被我删了,然后我就找不到了。 今天给他找出来。在这边鼠标滚轮往下滑点击属性管理器,然后点击添加命令,然后直接点击确定即可。此时视图中就有了属性管理器...

Qwen3.5-4B模型10分钟快速部署体验:开箱即用的推理服务

Qwen3.5-4B模型10分钟快速部署体验:开箱即用的推理服务 1. 惊艳的开箱即用体验 第一次在星图GPU平台上部署Qwen3.5-4B模型时,我有点不敢相信整个过程如此简单。从选择镜像到完成部署,再到开始第一次对话,全程只用了不到10分钟。…...

高效文档下载解决方案:让知识获取不再受阻

高效文档下载解决方案:让知识获取不再受阻 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的烦恼…...

NVIDIA Profile Inspector配置问题全方位解决方案

NVIDIA Profile Inspector配置问题全方位解决方案 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 问题定位:识别配置故障的关键信号 在使用NVIDIA Profile Inspector(一款NVIDI…...