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

网友投稿 796 2023-03-16

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

使用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

上一篇:智能运维aiops技术(运维智能化)
下一篇:Linux中的more命令-逐页显示长文本文件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~