带有 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”。我们使用此功能来共享需要在访客上安装的预下载软件包,以及我们想要在启动后运行的任何脚本。

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

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

相关文章

计算机视觉-光源的目的和作用

光源的目的 机器视觉系统的核心是图像采集和图像处理,而光源则是影响图像水平的重要因素,通过适当的光源照明,使图像中的目标信息与背景信息得到更好的分离,可大大降低图像识别难度,提高系统的精度和可靠性。 对于机器…

【错误解决方案】ModuleNotFoundError: No module named ‘torch._six‘

1. 错误提示 在python程序中,试图导入一个名为torch._six的模块,但Python提示找不到这个模块。 错误提示:ModuleNotFoundError: No module named torch._six 2. 解决方案 出现这个错误可能是因为你使用的PyTorch版本和你的代码不兼容。在某…

Megatron-LM GPT 源码分析(三) Pipeline Parallel分析

引言 本文接着上一篇【Megatron-LM GPT 源码分析(二) Sequence Parallel分析】,基于开源代码 GitHub - NVIDIA/Megatron-LM: Ongoing research training transformer models at scale ,通过GPT的模型运行示例,从三个维…

类与面向对象

章节目录: 一、面向对象二、类2.1 类定义2.2 类对象2.3 self 代表类的实例,而非类 三、类的方法四、多继承五、方法重写六、私有属性及私有方法七、类的专有方法八、专有方法重载九、结束语 一、面向对象 Python 从设计之初就已经是一门面向对象的语言。…

从一个页面跳转到目标页面之后,对应的顶部路由高亮

需求&#xff1a;页面跳转到目标页面之后&#xff0c;对应的顶部路由高亮 上面的更多 跳转到 学情分析下面的学生分析 <template><div class"topBar" ref"topBar" v-loading.fullscreen.lock"fullscreenLoading"><div class&quo…

左神算法题系列:动态规划机器人走路

机器人走路 假设有排成一行的N个位置记为1~N&#xff0c;N一定大于或等于2 开始时机器人在其中的start位置上(start一定是1~N中的一个) 如果机器人来到1位置&#xff0c;那么下一步只能往右来到2位置&#xff1b; 如果机器人来到N位置&#xff0c;那么下一步只能往左来到N-1位…

MySQL实战2

文章目录 主要内容一.回访用户1.准备工作代码如下&#xff08;示例&#xff09;: 2.目标3.实现代码如下&#xff08;示例&#xff09;: 二.如何找到每个人每月消费的最大天数1.准备工作代码如下&#xff08;示例&#xff09;: 2.目标3.实现代码如下&#xff08;示例&#xff09…

selenium+python自动化安装驱动 碰到的问题

刚开始使用谷歌驱动&#xff0c;我的谷歌浏览器版本是最新版下载驱动地址&#xff0c;访问不了。 Chrome for Testing availability只能使用火狐驱动&#xff0c;我这里的火狐版本也是最新版119.0 查找全网找到驱动geckodriver下载地址 https://mirrors.huaweicloud.com/ge…

08.K8S高可用方案

K8S高可用方案 1、高可用部署方式 官方提供两种高可用实现方式: 堆叠etcd 拓扑,其中 etcd 节点与控制平面节点共存;外部 etcd 节点,其中 etcd 与控制平面在不同的节点上运行;1.1、堆叠 etcd 拓扑 主要特点: 每个 master 节点上运行一个 apiserver 和 etcd, etcd 只与本…

Vmware下的虚拟机NAT连接后仍然木有网络

问题描述 出现在主机能ping通&#xff0c;互联网ping不通的情况。 解决 竟然是因为网关配置文件中DNS1写成了DNS! 没想到吧&#xff01;如果你试了很多办法都没有解决记得检查下文件 T^T 在文件夹中改过来就好了&#xff1a; 之后虚拟机终端执行init 6重启&#xff0c;即可…

私有云:【3】NFS存储服务器的安装

私有云&#xff1a;【3】NFS存储服务器的安装 1、使用vmwork创建虚拟机2、配置NFS服务器3、安装NFS存储服务4、配置NFS服务及创建存储共享 1、使用vmwork创建虚拟机 新建虚拟机NFS 分配400G硬盘&#xff0c;可以更高【用作存储】 自定义硬件 选择win2012的iso文件 设置登录密码…

文件上传漏洞(2), 文件上传实战绕过思路, 基础篇

文件上传漏洞实战思路(基础) 准备一句话木马文件 mm.php 一, 前端绕过 p1 浏览器禁用js先把mm.php后缀名修改为mm.jpg, 点击提交后, 用 burp 截取请求, 将数据包中的文件名修改回mm.php再提交. 二, 类型MIME绕过 p2 使用 burp 修改 Content-Type: image/jpeg 三, 黑名单绕…

动态代理:一种灵活的设计模式

动态代理是一种在运行时创建和使用代理对象的设计模式&#xff0c;它可以在不修改原始类和接口的情况下&#xff0c;对原始对象进行额外的操作或增强。动态代理广泛应用于各种编程场景&#xff0c;如前后端处理、数据访问、业务逻辑优化等。本文将介绍动态代理的概念、分类、实…

【C++】模版进阶

我们在之前的博客中讲述过模版的使用&#xff1a;【C】模版初阶&#xff0c;但这只是模版最基本的使用&#xff0c;下面再深入模版&#xff0c;看看还有另外什么用法&#xff1a; 目录 一、非类型模板参数 二、模板的特化 2.1 什么是模版的特化 2.2 函数模版的特化 2.3 类…

python实现将图片数据以TFRecord方式存储

以TFRecord方式存储的优点 高效性&#xff1a;TFRecord是一种二进制格式&#xff0c;可以提供更高的存储和读取效率。它可以更快地读取和解析数据&#xff0c;特别适用于大规模数据集 可压缩性&#xff1a;TFRecord可以使用压缩算法进行压缩&#xff0c;减小数据文件的大小。这…

电脑怎么共享屏幕?电脑屏幕共享软件分享!

如何控制某人的电脑屏幕&#xff1f; 有时我们可能需要远程控制某人的计算机屏幕&#xff0c;例如&#xff0c;为我们的客户提供远程支持&#xff0c;远程帮助朋友或家人解决计算机问题&#xff0c;或在家中与同事完成团队合作。那么&#xff0c;电脑怎么共享屏幕&#xff…

记录--vue3实现excel文件预览和打印

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 在前端开发中&#xff0c;有时候一些业务场景中&#xff0c;我们有需求要去实现excel的预览和打印功能&#xff0c;本文在vue3中如何实现Excel文件的预览和打印。 预览excel 关于实现excel文档在…

java后端返回数据给前端时去除值为空或NULL的属性、忽略某些属性

目录 一、使用场景 二、环境准备 1、引入依赖 2、实体类 三、示例 1、不返回空值 (1)方式 (2)测试 (3)说明 2、不返回部分属性 (1)方式 (2)测试 一、使用场景 在开发过程中&#xff0c;有时候需要将后端数据返回前端&#xff0c;此时有些数据为空属性不需要返回&…

华为c语言编程规范

提示&#xff1a;附件为编程规范 文章目录 前言一、华为c语言编程规范总结 前言 例如&#xff1a;华为规范下载 一、华为c语言编程规范 附件为编码规范 总结 提示&#xff1a;附件规范可供下载

海南海口大型钢结构件3D扫描全尺寸三维测量平面度平行度检测-CASAIM中科广电

高精度三维扫描技术已经在大型工件制造领域发挥着重要作用&#xff0c;特别是在质量检测环节&#xff0c;高效、高精度&#xff0c;可以轻松实现全尺寸三维测量。本期&#xff0c;CASAIM要分享的应用是在大型钢结构件的关键部位尺寸及形位公差检测。 钢结构件&#xff0c;是将…