实时警报通知:微信告警通知的重要性解析
796
2023-03-16
使用Vagrant创建多节点虚拟机集群
摘要: 在前一篇博客中,我介绍了使用Vagrant快速创建虚拟机,但是所创建的只是单个虚拟机。这篇博客将介绍使用Vagrant创建多节点虚拟机集群,可以作为Hadoop,Spark以及Storm等分布式系统的运行环境。
作者: KiwenLau日期: 2016-07-03
本文所有操作是在MacBook上进行的,Windows上的操作大部分一致,但是可能会有一些小问题。
一. 集群创建
1. 安装VirtualBox
2. 安装Vagrant
3. 下载Box
vagrant box add ubuntu/trusty64
vagrant box add ubuntu/trusty64
Box相当于虚拟机所依赖的镜像文件。4. 编辑Vagrantfile
mkdir vagrant-clustercd vagrant-clustervim 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: <
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: <
与创建单个虚拟机相比,创建多个虚拟机时多了一层循环,而变量i可以用于设置节点的名称与IP,使用#{i}取值:
(1..3).each do |i|end
(1..3).each do |i|end
可知,一共创建了3个虚拟机。5. 在桌面上创建share目录桌面上的share目录将与虚拟机内的/home/vagrant/share目录内容实时同步
mkdir ~/Desktop/share
mkdir ~/Desktop/share
6. 创建虚拟机
vagrant up
vagrant up
创建3个虚拟机大概需要15分钟,当然这和机器性能还有网速相关。安装Docker可能会比较慢,不需要的话删除下面几行就可以了:
# 使用shell脚本进行软件安装和配置node.vm.provision "shell", inline: <
# 使用shell脚本进行软件安装和配置node.vm.provision "shell", inline: <
下面是Vagrant虚拟机的配置,可以根据需要进行更改:用户/密码: vagrant/vagrant共享目录: 桌面上的share目录将与虚拟机内的/home/vagrant/share目录内容实时同步内存:2GBCPU: 1二. 集群管理1. 常用命令下面是一些常用的Vagrant管理命令,操作特定虚拟机时仅需指定虚拟机的名称。vagrant ssh: SSH登陆虚拟机vagrant halt: 关闭虚拟机vagrant destroy: 删除虚拟机vagrant ssh-config 查看虚拟机SSH配置启动单个虚拟机:
vagrant up node1
vagrant up node1
启动多个虚拟机:
vagrant up node1 node3
vagrant up node1 node3
启动所有虚拟机:
vagrant up
vagrant up
2. SSH免密码登陆使用vagrant ssh命令登陆虚拟机必须切换到Vagrantfile所在的目录,而直接使用虚拟机IP登陆虚拟机则更为方便:
ssh vagrant@192.168.59.2
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'
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脚本进行软件安装和配置node.vm.provision "shell", inline: <
其实就是嵌入了一段Shell脚本进行软件的安装和配置,这里我安装了Docker,当然也可以安装其他所需要的软件。修改此段内容之后,重新创建虚拟机需要使用”–provision”选项。
vagrant haltvagrant up --provision
vagrant haltvagrant up --provision
4. 共享目录挂载出错VirtualBox设置共享目录时需要在虚拟机中安装VirtualBox Guest Additions,这个Vagrant会自动安装。但是,VirtualBox Guest Additions是内核模块,当虚拟机的内核升级之后,VirtualBox Guest Additions会失效,导致共享目录挂载失败,出错信息如下:
安装Vagrant插件vagrant-vbguest可以解决这个问题,因为该插件会在虚拟机内核升级之后重新安装VirtualBox Guest Additions。
vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-vbguest
发表评论
暂时没有评论,来抢沙发吧~