使用VirtualBox搭建虚拟机集群

安装VirtualBox

$ sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" >> /etc/apt/sources.list.d/virtualbox.list'
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install virtualbox-5.1

创建虚拟机

操作系统为Ubuntu,选择VDI 格式存储。网络配置使用两个网卡

  • eth0 使用Internal 方式,为虚拟机集群建立内网通信。
  • eth1 使用NAT 方式配合使用端口转发,为虚拟机建立与外界的通信。

虚拟网卡配置

选项特点其他
NAT虚拟机通过主机访问外网虚拟机之间无法互相访问,主机无法访问虚拟机,外网可以通过端口转发 (port forwarding) 访问虚拟机。
Bridged虚拟机通过主机网卡与外网桥接,有独立的IP 地址虚拟机之间、虚拟机与主机之间、虚拟机与外网之间都可以互相访问。
Host-only虚拟机通过Host-only网卡与主机之间建立内网 (192.168.56.0/24)虚拟机之间、虚拟机与主机之间可以互相访问。虚拟机与外网之间无法互相访问。
Internal虚拟机之间建立内网虚拟机之间可以互相访问。虚拟机与主机之间、虚拟机与外网之间无法互相访问。
NAT Network虚拟机之间建立内网,并通过主机访问外网虚拟机之间可以互相访问。主机和外网无法访问虚拟机。

配置sudo 无需密码

$ echo "devops ALL=(ALL:ALL) NOPASSWD: ALL" > nopasswd
$ sudo chown root.root nopasswd
$ sudo mv nopasswd /etc/sudoers.d

网络配置

内网IP 使用192.168.1.0 网段的静态地址,外网IP 使用DHCP 分配。

$ sudo vim /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0

auto eth1
iface eth1 inet dhcp

将所有的集群节点添加到/etc/hosts 文件中。

配置ssh

安装ssh,并在集群内各个节点之间建立无需密码的连接。

# 所有节点执行
$ sudo apt-get install ssh
$ ssh -keygen -t rsa

# master执行
$ cat ~/.ssh/id_rsa.pub > authorized_keys

# slave执行
$ ssh-copy-id -i ~/.ssh/id_rsa.pub master

# master分发文件
$ scp ~/.ssh/authorized_keys devops@slave1:.ssh

如果需要由root 建立ssh,修改文件/etc/ssh/sshd_config,将PermitRootLogin 设为yes。

配置ntp

安装ntp,并在集群间同步时间。

# 所有节点执行
$ sudo apt-get install ntp

# master临时同步时间
$ sudo ntpdate 0.ubuntu.pool.ntp.org
$ sudo vim /etc/ntp.conf

更改配置文件,添加以下内容,只允许局域网内部同步时间。

$ sudo vim /etc/ntp.conf

# Allow LAN machines to synchronize with this ntp server
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# slave临时同步时间
$ sudo ntpdate master

更改配置文件,添加以下内容,并注释其余的server 配置。

server master

关闭防火墙

$ sudo ufw disable

减少使用swap 分区

$ sudo /etc/sysctl.conf

添加以下内容

vm.swappiness=0

并验证输出是否为0

$ cat /proc/sys/vm/swappiness

导入VDI 镜像

创建并注册虚拟机

$ VBoxManage createvm --name master --ostype "Ubuntu_64" --basefolder "~/virtualbox/master" --register

挂载硬盘

$ VBoxManage storagectl "master" --name "IDE Controller" --add ide
$ VBoxManage storageattach "master" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium ~/virtualbox/master/master.vdi

设置虚拟机参数,网卡配置、可使用的内存、允许vrde 登录

$ VBoxManage modifyvm master --nic1 intnet
$ VBoxManage modifyvm master --nic2 nat
$ VBoxManage modifyvm master --natpf2 "ssh,tcp,,10000,,22"
$ VBoxManage modifyvm master --memory 2048
$ VBoxManage modifyvm master --vrde on
$ VBoxManage modifyvm master --vrdeport 3398

启动虚拟机

$ VBoxManage startvm master --type headless

显示虚拟机信息

$ VBoxManage showvminfo master

关闭虚拟机

$ VBoxManage controlvm master acpipowerbutton
    原文作者:eriolchan
    原文地址: https://www.jianshu.com/p/418f4fa360bc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞