使用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引擎置于集群模式中.为了充分利用群体模式,可以在集群中添加节点: 添加工作节点可以增加容量.当你将服 ...
随机推荐
- SEO中H1标签的用法- 1
在网上找了很多关于H1标签对SEO意义的资料,不可否认H1对SEO具有重大的意义,但是具体情况每个人有每个人的见解吧.这里主要根据网上搜索的资料,以及自己的一些经验整理出来的,但是本人毕竟不是专业SE ...
- 每天一个linux命令:【转载】ls命令
ls命令是linux下最常用的命令.ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...
- BZOJ1017: [JSOI2008]魔兽地图DotR【树形DP】【玄学】
Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defense of the Anc ...
- Roslyn 的确定性构建
注意到每次编译完之后,你的 dll 或者 exe 是不一样的吗?本来这并没有什么大不了的,但大家都知道数字和鹅厂的安全软件遍布在我们大(tiān)陆(cháo)地区的大量电脑上,它们的查杀策略是——凡 ...
- Tornado部署与运行
运行多个Tornado实例 网页响应不是特别的计算密集型处理多个实例充分利用 CPU多端口怎么处理4.使用Supervisor监控Tornado进程安装(注意看是否需要指定使用python2版本) s ...
- jstl_core标签库
先导入这个 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 1 & ...
- bzoj 2178 圆的面积并——辛普森积分
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2178 把包含的圆去掉.横坐标不相交的一段一段圆分开算.算辛普森的时候预处理 f( ) ,比如 ...
- BZOJ2384:[CEOI2014]Match
浅谈\(KMP\):https://www.cnblogs.com/AKMer/p/10438148.html 题目传送门:https://lydsy.com/JudgeOnline/problem. ...
- 【转载】细粒度图像识别Object-Part Attention Driven Discriminative Localization for Fine-grained Image Classification
细粒度图像识别Object-Part Attention Driven Discriminative Localization for Fine-grained Image Classificatio ...
- 快速创建yii2 RESTful api的小记
1.复制backend的应用到同级目录,改名叫api 2.然后就是配置项修改,common和api目录下的 common下: bootstrap.php最后添加一行配置 api/config/main ...