当前位置: 首页 > 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麻雀算法优化卷积双…...

Java面试八股文之暑假合集

八股文暑假合集 基础篇二分查找 java基础篇7月12号面向对象和面向过程的区别重载和重写String 7月13号自动装箱和拆箱静态方法构造方法成员变量和局部变量对象引用和对象实例返回值 与equals(重要)hashcode()和equals()HashMap 7月16号线程,进程和程序final关键字的…...

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

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

机器学习第一周

一、概述 机器学习大致会被划分为两类:监督学习,无监督学习 1.1 监督学习 监督学习其实就是,给计算机一些输入x和正确的输出y(训练数据集),让他总结x->y的映射关系,从而给他其他的输入x&a…...

大数据采集技术与预处理学习一:大数据概念、数据预处理、网络数据采集

目录 大数据概念: 1.数据采集过程中会采集哪些类型的数据? 2.非结构化数据采集的特点是什么? 3.请阐述传统的数据采集与大数据采集的区别? ​​​​​​​ ​​​​​​​4.大数据采集的数据源有哪些?针对不同的数…...

MySQL - 为什么索引结构默认使用B+树,而不是其他?

B-Tree的缺点: 范围查询效率相对较低:虽然B-Tree支持范围查询,但在实际操作中可能需要进行多次树遍历,性能较差。磁盘空间利用不高:B-Tree中的非叶子节点也存储数据,导致磁盘空间利用率相对较低。更复杂的平…...

信息系统项目管理师教程 第四版【第3章-信息系统治理-思维导图】

信息系统项目管理师教程 第四版【第3章-信息系统治理-思维导图】...

2023.NET技术沙龙知识学习笔记

目录 一.Bootstrap Blazor UI组件库企业级应用介绍1.Blazor是什么2.为什么要用Blazor3.Bootstrap Blazor是什么 二.使用WebAssembly运行、扩展.NET应用程序1.WebAssembly简介2.WebAssembly的起源3.为什么选择二进制格式?4.WebAssembly与传统JavaScript的对比5.执行速…...

Golang教程——配置环境,再探GoLand

文章目录 一、Go是什么?二、环境配置验证配置环境变量 三、安装开发者工具GoLand四、HelloGolang 一、Go是什么? Go(也称为Golang)是一种开源的编程语言,由Google开发并于2009年首次发布。Go语言旨在提供一种简单、高…...

C++之lambda匿名、using、typedef总结【全】(二百四十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...

基于SpringBoot的个人博客系统

基于SpringBootVue的个人博客系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 系统公告 博客详情 后台发文 摘要 基于Spring Boot的个人博客系统是一种…...