使用Vagrant创建多节点虚拟机集群

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

  1. 作者: KiwenLau

  2. 日期: 2016-07-03

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

一. 集群创建

1. 安装VirtualBox
2. 安装Vagrant
3. 下载Box
vagrant box add ubuntu/trusty64

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

4. 编辑Vagrantfile
mkdir vagrant-clustercd vagrant-clustervim 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: 1. 用户/密码: vagrant/vagrant1. 共享目录: 桌面上的share目录将与虚拟机内的/home/vagrant/share目录内容实时同步1. 内存:2GB1. CPU: 1## 二. 集群管理##### 1. 常用命令下面是一些常用的Vagrant管理命令,操作特定虚拟机时仅需指定虚拟机的名称。1. **vagrant ssh:** SSH登陆虚拟机1. **vagrant halt:** 关闭虚拟机1. **vagrant destroy:** 删除虚拟机1. **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: Docker,当然也可以安装其他所需要的软件。修改此段内容之后,重新创建虚拟机需要使用"--provision"选项。

vagrant haltvagrant up --provision
4. 共享目录挂载出错

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

Failed to mount folders in Linux guest. This is usually becausethe "vboxsf" file system is not available. Please verify thatthe guest additions are properly installed in the guest andcan work properly. The command attempted was:mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrantmount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrantThe 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以及本文地址:
http://kiwenlau.com/2016/07/03/vagrant-vm-cluster/

关键字:vagrant

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部