如今,單機服務器的時代已經過去了,部署任何服務,如果不多加幾臺服務器,就沒辦法讓人心安。
而且在本地自己學習測試的時候,也經常需要用到服務器集群,比如搭建一個 MySQL 集群,一個 Redis 集群,一個 HDFS 集群,但是為了測試就買云服務器未免有些太奢侈了,所以搭建本地集群是一種既經濟又實惠的方式。
這篇文章介紹一種在本地搭建服務器集群的方法。
軟硬件要求:
一臺電腦(系統不限,配置高一點更好)
VirtualBox
Centos7
VirtualBox 提供了各個系統的安裝版本,下載完成后,直接點擊軟件包進行安裝即可,不再贅述。
Centos 可以選擇自己需要的版本,或者 Linux 的其他發行版本也行,注意要選擇 Minimal 版本,用作服務器,不需要桌面之類的,這樣服務器鏡像的體積就可以很小。
本文搭建搭建 centos 集群的目標如下:
使用虛擬機搭建一個擁有三臺服務器的集群
三臺虛擬機都可以與宿主機互相訪問
三臺虛擬機都可以訪問外網
三臺機器之間可以不需要輸入密碼直接使用 ssh 連接
本文基于 Mac os 10.15.5,VirtualBox6.1.8,centos7,另外閱讀本文需要有一些基本的網絡知識
安裝服務器
在開始之前,需要在 VirtualBox 的全局配置上加一塊網卡,如下圖所示:
在這里需要注意的是 IPv4 的地址和網絡掩碼,IPv4 地址就會成為整個服務器集群的網關,通常情況下不需要修改(如果你對計算機網絡如數家珍,那輕便,隨便改),設置好網關和子網掩碼之后,后續配置的虛擬機 IP 都需要在這個網段內。
然后就可以創建一個虛擬機,名字隨便設置,選擇好目標文件夾,用來存儲虛擬機的相關文件。
我們要安裝的 centos7 是 Linux,所以虛擬機類型選擇 Linux,版本選擇里面并沒有 Centos 的選項,那么選擇 Red Hat(64-bit) 就可以了:
配置完成后就要給虛擬機分配內存,按照自己的電腦配置就行選擇,基本上 2G 左右就可以了:
然后就是創建虛擬硬盤,由于是無圖形界面的 Centos系統,默認的配置也夠用了:
到這里,虛擬機就創建好了,接下來要為虛擬機提供系統的啟動鏡像,選中虛擬機,點擊設置:
再點擊存儲:
選擇下載好的鏡像:
再選擇網絡,默認情況下只啟用了一塊網卡,為了滿足后續的需求,我們需要再開啟一塊網卡:
選擇 host-only 模式:
點擊 ok 保存配置,然后就可以啟動虛擬,第一次啟動會安裝系統,安裝的過程中設置 root 密碼,虛擬機的安裝就完成了。
為了組成一個服務器集群,我們需要三個虛擬機,另外兩臺的安裝方式和上面一樣。
網絡配置
在本文中,我使用 NAT + host-only 的方式來完成虛擬機既能訪問外部網絡,宿主機也能訪問虛擬機的網絡配置,但這不是唯一的方式。
剛安裝好的虛擬機無法訪問外部網絡,這是因為虛擬機的網卡還沒有開啟,先進入到虛擬機開啟網卡,讓虛擬機可以通過 NAT 的方式訪問外網,然后使用 host-only 的方式實現宿主機訪問虛擬機。
使用 root 身份登錄進系統,進入到網絡的配置目錄:
cd /etc/sysconfig/network-scripts/
如果前面配置沒有出錯的話,在這里可以看到兩個網卡的配置的:
ifcfg-enp0s3 就對應 NAT 配置的那張網卡,ifcfg-enp0s8 就對應 host-only 配置的網卡。
先來配置 NAT 網絡,使用 vi 打開 ifcfg-enpos3 配置:
vi 是 Linux 系統自帶的一個編輯器
把 ONBOOT 的值改成 yes 就可以,表示開機啟用這個網卡,配置完 NAT 之后,就可以在虛擬機內訪問互聯網了。
再來配置一下 host-only 網絡:
首先要把網絡從 dhcp 自動獲取 ip 改成 static,再同樣設置 ONBOOT 為 yes,IPADDR 指定這臺虛擬機的固定 IP,IP 可以隨意設置,但是要在這個網段內,NETMASK 配置的是這個網絡的網絡掩碼。
最后配置一下網關:
vi /etc/sysconfig/networking
填入以下內容:
NETWORKING=yesGATEWAY=192.168.56.2 # 這個值就是在配置 VirtualBox 全局網卡時的網關的 IP,不要配錯了
這些都配置完成之后,重啟網絡服務:
service network restart
然后訪問外網:
宿主機訪問虛擬機:
單臺的網絡已經配置好了,另外兩臺按照同樣的配置就行,但需要為虛擬機配置不同的 IP。
在本文的例子中,三臺虛擬機的 IP 為:
192.168.56.3
192.168.56.4
192.168.56.5
服務器互聯
到這里,三臺服務器都能夠連接互聯網,宿主機也可以訪問虛擬機了,虛擬機之間也可以通過 ssh 連接輸入密碼后進行訪問。
但是很多時候服務器之間需要能夠直接傳輸文件,如果每次還需要輸入密碼,那就太不方便了。
機器之間登錄還是使用 ssh,但是可以改良一下,每臺服務器把其他兩臺設置為信任的機器,這樣就可以直接登錄,而不用每次都輸入密碼。
以 IP 為 192.168.56.3 的虛擬機為例,通過 ssh-keygen 生成公鑰和密鑰:
然后使用 ssh-copy-id 將公鑰拷貝到像免密登錄的機器:
然后就可以免密登錄了:
ssh root@192.168.56.4ssh root@192.168.56.5
另外兩臺機器進行同樣的配置,然后三臺虛擬機之間就可以相互免密訪問。