使用Vagrant创建多节点虚拟机集群
摘要: 在前一篇博客中,我介绍了使用Vagrant快速创建虚拟机,但是所创建的只是单个虚拟机。这篇博客将介绍使用Vagrant创建多节点虚拟机集群,可以作为Hadoop,Spark以及Storm等分布式系统的运行环境。
- 作者: KiwenLau
- 日期: 2016-07-03

本文所有操作是在MacBook上进行的,Windows上的操作大部分一致,但是可能会有一些小问题。
一. 集群创建
1. 安装VirtualBox
2. 安装Vagrant
3. 下载Box
vagrant box add ubuntu/trusty64 |
Box相当于虚拟机所依赖的镜像文件。
4. 编辑Vagrantfile
mkdir vagrant-cluster |
Vagrantfile如下,可以通过注释理解每个自定义配置的含义:
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "node#{i}" do |node|
# 设置虚拟机的Box
|
与创建单个虚拟机相比,创建多个虚拟机时多了一层循环,而变量i可以用于设置节点的名称与IP,使用#{i}取值:
(1..3).each do |i| end |
可知,一共创建了3个虚拟机。
5. 在桌面上创建share目录
桌面上的share目录将与虚拟机内的/home/vagrant/share目录内容实时同步
mkdir ~/Desktop/share |
6. 创建虚拟机
vagrant up |
创建3个虚拟机大概需要15分钟,当然这和机器性能还有网速相关。安装Docker可能会比较慢,不需要的话删除下面几行就可以了:
# 使用shell脚本进行软件安装和配置 |
下面是Vagrant虚拟机的配置,可以根据需要进行更改:
- 用户/密码: vagrant/vagrant
- 共享目录: 桌面上的share目录将与虚拟机内的/home/vagrant/share目录内容实时同步
- 内存:2GB
- CPU: 1
二. 集群管理
1. 常用命令
下面是一些常用的Vagrant管理命令,操作特定虚拟机时仅需指定虚拟机的名称。
- vagrant ssh: SSH登陆虚拟机
- vagrant halt: 关闭虚拟机
- vagrant destroy: 删除虚拟机
- vagrant ssh-config 查看虚拟机SSH配置
启动单个虚拟机:
vagrant up node1 |
启动多个虚拟机:
vagrant up node1 node3 |
启动所有虚拟机:
vagrant up |
2. SSH免密码登陆
使用vagrant ssh命令登陆虚拟机必须切换到Vagrantfile所在的目录,而直接使用虚拟机IP登陆虚拟机则更为方便:
ssh vagrant@192.168.59.2 |
此时SSH登陆需要输入虚拟机vagrant用户的密码,即vagrant
将主机的公钥复制到虚拟机的authorized_keys文件中即可实现SSH免密码登陆:
cat $HOME/.ssh/id_rsa.pub | ssh vagrant@192.168.59.2 'cat >> $HOME/.ssh/authorized_keys' |
3. 重新安装软件
Vagrant中有下面一段内容:
# 使用shell脚本进行软件安装和配置 |
其实就是嵌入了一段Shell脚本进行软件的安装和配置,这里我安装了Docker,当然也可以安装其他所需要的软件。修改此段内容之后,重新创建虚拟机需要使用”–provision”选项。
vagrant halt |
4. 共享目录挂载出错
VirtualBox设置共享目录时需要在虚拟机中安装VirtualBox Guest Additions,这个Vagrant会自动安装。但是,VirtualBox Guest Additions是内核模块,当虚拟机的内核升级之后,VirtualBox Guest Additions会失效,导致共享目录挂载失败,出错信息如下:
Failed to mount folders in Linux guest. This is usually because |
安装Vagrant插件vagrant-vbguest可以解决这个问题,因为该插件会在虚拟机内核升级之后重新安装VirtualBox Guest Additions。
vagrant plugin install vagrant-vbguest |
版权声明:
转载时请注明作者KiwenLau以及本文地址:
https://kiwenlau.com/2016/07/03/vagrant-vm-cluster/
使用Vagrant创建多节点虚拟机集群的更多相关文章
- 图文详解如何使用VMWare创建一套虚拟机“集群”
开篇废话 在学习各种高大上的大数据产品也好,模拟部署我们的程序到PRD环境也好,总离不开需要一个机器集群.然而通常我们都没有那么多银子去购买多台云服务器,更没钱购买物理机.所以对于技术研究来说,最经济 ...
- 仅需60秒,使用k3s创建一个多节点K8S集群!
作者: Dawid Ziolkowski丨Container Solution云原生工程师 最近,我一直在Kubernetes上进行各种测试和部署.因此,我不得不一次又一次创建和销毁Kubernete ...
- 实战weblogic集群之创建节点和集群
一.启动weblogic,访问控制台 weblogic的domain创建完成后,接下来就可以启动它,步骤如下: $ cd /app/sinova/domains/base_domain/bin $ . ...
- 创建多个节点的集群 - Elastic Stack 8.0
文章转载自:https://mp.weixin.qq.com/s/k6u9Q2nebW9qgZMghQwJng 详述如何安装3个节点的 Elasticsearch 集群.我将使用 Docker 来进行 ...
- 部署CentOS虚拟机集群
1.在虚拟机中安装CentOS (1)使用CentOS-6.5-i386-minimal.iso.(2)创建虚拟机:打开Virtual Box,点击“新建”按钮,点击“下一步”,输入虚拟机名称为esh ...
- 基于Docker快速搭建多节点Hadoop集群--已验证
Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop ...
- 理解 OpenStack Swift (1):OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置
本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...
- kubadm创建k8s v1.10集群
kubadm创建k8s集群 1:服务器信息以及节点介绍 主机名 ip 备注 k8s-master 192.168.0.104 master etcd keepalived k8s-client1 19 ...
- docker swarm英文文档学习-6-添加节点到集群
Join nodes to a swarm添加节点到集群 当你第一次创建集群时,你将单个Docker引擎置于集群模式中.为了充分利用群体模式,可以在集群中添加节点: 添加工作节点可以增加容量.当你将服 ...
随机推荐
- 一个关于PCA的疑问
我们知道PCA干的事情是把n维的样本投影到k维,同时丢失的信息能够达到最少. 为什么说principal component是covariance matrix的特征值中最大的前k个对应的特征向量上的 ...
- 数位DP新识
简单题:HDU2089 HDU3652 HDU4734 HDU3555 POJ3252 HigoCoder1033(需要前导0,或者用方法4) 总结: 1,dfs(pos,state, ...
- CF1130E Wrong Answer
E Wrong Answer 注意到 \(n\geq 2\) 时才可能有解,可以按如下方式构造一个 \(a_{1,2\dots n}\): 令 \(a_1=-1\) ,而后面的数都为正.记 \(s=\ ...
- Codeforces 311B Cats Transport【斜率优化DP】
LINK 题目大意 有一些猫,放在一些位置,人一步移动一个位置 给出每个猫出现的时间,每个人可以自由安排其出发时间,沿途已经出现的猫捡起,猫等待的时间是被减去的时间减去出现的时间 猫可以等人,人不能等 ...
- 如何创建一个基于命令行工具的跨平台的 NuGet 工具包
命令行可是跨进程通信的一种非常方便的手段呢,只需启动一个进程传入一些参数即可完成一些很复杂的任务.NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法,同时还是一个 .NE ...
- WebLogic11g-创建域(Domain)及基本配置
转:http://www.codeweblog.com/weblogic11g-%e5%88%9b%e5%bb%ba%e5%9f%9f-domain-%e5%8f%8a%e5%9f%ba%e6%9c% ...
- java和c++中的DES\3DES\Base64
首先来看一段java中对字符串加解密的代码: //密钥 private String key = "123456789012345678901234"; //解密过程,先用Base ...
- HashMap,LinkedHashMap,TreeMap之间的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap . Map 主要用于存储键( ...
- 【angularJS】简介
简介 AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑 ...
- 【mysql】VS2017 EF使用 mysql
要在vs2017中能打开mysql的连接,需要安装以下扩展 mysql-connector-net-6.9.9+.msi [这里注意不要下载最新8.x.y版本,有坑]mysql-for-visuals ...