構建微型數據中心——在laptop上運行Rancher

對于開發人員而言,他們的最終目標是擁有自己的數據中心(data center),使他們能夠在貼近真實情況的副本上測試他們的服務。然而,開發人員的開發過程中卻充滿了妥協。因為,數據要么是個簡化集,要么被匿名,這加大了開發人員的開發難度。并且公司也還沒有準備好為每一位開發人員搭建一個數據中心。


wKiom1jImCXRzkSFAADGflpb3KM457.png


今天,我將提供一個過程摘要來闡明如何使用Rancher和本地計算機減少開發人員在開發時的妥協。我們的目標是為開發人員提供盡可能具有代表性的環境,以至于其可被用于真實的生產環境中,我們將使用Docker和Rancher來做到這一點。


如果您遇到過下列任何一項煩惱:


  • 共享的開發環境因多個問題而崩潰

  • 測試數據不一致

  • 網絡問題拖延開發進度


我希望能夠提供給您一些解決這些問題的想法。


Rancher and Docker can Help


一個所有服務都在裸機上運行的數據中心,無法將其復制到筆記本上。選擇使用虛機方式遷移則有助于這個過程,部分原因在于虛擬化可以讓用戶運行多個(agent)服務。這樣一來,硬件環境隨即成為問題的關鍵所在。無論是磁盤的輸入輸出不足以支持服務還是沒有足夠的內存,都會使得搭建一個產品級的生產環境副本以失敗告終。然而Docker和Rancher卻可以幫您解決這些難題。Docker幫您快速啟動容器,Rancher幫您解決編排、網絡和負載均衡等一系列問題。


通過這種組合,在您的筆記本電腦上運行數據中心逐漸變為可能。這個想法在最近的六個月來變得非常受歡迎,因為許多大型機構已經開始為開發人員提供一個完整的docker management layer以讓數據中心能夠在本地運行。許多公司正在進行這項投資,因為他們能夠獲得各種各樣的好處,其中包括:


  • 開發人員在看到問題時更熟悉如何使用工具解決

  • 開發人員在交付代碼之前能夠找出問題

  • 開發人員能夠獨立工作,甚至離線工作

  • 新的開發者可以在幾分鐘內進行工作,而不需要花費幾天或是幾周來適應開發環境

  • DevOps工作的主機永遠不會宕機。


那么,我們該如何做呢?出于寫這個博客的目的,我會假設正在Mac或Windows上使用Docker Toolbox。下載安裝和說明文件可以在這里找到https://www.docker.com/products/docker-toolbox。


首先,讓我們來看看它長什么樣子:


wKiom1jImHqThIUCAACe8aCeZjI603.png


我們將運行兩個虛擬機,一個虛擬機只運行Rancher Server,另一個虛擬機作為主機運行并運行應用程序堆棧。用這樣的配置有幾個原因。首先,它對于真正的情形比較有代表性。其次,一旦出現問題,您的應用程序無法使Rancher因資源不足而發生饑餓現象。


所以,首先第一件事,讓我們創建一個具有512 GB和8 GB磁盤的VirtualBox虛擬機。

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能夠運行的Docker v1.10.3版本。


Docker Toolbox是在本地運行Docker的理想選擇,但運行它確實有一些挑戰性。原因之一是它使用了DHCP協議,如果你不想托管靜態服務的話,這將是一個不錯的選擇。但是,要繞開這個ssh協議連接到Rancher虛擬機的話,加上下面的這一行代碼到/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

此時,您將在docker-machine中出現一個關于IP地址不匹配的錯誤。您可以在主機操作系統上運行以下命令來解決這個問題:

1
docker-machine?regenerate-certs?rancher?-f

這將給我們的Rancher服務器分配一個靜態IP地址。然后,您可以運行:

1
docker?run?-d?--restart=always?-p?8080:8080?rancher/server

幾分鐘后,將有一個Rancher服務器在您指定的IP地址的8080端口上運行。保持Rancher服務器的IP地址不變很重要,因為這是我們部署的任何主機代理都需要訪問的地方。


登錄到Rancher服務器之后,轉到“添加主機(add host)”并生成自定義代理命令。復制這個命令并保留它,因為我們將使用這個命令來添加主機。


現在讓我們創建第二個虛擬機。使用與上述相同的命令,您可以自行調整虛擬機的名稱、內存和磁盤空間,以滿足您的開發需求。


等待虛擬機再一次啟動后,您可以進入并為其分配一個靜態IP地址。


現在,我們遇到了boot2docker虛擬機的另一個限制:其數據持久性的限制。


如果我們向主機添加一個Rancher代理,它會創建一個/var/lib/rancher文件夾并在其中存儲一些信息。如果重新啟動虛擬機,這些信息將被銷毀。因此,當代理再次出現時,主機會認為它是一個新的服務器,之前的服務器信息在那時就全部丟失了。


幸運的是,面對這樣的窘境有一個解決方法。在運行Rancher代理腳本日志到主機上之前,運行以下命令:

1
sudo?mkdir?/mnt/sda1/var/lib/rancher

這將創建一個文件夾,這個文件夾在重新啟動時能被保留下來。現在,在每次啟動時,我需要將此文件夾映射到/var/lib/rancher。因此,我們需要再次編輯/var/lib/boot2docker/profile并添加以下內容:

1
sudo?mkdir?/var/lib/ranchersudo?mount?-r?/mnt/sda1/var/lib/rancher?/var/lib/rancher

這將確保我們的代理狀態在重新啟動之間能被保留。


通過ssh協議連接到機器,并運行您從Rancher服務器獲得的自定義代理字符串。


現在您已經有了一個Rancher服務器,它的主機完全在本地運行,它的應用程序棧準備完畢等待您的部署。


在此,是否將它提高到一個新的水平取決于您自己。但現在,您有了一個可運轉的Rancher / Docker環境。您能夠從外部存儲庫拉取數據,編寫腳本在本地構建應用程序或者運行目錄中的條目。


雖然這種開發方式并不完美,但對于大多數情況來說是“足夠好”的了,并且這樣的開發方式值得分析參考,并以此作為繼續改進開發的方法。



本文轉自 RancherLabs 51CTO博客,原文鏈接:http://blog.51cto.com/12462495/1906612

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286567.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【前端就業課 第一階段】HTML5 零基礎到實戰(五)基礎元素

注意&#xff1a;手機&#xff08;APP&#xff09;打開&#xff0c;內容顯示更佳&#xff0c;不會的私聊博主即可&#xff08;知識點結構參考《HTML5入門到精通》&#xff09; 想要拿代碼或加入學習計劃&#xff08;** 博主會監督你并且教你寫文章 **&#xff09;的拉到最下面&…

phpUnit 安裝,實例和簡單部署

背景&#xff1a;一個小腳本&#xff0c;保證穩定為主&#xff1b;所以試用了下phpunit&#xff0c;快捷方便phpunit 的安裝 phpunit是一個輕量級的php單元測試框架&#xff0c;通過pear安裝安裝過程 wget https://phar.phpunit.de/phpunit.phar chmod x phpunit.phar sudo mv …

1、RN跨平臺開發——環境搭建

了解React NativeReact Native使你能夠在Javascript和React的基礎上獲得完全一致的開發體驗&#xff0c;構建世界一流的原生APP。React Native著力于提高多平臺開發的開發效率 —— 僅需學習一次&#xff0c;編寫任何平臺。(Learn once, write anywhere)。Facebook已經在多項產…

Android之替換App桌面圖標

1、需求 需要動態替換app在桌面的圖標 2、解決辦法 1)、在AndroidManifest.xml里面進行配置多個啟動的alias別名 啟動的activity <activityandroid:name=".ui.SplashActivity"android:launchMode="singleTop"android:screenOrientation="port…

【ArcGIS遇上Python】ArcGIS10.8 Python代碼批量完美實現MODIS NDVI數據格式轉換和投影變換

由于論文的需要,將MODIS NDVI數據進行投影變換和格式轉換,具體操作可以參照:《ArcGIS10.8完美實現MODIS NDVI數據格式轉換和投影變換》,但是該文章中的做法只能一次性實現一景影像的轉換,沒法批量,雖然ArcGIS中提供了Batch的方法但是需要挨個添加數據,確定輸出路徑等等,…

引入 DTM 以支持 ABP 的多租戶多數據庫場景

這篇文章分享了使用 DTM 二階段消息模式解決 issue #10036 的方法。今天我們要使用 EasyAbp 的 Abp.EventBus.Boxes.Dtm 模塊。DTM 事件箱的介紹這個模塊使用了 DTM 的 二階段消息 使得 ABP 的事件箱得以支持 多租戶多數據庫場景。你需要先閱讀 DTM 文檔&#xff0c;它將幫助你…

【前端就業課 第一階段】HTML5 零基礎到實戰(六)表格詳解

注意&#xff1a;手機&#xff08;APP&#xff09;打開&#xff0c;內容顯示更佳&#xff0c;不會的私聊博主即可 想要拿代碼或加入學習計劃&#xff08;** 博主會監督你并且教你寫文章 **&#xff09;的拉到最下面&#xff08;PC端Web打開&#xff09;加博主即可&#xff0c;目…

PHP中file_put_contents()函數的兼容性問題

PHP中file_put_contents()函數的兼容性問題 file_put_contents()函數就相當于依次使用fopen()&#xff0c;fwrite()和fclose()&#xff0c;真是個令人愉快的函數。我的第一個PHP小腳本中用到了這個函數&#xff0c;本地運行很正常&#xff0c;放到服務器上去之后點擊submit按鈕…

Android實戰:手把手實現“捧腹網”APP(一)-----捧腹網網頁分析、數據獲取

“捧腹網”頁面結構分析捧腹網M站地址: http://m.pengfu.com/捧腹網M站部分截圖&#xff1a; 從截圖中&#xff08;可以直接去網站看下&#xff09;&#xff0c;我們可以看出&#xff0c;該網站相對簡單&#xff0c;一共分為四個模塊&#xff1a;最新笑話、捧腹段子、趣圖、神…

專題2-通過按鍵玩中斷\第1課-中斷處理流程深度剖析-lesson1

中斷概念 1、中斷生命周期 串口先產生一個事件&#xff0c;該事件傳送到中斷控制器里面&#xff0c;中斷控制器會進行相應過濾&#xff0c;能通過過濾&#xff0c;那么就交給CPU去處理。 2、中斷源 2440芯片手冊 6410芯片手冊 3、中斷過濾 4、中斷處理 cpu處理方式有兩種&#…

Android之okdownload下載提示奔潰Expected URL scheme ‘http‘ or ‘https‘ but was ‘data‘

1 問題 客戶現場奔潰在firebase上面提示錯誤信息如下 Fatal Exception: java.lang.IllegalArgumentException: Expected URL scheme http or https but was dataat okhttp3.t$a.a(HttpUrl.kt:38)at okhttp3.t$b.b(HttpUrl.kt:8)at okhttp3.y$a.b(Request.kt:5)at com.liulish…

mysql語法學習(一)__Instances__表

2019獨角獸企業重金招聘Python工程師標準>>> ---建表 CREATE TABLE temp( id INT ); ----查詢表 SELECT * FROM temp_t; ---刪表 DROP TABLE temp; ---修改表名 ALTER TABLE temp_tt RENAME temp; ALTER TABLE temp RENAME TO temp_t; ALTER TABLE temp RENAME AS t…

【ArcGIS遇上Python】python批量獲取柵格數據四至(top,bottom,left,right)坐標代碼

上圖所示為ArcGIS自帶的影像數據,存放路徑為C:\Program Files (x86)\ArcGIS\Desktop10.6\ArcGlobeData\wsiearth.tif",在源中可以查看該數據的四至坐標,那么,怎樣用python批量獲取多個柵格數據的四至坐標呢? 參考閱讀:【ArcGIS風暴】ArcGIS求一個矢量圖層中多個圖斑…

使用 C# 讀取 zip 壓縮包解壓文件的方法及注意事項

從 .NET Framework 4.5 版本開始&#xff0c;微軟為 .NET 類庫增加了一個名為 ZipFile 的類型。該類型在 System.IO.Compression 命名空間下&#xff0c;提供創建、解壓縮和打開 zip 存檔的靜態方法。若要在 .NET Framework 應用中使用 ZipFile 類&#xff0c;必須添加對程序集…

CenterOS x64安裝serv-U

1、下載serv-Usu - root cd / cd /src wget http://www.rhinosoft.com.cn/download/14.0.1.0/SU-MFTS-Linux-64bit.zip # 64bit下載地址wget http://www.rhinosoft.com.cn/download/14.0.1.0/SU-MFTS-Linux-32bit.zip # 32bit下載地址2、解壓serv-U安裝包unzip SU-MF…

Android實戰:手把手實現“捧腹網”APP(二)-----捧腹APP原型設計、實現框架選取

APP原型設計在APP的開發過程中&#xff0c;原型設計是必不可少的。用戶界面原型必須在先啟階段的初期或在精化階段一開始建立。整個系統&#xff08;包括它的“實際”用戶界面&#xff09;的分析、設計和實施必須在原型建立后進行。 如何設計“捧腹網”APP呢&#xff1f;我們先…

【前端就業課 第一階段】HTML5 零基礎到實戰(七)文字及圖片詳解

注意&#xff1a;手機&#xff08;APP&#xff09;打開&#xff0c;內容顯示更佳&#xff0c;不會的私聊博主即可 想要拿代碼或加入學習計劃&#xff08;** 博主會監督你并且教你寫文章 **&#xff09;的拉到最下面&#xff08;PC端Web打開&#xff09;加博主即可&#xff0c;目…

自定義桌面右鍵菜單

一 編寫自定義右鍵菜單要執行的程序 只要是在 Windows 平臺上的可執行應用程序即可。 二 修改注冊表添加自定義右鍵菜單 添加位置如下&#xff1a; HKEY_CLASSES_ROOT\Directory\Background\shell 如下圖&#xff1a;轉載于:https://www.cnblogs.com/jRoger/articles/5799664.h…

Android之giide加載失敗提示You can‘t start or clear loads in RequestListener or Target callbacks If you‘re t

1 問題 用glide進行加載視頻數據的時候,加載錯誤了再用glide進行加載一次,代碼如下 var iv = helper.getView<ImageView>(R.id.download_iv)iv?.let {val transform = RoundedCornersTransform(mContext, UnitUtils.dip2px(mContext, 12.toFloat()).toFloat())transf…

本地工程提交github

1. 首先在github上創建一個新的Repository 2. 在本地windows機器上裝上git 3. 建立一個文件夾&#xff0c;以后就用這個文件夾作為與Repository對應的庫文件夾 4. 輸入一下命令&#xff0c;建立文件夾與Repository的連接關系 touch README.md git init git add README.md git c…