使用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引擎置于集群模式中.为了充分利用群体模式,可以在集群中添加节点: 添加工作节点可以增加容量.当你将服 ...
随机推荐
- BZOJ4820 Sdoi2017 硬币游戏 【概率期望】【高斯消元】【KMP】*
BZOJ4820 Sdoi2017 硬币游戏 Description 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利.大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实 ...
- BZOJ2243 SDOI2011 染色 【树链剖分】
BZOJ2243 SDOI2011 染色 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色 ...
- css 常用类名
1.页面结构 容器: container 页头:header 内容:content/container 页面主体:main 页尾:footer 导航:nav 侧栏:sidebar 栏目:column ...
- homeland 开源论坛系统搭建试用
备注: 需要使用docker docker-compose 1. clone 代码 git clone https://github.com/ruby-china/homeland-docker. ...
- gradle 插件
1. 系统内置插件的应用 a. 二进制 apply plugin :"pluginname" 比如: java b. 脚本插件 apply from : "version ...
- java I/O进程控制,重定向 演示样例代码
java I/O进程控制,重定向 演示样例代码 package org.rui.io.util; import java.io.*; /** * 标准I/O重定向 */ public class Re ...
- opencv Mat中某点的值
Mat mat = imread("baby.jpg"); Mat p = mat.col().row(); uchar* ptr = (uchar*) p.data; ]; ]; ...
- 怎么使用ping命令进行连通性测试
关于ping命令的作用: ping 命令有助于验证网络层的连通性!一般进行网络故障排除时,可以使用ping 命令向目标计算机或IP地址发送ICMP回显请求,目标计算机会返回回显应答,如果目标计算机不能 ...
- 安装配置limesurvey
下载limesurvey地址:http://www.limesurvey.org/en/stable-release 选择下载 limesurvey200plus-build131122.zip 解压 ...
- node操作mongoDB数据库的最基本例子
连接数据库 var mongo=require("mongodb"); var host="localhost"; var port=mongo.Connect ...