个人虚拟化集群搭建教程
一、寫在前面
- 本教程最重要還是在建設理念與思路,部分步驟中,因網上可輕松查到的資料,故會省略不詳談。
- 實際搭建過程中,幾乎每個步驟均有多重選擇,筆者會適當的描述這些選擇項。
- 本文著重講解利用家用組裝機+pfsense軟路由的方式搭建集群。
二、為什么要搭建個人虛擬化集群?
做為一個開發,你是不是有以下幾個痛點:
- MQ,mysql,redis等開發用軟件越裝越多,已經感覺到計算機明顯變卡
- 開發環境軟件本身以及其下載的文件諸如maven緩存等,占用大量磁盤空間,硬盤嚴重告急
- 開發軟件所需配置也越來越多,已經記不清自己曾經配置過什么,甚至出現配置互相覆蓋影響的問題
- 為了做技術架構探索選型,不得不在本地先安裝許多軟件,設置很多配置,完結后還得刪掉以免影響系統運行速度,浪費諸多時間。
- 安裝了vmware workstation,就為了能跑幾個linux系統做實驗,導致計算機內存告急,運行緩慢。
- 出差時,帶性能好的筆記本太重,帶輕薄的本子又太卡。更麻煩的是,你得在你每臺計算機上重復配置一次,有時候還會遺漏配置項導致出錯。
筆者也曾遇到過此類問題,并困擾了筆者很久。為了解決這個問題,我們可以提升單機的性能,但提升單機性能只能解決部分問題,并不能根本性的解決問題,諸如解決不了環境變量污染的問題。亦或者,我們也可以在云平臺購買按量計費的云主機或者saas服務,此方法好處是能快速的得到你想要的機器,而且可供給的數量幾乎是不限的,但缺點也很明顯,如果你需要長期運行或者所需數量較多,該方法成本會變得相當高昂。
筆者最終解決該問題的方案是,搭建自己的虛擬化集群。
整體的網絡拓撲結構很簡單,如下圖:
三、優勢與劣勢
- 虛擬化集群可以7x24小時不間斷的提供你所需的環境。
- 多重選擇,非常自由的配置,從網絡到主機,從硬件到軟件,基本上你可自主決定。
- 性價比較高,首次成本幾千即可,后續成本基本是電費,根據你設備多少決定,低至大概30+元/月。
- 需要暴露在公網環境下,必然會遭受各種網絡攻擊。
- 可靠性問題,因為只是個人搭建,在控制成本的前提下,可靠性稍弱,但因為個人使用,影響面不大。
- 需要你懂得一些的基礎運維和網絡的知識,諸如設備選型,設備安裝,防火墻配置,網絡環境架設,虛擬化軟件的使用等一系列技能。
- 如果不想托管在專業機房或者單獨隔離的房間,謹慎考慮購買企業級服務器,噪音跟飛機起飛一樣,蕪湖。。。沒聽過的朋友建議上B站感受一下。
- 本方案,基本沒有考慮高可用,所以可靠性相比真正的生產集群會偏低。
- 投入費用較低,1臺全新的Dell服務器的價格,少說也要幾萬元。而家用PC一臺價格在6-7千之間的,性能就相當不錯了。
- 家用組裝機沒有帶外管理功能,發生故障時,可能需要到現場處理。
- 真正的服務器噪音比較大,而家用組裝機噪音比較小。
- 生產服務器是需要放置到無塵且帶有空調的機房的。
總之,可以這么理解,這個方案其實就是拿普通的機器當服務器使用。價格雖然低了,但維護成本高了,可靠性低了,只是因為個人使用,即使出現問題,影響的也只是自己而已,所以可靠性低一些可接受,個人搭建規模不會太大,維護成本總體可控。
四、關鍵性步驟
五、準備公網IP與域名
5.1 局域網還是廣域網?
首先需要明確的是,你要搭建的虛擬化集群,是只想在局域網內使用,還是可以在廣域網上連接?
先說說只是在局域網內使用,建設難度會低一些,但同時,你也喪失了諸多特性。
如你把整個集群建設在公司局域網網內,離開了公司,你就連不上集群了,或者需要依賴于第三方的設備或者軟件才能連的上。當然,很多公司特別是需要做二次驗證的公司,未必會同意你自行接入私人的設備。亦或者,你把集群建設在家里,情況也類似,你在公司就連不上了。
總之,筆者不推薦只搭建在局域網內,本文也只針對于可在廣域網上連接的方案進行介紹。
5.2 注冊域名
注冊域名非常的簡單,網上的教程也很多,可以在阿里云上注冊一個域名并做好備案工作,本文不再贅述。
5.3 準備公網IP地址
你需要能在廣域網上連接到集群,那么你必定會需要一個公網的IP地址。
5.3.1 如何判斷你是否擁有公網IP地址呢?
- 通常在專業的機房,或者你能拉企業專線,那么你大概率會有固定的公網IP地址。
- 如果你是在家中搭建集群,利用的是家庭寬帶,那么你大概率只能有動態的公網IP地址(可能需向寬帶運營商申請)。
5.3.2 如何申請公網IP?
- 如果你搭建在專業的機房,那么請聯系機房管理員為你提供固定公網IP。
- 如果你是家庭寬帶,那么你需要致電你的寬帶運營商,申請獲得一個公網IP,這通常需要幾天時間,會有專人聯系你,后續可能會有專業人員到你家中幫你配置光貓。筆者建議是,鑒于運營商提供的路由器相當一般,功能很少,而且安全性也不是很好,容易受到攻擊。筆者建議自購路由器,運營商專業人員到家中時,你跟專業人員說會用自己的路由器撥號上網,專業服務人員會幫你把光貓配置好,你用自己的路由器撥號可上網即可。
如果能有固定的公網IP,是最好的選擇。因為你向運營商申請的公網IP,它是動態的,更換的頻率各地可能不一致,也許是一周,或者是一個月。這也意味著你需要定期更新域名所綁定的IP地址。因為偶爾會出現更新不及時的情況,特別跨省連接的時候,可能會有一小段時間(可能是幾秒鐘到幾分鐘),會出現連接不上的情況。筆者測試過,最多發現會有15分鐘的中斷時間。
5.3.3 如何更新域名綁定IP地址?
如果你已經有固定公網IP地址,你只需要在域名解析處一次性配置好你的IP地址即可,你可以跳過本小節。
舉個例子,比如你的域名是托管在阿里云上的,你可以使用樹莓派或者ESXi上的一臺linux虛擬機,定時執行一個腳本,獲取公網IP地址,而后利用阿里云SDK更新域名綁定的IP地址。
具體步驟如下:
大致步驟如下:
安裝 python3,virtualenv,創建隔離的python運行環境
請參考 https://help.aliyun.com/document_detail/29777.html
主要思路是獲取域名當前的解析記錄,和實時獲取到的公網IP地址做對比,如果不一致,則更新域名的解析記錄。
腳本如下,"xxx"處是需要你自行修改的部分:
#!/usr/bin/env python #coding=utf-8from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest from aliyunsdkalidns.request.v20150109.DescribeDomainRecordInfoRequest import DescribeDomainRecordInfoRequestimport requests import re import time from time import strftime,gmtimeimport jsonclient = AcsClient('xxx', 'xxx', 'xxx') record_id = "xxx"request1 = DescribeDomainRecordInfoRequest() request1.set_accept_format('json') request1.set_RecordId(record_id) response1 = client.do_action_with_exception(request1) data_json = str(response1, encoding='utf-8') #print(data_json) ali_record_value = json.loads(data_json)['Value'] print (strftime("%Y-%m-%d %H:%M:%S", gmtime()), "ali record value : ", ali_record_value)html_text = requests.get("http://pv.sohu.com/cityjson?ie=utf-8").text ip_text = re.search(u"var returnCitySN = {\"cip\": \"(.*?)\", \"cid.*\"};", html_text) new_public_ip = ip_text.group(1)if new_public_ip != ali_record_value :request2 = UpdateDomainRecordRequest()request2.set_accept_format('json')request2.set_RecordId(record_id)request2.set_RR("xxx")request2.set_Type("A")request2.set_Value(new_public_ip)response2 = client.do_action_with_exception(request2)print(strftime("%Y-%m-%d %H:%M:%S", gmtime()), str(response2, encoding='utf-8'))print(strftime("%Y-%m-%d %H:%M:%S", gmtime()), "update complete, ali_record_value is ", new_public_ip)定時任務配置為每5分鐘運行一次
六、購買設備
6.1 概要
搭建之初,你會需要購買一些的設備,大致有以下三大類:
- 網絡設備,如路由器,交換機,網線
- 服務器機柜
- 計算機設備,如服務器,樹莓派,NAS
6.2 網絡設備
6.2.1 路由器
這里所說的路由器可不是家用的帶wifi功能的路由器,而是企業級的路由器或者工控機。某寶或者某東上面都有售賣TPLINK,華為,H3C等企業級路由器。筆者的建議是,可以購買一臺工控機,自行安裝pfsense軟路由系統,它既有路由的功能,也有防火墻的功能,安全上能有一定的保障。
要點:
- 不要購買普通的家用路由器,功能較少且難以保障穩定性與安全性。應該買帶有線千兆網口的企業級路由器,如果買帶耳朵能固定在機架上面的那就更好了
- 可以考慮買工控機,諸如倍控。自己安裝軟路由系統,諸如pfsense,iKuai,RouteOS等等。
- 性能上,根據自己需要的帶機量而定,一般價格在大幾百元到1千多的區間的即可。
6.2.2 交換機
要點:
- 考慮到未來的拓展性,建議你買16口或者24口全千兆的二層交換機。
- 如果交換機可以上機架,那就更完美了。因為不論是16還是24口的交換機,必定會有很多條網線,不上機架的話,網線容易亂糟糟一團,不利于打理。
- 除非你的確有需要,否則不一定要買網管型的交換機。
6.3 服務器機柜
如果你打算托管在機房,請跳過本小節。
不管搭建在家里,或是在公司,總會需要有個地方放置所有的設備,這時會需要一個機柜。某寶或者某東上面有很多機柜選擇,而且基本都可送貨到樓下。如果你不買機柜,網絡、電源線必然會雜亂無章,很不好打理,各類設備所占的面積也大,所以還是購買一個機柜為佳。
6.4 計算機設備
6.4.1 服務器的選擇與購買
服務器的選擇非常的多樣,你可以購買家用組裝機當服務器使用,也可以購買真正的服務器。從大類來說,可以有以下三種方案可選擇
-
選擇家用組裝機
好處:價格低廉,簡單粗暴,噪音小,適合家庭環境
壞處:長時間運行可能會有可靠性的問題,沒有故障指示燈等相關的設備,難以巡檢,而且因為沒有帶外管理,出現故障無法遠程處理。體積較大,浪費機柜空間 -
選擇塔式服務器
好處:一定的拓展性,各方面都比較中庸
壞處:性價比比機架式服務器低,體積較大,浪費機柜空間。噪音雖然沒用機架式那么大,但也不小。 -
選擇機架式服務器
好處:高性能,拓展性好,體積小,可以托管在IDC機房
壞處:噪音大,不適合家庭環境
注意點:
在你選擇了一種方案后,后續最好延續使用該方案。特別的,如果你選擇了家用組裝機,CPU一開始買的是AMD,那么后續最好也都統一買AMD的CPU,否則會導致DRS、vSan都做不了。
關于真正的服務器,你可以買全新的,或者某寶上面也有很多二手的服務器。不過二手服務器雖然價格低,但可能會有坑,就看你敢不敢買了。
這里主要介紹下利用家用的組裝機做虛擬化。網絡上有很多教你購買和組裝的教程,這里只說一些重點注意事項。
-
如何選擇CPU?
家用組裝機的cpu,一般無非就是 Intel 和 AMD 兩種,從性價比角度來看,目前的zen2、zen3架構如日中天,AMD性價比無疑比Intel更高。 -
如何選擇主板?
主板盡量不要購買小板,可以選擇ATX,或者E-ATX的板型,因為板型小的主板,也意味著所提供的接口少,不利于將來擴展。另外,有個特別需要注意的點是,主板上的網卡芯片,一般有"Intel"和"Realtek瑞昱"兩種,如果你買的是AMD的CPU,那么對應的一般價格的主板,大概率是Realtek芯片的板載網卡,而Realtek芯片的網卡,ESXi是識別不到的,這樣一來你會需要額外購買Intel芯片的網卡。 -
如何選擇內存?
根據你買的CPU和主板類型不同,購買合適的內存即可。 -
如何選擇硬盤?
推薦購買 nvme協議 m.2接口 的ssd硬盤,因為速度真的很快。一般來說,計算機的瓶頸點會卡在IO上面。如果磁盤空間不夠,可配合購買HDD硬盤,不需要聯機的數據可以放NAS。 -
如何選擇網卡?
筆者的建議是無論你板載的網卡的芯片是Intel還是Realtek,你最好都額外購買一張pcie的有兩個網口以上的Intel芯片的網卡。為什么要這么做呢?首先,利于遠程配置(筆者有一次配置虛機網絡的時,需要網卡先斷線再連接到正確的虛擬網絡,但在斷開那張網卡后,遠程就再也連不上了),其次兩個網卡利于增強可靠性,最后兩個網卡才能讓管理的流量和普通流量分開,彼此不會互相影響(遷移主機的時候,會有大量的管理流量產生,而如果你只有一張網卡,可能會影響到業務的正常通訊)。 -
如何選擇顯卡?
如果你的cpu是不帶核顯的,那么會需要你額外購買一張顯卡,建議買一張最低配的顯卡即可,我們只是需要能顯示而已。當然如果你有用GPU進行計算的需求,那么可根據實際需求選擇顯卡。 -
如何選擇散熱器?
一般來說,風冷就足夠使用了。如果cpu自帶的風扇太弱,像Intel盒裝cpu自帶的小風扇就比較雞肋,你可以自行購買風扇,價位在百元左右即可。至于是否上水冷,就看各位自己評估了,筆者的實踐經驗是如果搭載的不是發熱量很大的CPU,又沒有大量的計算需求,就不需要上水冷了。另外,請注意購買的風扇的接口是否兼容你買的cpu型號。 -
如何選擇機箱?
盡量買可以裝三個HDD硬盤以上的機箱。盡量不要買小型的機箱,否則后續拓展麻煩且小機箱散熱效果也不好。另外,如果你有服務器機柜的話,可以考慮買機架式的機箱,3U或者4U的,肯定比買普通機箱省空間,某寶上面很多。 -
如何選擇電源?
選擇合適的電源即可,但要注意留一定冗余量,便于后續添加組件。選擇電源未必非要追求金牌不可,功率合適,能穩定輸出就好。
該配置在21年6月價格總共在6k至7k左右。
6.4.2 樹莓派
樹莓派是一種基于linux的單片機電腦,功耗較小,適合做一些簡單的任務,價格在5百元左右。如果你的IP是動態公網IP,那么你可以考慮買一臺樹莓派,用于執行更新域名綁定IP的任務。當然你也可以不買樹莓派,在虛擬機上創建一臺linux主機來運行該任務,但有個問題是,假如承載該linux虛機的計算機發生宕機等的故障,很可能會導致更新任務無法執行,進而導致你連接失敗。所以,從可靠性可用性的角度上看,把此任務單獨放到樹莓派上是有利于增強可靠性和可用性的。
6.4.3 NAS
如果你有大量文件需要存儲,那么買一臺NAS無疑會更加保險。如果買的是支持萬兆網卡的nas,后續可以升級做存算分離。
6.5 關于搭建的成本
搭建的成本主要是第一次的購買設備的成本和平時的維護成本。
第一次的購買設備的成本 = 路由器 + 交換機 + 服務器機柜 + 服務器x臺數 + 樹莓派 + NAS(含硬盤)
集群搭建后,平時的成本主要是電費和維護費。舉個例子,如果你按本文的家用配置搭建服務器,在不做大量密集計算的時候,功率大概在90w左右。機器24小時開機,一度電按照5毛來算,一天的一臺服務器的電費成本大概是1塊出頭。維護費指的是,諸如硬件損壞,比如常見的硬盤長時間運行后損壞需更換的成本。
七、網絡環境配置
如果你買的是工控機想安裝pfsense軟路由系統,下載pfsense安裝包時,記得Architecture選"AMD64 (64-bit)“,Installer選"USB Memstick Installer”,Console選"VGA"。使用pfsense的時候,我遇到過一個情況,當開機啟動時VGA接口沒有接入顯示器,路由器工作不正常,這時候你只需要在啟動路由器的時候接入顯示器,等啟動完成后再拔掉即可,或者你直接在某寶上面買個支持集顯的VGA的偽裝器。
除了pfsense之外,你也可以選擇安裝iKuai,RouterOS,OpenWrt等。
主要的步驟是
八、安裝ESXi與vCenter
關于什么是 ESXi 與 vCenter ?
https://docs.vmware.com/cn/VMware-vSphere/index.html
你需要在新裝的電腦上安裝 ESXi,安裝后,將機器連接到交換機上。注意,你需要另一臺pc機或者mac同時接到交換機上,這樣你才能訪問ESXi的web頁面。
具體怎么安裝ESXi,網上已經有很多教程,我不再贅述。
-
是否一定要安裝vCenter?
答案是不一定要安裝的,如果你有2臺以上,或者單臺機器但內存充足,但筆者建議安裝。如果你只是簡單使用,不需要經常創建虛機,那么不裝vCenter也無妨。
vCenter能提供的是更多的配置項,最重要的是能把虛機轉成模板,這樣你每次新建機器就不用重新做各種配置,而是從模板直接生成虛機,大大減少交付一臺虛機的時間。 -
是否需要組DRS或者vSan?
都不一定。組vSan的前提是3臺以上的機器,且每臺機器上都至少有1個SSD和3個HDD硬盤。到目前為止,我們所有的機器都是沒有組raid的,硬盤損壞的時候會有丟失數據的風險,如果你對可靠性可用性和數據的安全性有一定的要求,那么你可以考慮組vSan集群,或者你可以利用nas+萬兆網絡做存算分離。
九、在開始愉快的玩耍之前
前面的步驟做完后,我們已經基本上做完了整個環境的搭建,不過別著急,以下幾點值得你注意一下
在新建虛擬機的自定義硬件步驟,會有磁盤制備方式的選擇,建議選擇"精簡制備",默認的厚置備,會導致預先把劃走你設置大小的磁盤空間。
你可以新創建虛擬機,安裝linux系統,對系統進行安全加固等其他的初始化操作后,關機,并將主機轉成模板。這樣以后你新建虛擬機,就可以從模板部署了。
關于管理網絡與普通網絡
如果你有兩個甚至三個以上的網口,做好kernel端口與普通network端口的隔離與高可用的配置
設計IP地址的規劃方案
正常我們家用的時候,tplink路由器默認的網段規劃是192.168.1.0/24,不過這時候我們會面臨一個問題,當你虛機越來越多的時候,IP地址可能會不夠用。所以,你應該提前規劃好IP地址,掩碼不再使用24,你可以使用10.0.0.0/20,這樣一個網段內第一個可用IP是10.0.0.1,最后一個可用IP是10.0.15.254,一共有4094個可用IP了。你可以訪問 https://www.w3cschool.cn/tools/index?name=ipcalc 來輔助計算規劃IP地址。
謹慎使用端口轉發
你在內部搭建的各類系統,不要隨意通過端口轉發對外暴露,尤其是不要對0.0.0.0開放,系統難免有漏洞,容易被攻擊,特別是在我們并沒有專業安全防護解決方案的情況下。如果一定要對外暴露,可以考慮限制在一定的IP范圍內。
十、寫在最后
到目前為止,你已經完成搭建工作了,接下來怎么用就看你的想象力了。以一個開發的視角來看,你可以搭建各類服務來輔助你的開發,比如搭建gitlab存儲你的代碼,搭建jenkins做CI/CD,部署mysql數據庫,搭建nexus服務器加速jar包下載,搭建prometheus監控虛機狀態。
HAVE FUN BE HAPPY!!!
總結
以上是生活随笔為你收集整理的个人虚拟化集群搭建教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【云原生系列】第四讲:Knative 之
- 下一篇: 计算机软件专利法保护对象,下列不属于专利