美文网首页DevOps/SRE
Vagrant搭建虚拟机集群

Vagrant搭建虚拟机集群

作者: 半夏alvin | 来源:发表于2018-09-27 22:29 被阅读0次

    我的个人博客,Vagrant搭建虚拟机集群

    本人的机器环境是:MaxOS

    工具准备

    1. 安装 VirtualBox

    2. 安装 Vagrant

    Vagrantfile

    1. 初始化一个工作目录

    比如:~/Document/vagrant

    使用命令:vagrant init初始化,会自动生成Vagrantfile文件

    2. 下载centos系统

    vagrant box add centos/7
    

    Vagrant Box的中央仓库地址

    3. 配置Vagrantfile文件,创建一个3个节点的虚拟机

    Vagrant.configure("2") do |config|
       (1..3).each do |i|
            config.vm.define "node#{i}" do |node|
                # 设置虚拟机的Box
                node.vm.box = "centos/7"
    
                # 设置虚拟机的主机名
                node.vm.hostname="node#{i}"
    
                # 设置虚拟机的IP
                node.vm.network "private_network", ip: "192.168.56.#{100+i}"
    
                # 设置主机与虚拟机的共享目录
                # node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"
    
                # VirtaulBox相关配置
                node.vm.provider "virtualbox" do |v|
                    # 设置虚拟机的名称
                    v.name = "node#{i}"
                    # 设置虚拟机的内存大小
                    v.memory = 2048
                    # 设置虚拟机的CPU个数
                    v.cpus = 1
                end
            end
       end
    end
    

    语法还是比较易懂的,下面介绍其中几个比较关键的句法

    deploy.vm.provider

    这句指定了虚拟机的提供者是。本例中是 virtualbox。需要注意的是 Vagrant 只是虚拟机的编排工具,而它本身并不提供虚拟技术,需要跟其他虚拟机软件结合,例如:virtualbox、libvirt。接下来的 v 就是对这台虚拟机的设置。

    • v.name:virtualbox 中这台虚拟机的名字。
    • v.memory:该虚拟机的内存大小,单位是 MB。
    • v.cpus:该虚拟机的 CPU 核数。

    vm.box

    该虚拟机的初始化镜像名称,这里是 centos/7

    vm.hostname

    该虚拟机的 hostname,很重要,ssh 连接时用的就是这个名字。请起一个有意义的名字,不然以后又得重设啦。

    vm.network

    网络设置,Vagrant 有三种网络设置模式:

    Forwarded port

    这种方式把本机和虚拟机的端口进行映射,例如:

    config.vm.forwarded_port 80, 8080

    这是把虚拟机的 80 端口映射到宿主机的 8080 端口,这样访问宿主机的 8080 端口就相当于访问虚拟机的 80 端口了。

    Private network

    这种方式是私有网络,只允许宿主机访问虚拟机。如果多个虚拟机设定在同一个网段,那么几个虚拟机之间也可以互相访问。相当于搭建了个小型集群。

    Public network

    这种方式虚拟机的网络配置跟宿主机的网络配置一样,在外网别可以像访问宿主机一样访问虚拟机。

    启动虚拟机

    之前介绍的,就是本地搭建集群所需掌握的 Vagrantfile 文件格式的基本内容了。下面介绍如何从这个配置文件来启动这组虚拟机。

    将上面的文件保存为 Vagranfile,然后在 Vagranfile 文件所在目录执行:

    vagrant up
    

    这时候整个集群启动完毕了。

    使用虚拟机

    前面说过要连接虚拟机,是要使用虚拟机的 hostname,比如:

    vagrant ssh node1
    

    这句命令会以 vagrant 的用户登录到 deploy 虚拟机节点,然后可以用 sudo su 命令获得 root 权限。

    用一下指令可以查看虚拟机的 ssh 配置详细情况:

    vagrant ssh-config
    

    当我们想暂时关闭虚拟机时可以:

    vagrant halt
    

    这个命令会关掉整组虚拟机,要是我们只想关掉 deploy 可以用:

    vagrant halt node1
    

    当我们玩腻了,想要删掉虚拟机可以:

    vagrant destroy
    

    Vagrant 会每台机子询问一遍,你需要打 3 个 y 来删除这四台机子。

    免密登陆

    (1)配置hosts

    每台机器上都做如下配置:

    vi /etc/hosts
    
    增加如下内容:
    192.168.56.101 node1
    192.168.56.102 node2
    192.168.56.103 node3
    

    (2) 生成秘钥

    ssh-keygen -t rsa
    

    默认的路径在/home/vagrant/.ssh/

    将主机公钥复制到其他虚拟机即可实现免密登陆:

    cat id_rsa.pub | ssh vagrant@node1 'cat >> /home/vagrant/.ssh/authorized_keys'
    

    如果免密登陆失败,是ssh密码校验没有开启,可以如下操作:

    vi /etc/ssh/sshd_config
    开启如下配置:
    PasswordAuthentication yes
    systemctl restart sshd
    

    这样就全部完成啦!!!

    相关文章

      网友评论

        本文标题:Vagrant搭建虚拟机集群

        本文链接:https://www.haomeiwen.com/subject/lswyoftx.html