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