需求
平時在做一些實驗或學習的時候,比如rocketmq、kafaka、zookeeper等,需要在虛擬機上創建幾個虛擬機組成集群來做實驗;一般有幾個要求:
- 虛擬機能訪問網絡,需要下載安裝東西
- 虛擬機的ip需要固定;不然在虛擬機重啟或者電腦從家里拿到辦公室的時候,ip變了,又要一個個進命令行去看ip,然后改代碼里的配置,麻煩的很
- 虛擬機之間能互相訪問,集群/主從架構節點需要互相通信
網絡連接方式選擇
可以訪問網絡的連接方式:
- nat(網絡地址轉換)
- 橋接
但是,
- NAT不支持靜態IP、虛擬機之間不能互相訪問
- 橋接的話會占用局域網的ip,在自己屋里還好,設備少,可以避開,要是拿到辦公環境就容易和其他機器的ip沖突了
多塊網卡 NAT + Host Only
直接用橋接模式,倒是能滿足需求,但是也不大好; 但是我們這是用的虛擬機,有多個網卡

我們可以通過多個網卡,設置不同的網絡連接方式,達到目標;
- 第一個網卡選擇 NAT 模式使得虛擬機能訪問網絡
- 第二個網卡選擇 Host Only 使多個虛擬機之間能互相通信並且還能設置靜態ip
1. 第一塊網卡設置NAT
首先 VirtualBox 使用 NAT 模式,需要先開始一個全局設置 (管理 -> 全局設置)


然后網絡連接設置為 NAT

ping 一下網絡試試

2. 第二塊網卡設置 Host Only

設置靜態ip
進入網卡配置目錄 cd /etc/sysconfig/network-scripts
找 ifcfg- 開頭的文件, 由於現在有多個網卡,ifcfg的文件有多個

那么編輯哪個呢?網卡有唯一的 mac 地址,看看第二塊host only 的網卡mac地址為

看看虛擬機網絡 ip addr

可以看到,第二塊網卡mac地址對應的設備為 enp0s8
那么編輯的文件應該是 ifcfg-enp0s8
BOOTPROTO=static ## 改為static靜態ip
IPADDR=192.168.56.104 ##設置靜態ip
NETMASK=255.255.255.0 ## 設置子網掩碼
注意:IPADDR 和 NETMASK 要和宿主機的網絡設置匹配;我自己的筆記本 ip是 192.168.56.1 所以上面虛擬機的ip地址只能設置成 192.168.56.x 這個ip段

從筆記本(宿主)ping一下虛擬機試試

成功! 其他台虛擬機可以用一樣的方式去設置,或者再配置完整個虛擬機環境(網絡、基本的java環境、zookeeper節點)后,直接利用virtual box復制后改改ip 更省事
