安裝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
創(chuàng)建虛擬機(jī)
操作系統(tǒng)為Ubuntu倔毙,選擇VDI 格式存儲(chǔ)勇婴。網(wǎng)絡(luò)配置使用兩個(gè)網(wǎng)卡
- eth0 使用Internal 方式械哟,為虛擬機(jī)集群建立內(nèi)網(wǎng)通信从撼。
- eth1 使用NAT 方式配合使用端口轉(zhuǎn)發(fā)详羡,為虛擬機(jī)建立與外界的通信仍律。
虛擬網(wǎng)卡配置
選項(xiàng) | 特點(diǎn) | 其他 |
---|---|---|
NAT | 虛擬機(jī)通過主機(jī)訪問外網(wǎng) | 虛擬機(jī)之間無法互相訪問,主機(jī)無法訪問虛擬機(jī)实柠,外網(wǎng)可以通過端口轉(zhuǎn)發(fā) (port forwarding) 訪問虛擬機(jī)水泉。 |
Bridged | 虛擬機(jī)通過主機(jī)網(wǎng)卡與外網(wǎng)橋接,有獨(dú)立的IP 地址 | 虛擬機(jī)之間、虛擬機(jī)與主機(jī)之間草则、虛擬機(jī)與外網(wǎng)之間都可以互相訪問钢拧。 |
Host-only | 虛擬機(jī)通過Host-only網(wǎng)卡與主機(jī)之間建立內(nèi)網(wǎng) (192.168.56.0/24) | 虛擬機(jī)之間、虛擬機(jī)與主機(jī)之間可以互相訪問炕横。虛擬機(jī)與外網(wǎng)之間無法互相訪問源内。 |
Internal | 虛擬機(jī)之間建立內(nèi)網(wǎng) | 虛擬機(jī)之間可以互相訪問。虛擬機(jī)與主機(jī)之間份殿、虛擬機(jī)與外網(wǎng)之間無法互相訪問膜钓。 |
NAT Network | 虛擬機(jī)之間建立內(nèi)網(wǎng),并通過主機(jī)訪問外網(wǎng) | 虛擬機(jī)之間可以互相訪問卿嘲。主機(jī)和外網(wǎng)無法訪問虛擬機(jī)颂斜。 |
配置sudo 無需密碼
$ echo "devops ALL=(ALL:ALL) NOPASSWD: ALL" > nopasswd
$ sudo chown root.root nopasswd
$ sudo mv nopasswd /etc/sudoers.d
網(wǎng)絡(luò)配置
內(nèi)網(wǎng)IP 使用192.168.1.0 網(wǎng)段的靜態(tài)地址,外網(wǎng)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
將所有的集群節(jié)點(diǎn)添加到/etc/hosts 文件中沃疮。
配置ssh
安裝ssh,并在集群內(nèi)各個(gè)節(jié)點(diǎn)之間建立無需密碼的連接梅肤。
# 所有節(jié)點(diǎn)執(zhí)行
$ sudo apt-get install ssh
$ ssh -keygen -t rsa
# master執(zhí)行
$ cat ~/.ssh/id_rsa.pub > authorized_keys
# slave執(zhí)行
$ ssh-copy-id -i ~/.ssh/id_rsa.pub master
# master分發(fā)文件
$ scp ~/.ssh/authorized_keys devops@slave1:.ssh
如果需要由root 建立ssh司蔬,修改文件/etc/ssh/sshd_config,將PermitRootLogin 設(shè)為yes凭语。
配置ntp
安裝ntp葱她,并在集群間同步時(shí)間。
# 所有節(jié)點(diǎn)執(zhí)行
$ sudo apt-get install ntp
# master臨時(shí)同步時(shí)間
$ sudo ntpdate 0.ubuntu.pool.ntp.org
$ sudo vim /etc/ntp.conf
更改配置文件似扔,添加以下內(nèi)容吨些,只允許局域網(wǎng)內(nèi)部同步時(shí)間。
$ 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臨時(shí)同步時(shí)間
$ sudo ntpdate master
更改配置文件炒辉,添加以下內(nèi)容豪墅,并注釋其余的server 配置。
server master
關(guān)閉防火墻
$ sudo ufw disable
減少使用swap 分區(qū)
$ sudo /etc/sysctl.conf
添加以下內(nèi)容
vm.swappiness=0
并驗(yàn)證輸出是否為0
$ cat /proc/sys/vm/swappiness
導(dǎo)入VDI 鏡像
創(chuàng)建并注冊虛擬機(jī)
$ 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
設(shè)置虛擬機(jī)參數(shù)黔寇,網(wǎng)卡配置偶器、可使用的內(nèi)存、允許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
啟動(dòng)虛擬機(jī)
$ VBoxManage startvm master --type headless
顯示虛擬機(jī)信息
$ VBoxManage showvminfo master
關(guān)閉虛擬機(jī)
$ VBoxManage controlvm master acpipowerbutton