安装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