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

本文所有操作是在MacBook上进行的,Windows上的操作大部分一致,但是可能会有一些小问题。

一. 集群创建

1. 安装VirtualBox

2. 安装Vagrant

3. 下载Box

vagrant box add ubuntu/trusty64

Box相当于虚拟机所依赖的镜像文件。

4. 编辑Vagrantfile

mkdir vagrant-cluster
cd vagrant-cluster
vim Vagrantfile

Vagrantfile如下,可以通过注释理解每个自定义配置的含义:

Vagrant.configure("2") do |config|

	(1..3).each do |i|

		config.vm.define "node#{i}" do |node|

		# 设置虚拟机的Box
node.vm.box = "ubuntu/trusty64" # 设置虚拟机的主机名
node.vm.hostname="node#{i}" # 设置虚拟机的IP
node.vm.network "private_network", ip: "192.168.59.#{i}" # 设置主机与虚拟机的共享目录
node.vm.synced_folder "~/Desktop/share", "/home/vagrant/share" # VirtaulBox相关配置
node.vm.provider "virtualbox" do |v| # 设置虚拟机的名称
v.name = "node#{i}" # 设置虚拟机的内存大小
v.memory = 2048 # 设置虚拟机的CPU个数
v.cpus = 1
end # 使用shell脚本进行软件安装和配置
node.vm.provision "shell", inline: <<-SHELL # 安装docker 1.11.0
wget -qO- https://get.docker.com/ | sed 's/docker-engine/docker-engine=1.11.0-0~trusty/' | sh
usermod -aG docker vagrant SHELL end
end
end

与创建单个虚拟机相比,创建多个虚拟机时多了一层循环,而变量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脚本进行软件安装和配置
node.vm.provision "shell", inline: <<-SHELL # 安装docker 1.11.0
wget -qO- https://get.docker.com/ | sed 's/docker-engine/docker-engine=1.11.0-0~trusty/' | sh
usermod -aG docker vagrant 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脚本进行软件安装和配置
node.vm.provision "shell", inline: <<-SHELL # 安装docker 1.11.0
wget -qO- https://get.docker.com/ | sed 's/docker-engine/docker-engine=1.11.0-0~trusty/' | sh
usermod -aG docker vagrant
SHELL

其实就是嵌入了一段Shell脚本进行软件的安装和配置,这里我安装了Docker,当然也可以安装其他所需要的软件。修改此段内容之后,重新创建虚拟机需要使用”–provision”选项。

vagrant halt
vagrant up --provision

4. 共享目录挂载出错

VirtualBox设置共享目录时需要在虚拟机中安装VirtualBox Guest Additions,这个Vagrant会自动安装。但是,VirtualBox Guest Additions是内核模块,当虚拟机的内核升级之后,VirtualBox Guest Additions会失效,导致共享目录挂载失败,出错信息如下:

Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was: mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant The error output from the last command was: stdin: is not a tty
/sbin/mount.vboxsf: mounting failed with the error: No such device

安装Vagrant插件vagrant-vbguest可以解决这个问题,因为该插件会在虚拟机内核升级之后重新安装VirtualBox Guest Additions。

vagrant plugin install vagrant-vbguest

版权声明:
转载时请注明作者KiwenLau以及本文地址:
https://kiwenlau.com/2016/07/03/vagrant-vm-cluster/

使用Vagrant创建多节点虚拟机集群的更多相关文章

  1. 图文详解如何使用VMWare创建一套虚拟机“集群”

    开篇废话 在学习各种高大上的大数据产品也好,模拟部署我们的程序到PRD环境也好,总离不开需要一个机器集群.然而通常我们都没有那么多银子去购买多台云服务器,更没钱购买物理机.所以对于技术研究来说,最经济 ...

  2. 仅需60秒,使用k3s创建一个多节点K8S集群!

    作者: Dawid Ziolkowski丨Container Solution云原生工程师 最近,我一直在Kubernetes上进行各种测试和部署.因此,我不得不一次又一次创建和销毁Kubernete ...

  3. 实战weblogic集群之创建节点和集群

    一.启动weblogic,访问控制台 weblogic的domain创建完成后,接下来就可以启动它,步骤如下: $ cd /app/sinova/domains/base_domain/bin $ . ...

  4. 创建多个节点的集群 - Elastic Stack 8.0

    文章转载自:https://mp.weixin.qq.com/s/k6u9Q2nebW9qgZMghQwJng 详述如何安装3个节点的 Elasticsearch 集群.我将使用 Docker 来进行 ...

  5. 部署CentOS虚拟机集群

    1.在虚拟机中安装CentOS (1)使用CentOS-6.5-i386-minimal.iso.(2)创建虚拟机:打开Virtual Box,点击“新建”按钮,点击“下一步”,输入虚拟机名称为esh ...

  6. 基于Docker快速搭建多节点Hadoop集群--已验证

    Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop ...

  7. 理解 OpenStack Swift (1):OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置

    本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...

  8. kubadm创建k8s v1.10集群

    kubadm创建k8s集群 1:服务器信息以及节点介绍 主机名 ip 备注 k8s-master 192.168.0.104 master etcd keepalived k8s-client1 19 ...

  9. docker swarm英文文档学习-6-添加节点到集群

    Join nodes to a swarm添加节点到集群 当你第一次创建集群时,你将单个Docker引擎置于集群模式中.为了充分利用群体模式,可以在集群中添加节点: 添加工作节点可以增加容量.当你将服 ...

随机推荐

  1. Android学习笔记之Android Studio添加新的Activity

    1.创建Android项目工程:AndroidTest 创建过程可参考网上诸多教程. 2.添加新的Activity,步骤如下 a. 在layout文件夹上右键,New-Activity-相应Activ ...

  2. 动态样式语言Sass&Less介绍与区别

    一. Sass/Scss&Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,语法跟css一样(但多了些功能),比css好写, ...

  3. Jsp邮件找回密码全攻略

    [来源网络  http://www.2cto.com/kf/201502/376374.html] 一般大型网站我们登录的时候,密码忘了都有个功能可以找回密码. 细数下大致的方法: 1.直接把密码发送 ...

  4. ASP.NET Core 中的SEO优化(2):中间件中渲染Razor视图

    前言 上一篇文章<ASP.NET Core 中的SEO优化(1):中间件实现服务端静态化缓存>中介绍了中间件的使用方法.以及使用中间件实现服务端静态化缓存的功能.本系列文章的这些技巧都是我 ...

  5. Maven系列(二)之安装和配置详解

    检查JDK环境 在安装Maven之前,首先要确认你已经正确安装了JDK.Maven可以运行在JDK 1.4及以上的版本上. 打开cmd输入: java -version 下载Maven Maven官网 ...

  6. 集群搭建SSH的作用及这些命令的含义

    authorized_keys文件 远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中.公钥就是一段字符串,只要把它追加在authorized_ ...

  7. svg图片的缩放拖拽

    svg是一种不错的矢量图,有时候我们会使用这样的图片来作为展示图,因为它不会因为放大缩小而失真. 好了,不扯淡了,废话少说,直入主题吧. 首先确定你是要深入学习还是要简单的把遇到的小任务解决一下,以后 ...

  8. 《selenium2 python 自动化测试实战》(3)——操作测试对象

    上一节我们说了如何定位元素,定位到元素以后就涉及到对元素的操作了,webdriver中常用的操作元素的方法有: clear  ——用于清除输入框的默认内容 send_keys  ——用于在一个输入框里 ...

  9. VS2013下的64位与32位程序配置

    VS2013下的64位与32位程序配置   在Windows 7 64bit和Visual Studio 2013下生成64位程序. 新建一个Visual Studio Win32 Console项目 ...

  10. 几个中文排版web 类库

    1. typo.css http://typo.sofi.sh/ 2.  yue.css http://lab.lepture.com/yue.css/ 规范,统一才是开发的王道.