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