构建微型数据中心——在laptop上运行Rancher
對(duì)于開發(fā)人員而言,他們的最終目標(biāo)是擁有自己的數(shù)據(jù)中心(data center),使他們能夠在貼近真實(shí)情況的副本上測(cè)試他們的服務(wù)。然而,開發(fā)人員的開發(fā)過程中卻充滿了妥協(xié)。因?yàn)?#xff0c;數(shù)據(jù)要么是個(gè)簡(jiǎn)化集,要么被匿名,這加大了開發(fā)人員的開發(fā)難度。并且公司也還沒有準(zhǔn)備好為每一位開發(fā)人員搭建一個(gè)數(shù)據(jù)中心。
今天,我將提供一個(gè)過程摘要來闡明如何使用Rancher和本地計(jì)算機(jī)減少開發(fā)人員在開發(fā)時(shí)的妥協(xié)。我們的目標(biāo)是為開發(fā)人員提供盡可能具有代表性的環(huán)境,以至于其可被用于真實(shí)的生產(chǎn)環(huán)境中,我們將使用Docker和Rancher來做到這一點(diǎn)。
如果您遇到過下列任何一項(xiàng)煩惱:
-
共享的開發(fā)環(huán)境因多個(gè)問題而崩潰
-
測(cè)試數(shù)據(jù)不一致
-
網(wǎng)絡(luò)問題拖延開發(fā)進(jìn)度
我希望能夠提供給您一些解決這些問題的想法。
Rancher and Docker can Help
一個(gè)所有服務(wù)都在裸機(jī)上運(yùn)行的數(shù)據(jù)中心,無法將其復(fù)制到筆記本上。選擇使用虛機(jī)方式遷移則有助于這個(gè)過程,部分原因在于虛擬化可以讓用戶運(yùn)行多個(gè)(agent)服務(wù)。這樣一來,硬件環(huán)境隨即成為問題的關(guān)鍵所在。無論是磁盤的輸入輸出不足以支持服務(wù)還是沒有足夠的內(nèi)存,都會(huì)使得搭建一個(gè)產(chǎn)品級(jí)的生產(chǎn)環(huán)境副本以失敗告終。然而Docker和Rancher卻可以幫您解決這些難題。Docker幫您快速啟動(dòng)容器,Rancher幫您解決編排、網(wǎng)絡(luò)和負(fù)載均衡等一系列問題。
通過這種組合,在您的筆記本電腦上運(yùn)行數(shù)據(jù)中心逐漸變?yōu)榭赡堋_@個(gè)想法在最近的六個(gè)月來變得非常受歡迎,因?yàn)樵S多大型機(jī)構(gòu)已經(jīng)開始為開發(fā)人員提供一個(gè)完整的docker management layer以讓數(shù)據(jù)中心能夠在本地運(yùn)行。許多公司正在進(jìn)行這項(xiàng)投資,因?yàn)樗麄兡軌颢@得各種各樣的好處,其中包括:
-
開發(fā)人員在看到問題時(shí)更熟悉如何使用工具解決
-
開發(fā)人員在交付代碼之前能夠找出問題
-
開發(fā)人員能夠獨(dú)立工作,甚至離線工作
-
新的開發(fā)者可以在幾分鐘內(nèi)進(jìn)行工作,而不需要花費(fèi)幾天或是幾周來適應(yīng)開發(fā)環(huán)境
-
DevOps工作的主機(jī)永遠(yuǎn)不會(huì)宕機(jī)。
那么,我們?cè)撊绾巫瞿?#xff1f;出于寫這個(gè)博客的目的,我會(huì)假設(shè)正在Mac或Windows上使用Docker Toolbox。下載安裝和說明文件可以在這里找到https://www.docker.com/products/docker-toolbox。
首先,讓我們來看看它長(zhǎng)什么樣子:
我們將運(yùn)行兩個(gè)虛擬機(jī),一個(gè)虛擬機(jī)只運(yùn)行Rancher Server,另一個(gè)虛擬機(jī)作為主機(jī)運(yùn)行并運(yùn)行應(yīng)用程序堆棧。用這樣的配置有幾個(gè)原因。首先,它對(duì)于真正的情形比較有代表性。其次,一旦出現(xiàn)問題,您的應(yīng)用程序無法使Rancher因資源不足而發(fā)生饑餓現(xiàn)象。
所以,首先第一件事,讓我們創(chuàng)建一個(gè)具有512 GB和8 GB磁盤的VirtualBox虛擬機(jī)。
| 1 | docker-machine?create?rancher?--driver?virtualbox?--virtualbox-cpu-count?"-1"?--virtualbox-disk-size?"8000"?--virtualbox-memory?"512"?--virtualbox-boot2docker-url=https://github.com/boot2docker/boot2docker/releases/download/v1.10.3/boot2docker.iso |
我們指定的URL指向的是Rancher能夠運(yùn)行的Docker v1.10.3版本。
Docker Toolbox是在本地運(yùn)行Docker的理想選擇,但運(yùn)行它確實(shí)有一些挑戰(zhàn)性。原因之一是它使用了DHCP協(xié)議,如果你不想托管靜態(tài)服務(wù)的話,這將是一個(gè)不錯(cuò)的選擇。但是,要繞開這個(gè)ssh協(xié)議連接到Rancher虛擬機(jī)的話,加上下面的這一行代碼到/var/lib/boot2docker/profile:
| 1 | sudo?cat?/var/run/udhcpc.eth1.pid?|?xargs?sudo?killsudo?ifconfig?eth1?<ip?address?to?assign>?netmask?<subnet?mask>?broadcast?<broadcast?address>?up |
此時(shí),您將在docker-machine中出現(xiàn)一個(gè)關(guān)于IP地址不匹配的錯(cuò)誤。您可以在主機(jī)操作系統(tǒng)上運(yùn)行以下命令來解決這個(gè)問題:
| 1 | docker-machine?regenerate-certs?rancher?-f |
這將給我們的Rancher服務(wù)器分配一個(gè)靜態(tài)IP地址。然后,您可以運(yùn)行:
| 1 | docker?run?-d?--restart=always?-p?8080:8080?rancher/server |
幾分鐘后,將有一個(gè)Rancher服務(wù)器在您指定的IP地址的8080端口上運(yùn)行。保持Rancher服務(wù)器的IP地址不變很重要,因?yàn)檫@是我們部署的任何主機(jī)代理都需要訪問的地方。
登錄到Rancher服務(wù)器之后,轉(zhuǎn)到“添加主機(jī)(add host)”并生成自定義代理命令。復(fù)制這個(gè)命令并保留它,因?yàn)槲覀儗⑹褂眠@個(gè)命令來添加主機(jī)。
現(xiàn)在讓我們創(chuàng)建第二個(gè)虛擬機(jī)。使用與上述相同的命令,您可以自行調(diào)整虛擬機(jī)的名稱、內(nèi)存和磁盤空間,以滿足您的開發(fā)需求。
等待虛擬機(jī)再一次啟動(dòng)后,您可以進(jìn)入并為其分配一個(gè)靜態(tài)IP地址。
現(xiàn)在,我們遇到了boot2docker虛擬機(jī)的另一個(gè)限制:其數(shù)據(jù)持久性的限制。
如果我們向主機(jī)添加一個(gè)Rancher代理,它會(huì)創(chuàng)建一個(gè)/var/lib/rancher文件夾并在其中存儲(chǔ)一些信息。如果重新啟動(dòng)虛擬機(jī),這些信息將被銷毀。因此,當(dāng)代理再次出現(xiàn)時(shí),主機(jī)會(huì)認(rèn)為它是一個(gè)新的服務(wù)器,之前的服務(wù)器信息在那時(shí)就全部丟失了。
幸運(yùn)的是,面對(duì)這樣的窘境有一個(gè)解決方法。在運(yùn)行Rancher代理腳本日志到主機(jī)上之前,運(yùn)行以下命令:
| 1 | sudo?mkdir?/mnt/sda1/var/lib/rancher |
這將創(chuàng)建一個(gè)文件夾,這個(gè)文件夾在重新啟動(dòng)時(shí)能被保留下來。現(xiàn)在,在每次啟動(dòng)時(shí),我需要將此文件夾映射到/var/lib/rancher。因此,我們需要再次編輯/var/lib/boot2docker/profile并添加以下內(nèi)容:
| 1 | sudo?mkdir?/var/lib/ranchersudo?mount?-r?/mnt/sda1/var/lib/rancher?/var/lib/rancher |
這將確保我們的代理狀態(tài)在重新啟動(dòng)之間能被保留。
通過ssh協(xié)議連接到機(jī)器,并運(yùn)行您從Rancher服務(wù)器獲得的自定義代理字符串。
現(xiàn)在您已經(jīng)有了一個(gè)Rancher服務(wù)器,它的主機(jī)完全在本地運(yùn)行,它的應(yīng)用程序棧準(zhǔn)備完畢等待您的部署。
在此,是否將它提高到一個(gè)新的水平取決于您自己。但現(xiàn)在,您有了一個(gè)可運(yùn)轉(zhuǎn)的Rancher / Docker環(huán)境。您能夠從外部存儲(chǔ)庫(kù)拉取數(shù)據(jù),編寫腳本在本地構(gòu)建應(yīng)用程序或者運(yùn)行目錄中的條目。
雖然這種開發(fā)方式并不完美,但對(duì)于大多數(shù)情況來說是“足夠好”的了,并且這樣的開發(fā)方式值得分析參考,并以此作為繼續(xù)改進(jìn)開發(fā)的方法。
本文轉(zhuǎn)自 RancherLabs 51CTO博客,原文鏈接:http://blog.51cto.com/12462495/1906612
總結(jié)
以上是生活随笔為你收集整理的构建微型数据中心——在laptop上运行Rancher的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker Network 配置,自定
- 下一篇: PHP中file_put_content