精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

只需6步,教你把服務(wù)遷移到云端

責(zé)任編輯:jackye

作者:張英潔

2016-02-24 09:34:10

摘自:INFOQ

我們決定首先遷移備份數(shù)據(jù)庫,這樣可以保證在遷移數(shù)據(jù)的一致性,同時(shí)也能保證數(shù)據(jù)庫遷移過程中線上服務(wù)不中斷。下面簡述備份步驟:配置Master Slave備份  把原始數(shù)據(jù)庫服務(wù)器設(shè)置為master,新數(shù)據(jù)庫服務(wù)器設(shè)為slave。

Ghost是一個(gè)開源博客平臺(tái),而Ghost(Pro)是它的托管平臺(tái)。這篇文章的作者是Ghost的高級(jí)DevOps工程師Sebastian Gierlinger。他用簡單的6個(gè)步驟,總結(jié)了Ghost(Pro)的基礎(chǔ)設(shè)施從專用服務(wù)器遷移到DigitalOcean Droplets的過程。

以一年多運(yùn)營Ghost(Pro)的經(jīng)驗(yàn)來看,我們認(rèn)為自己的下一代基礎(chǔ)設(shè)施需要滿足如下需求:

能夠在幾分鐘內(nèi)對(duì)服務(wù)器擴(kuò)容擁有能服務(wù)數(shù)千個(gè)博客的大內(nèi)存提供強(qiáng)大的客戶支持在不做重大重構(gòu)的前提下遷移軟件

任何一個(gè)項(xiàng)目的遷移,都以一定程度的不確定性開始。一開始就預(yù)料到所有的遷移步驟是不可能的,更不要說預(yù)料到任何一個(gè)即將遇到的問題。但鑒于這是一篇回顧文章,出于方便理解的目的,遷移過程包括以下幾個(gè)大步驟:

為現(xiàn)有的服務(wù)器基礎(chǔ)設(shè)施建立目錄確保公網(wǎng)安全確保專用網(wǎng)絡(luò)安全備份數(shù)據(jù)庫更新DNS(切換到目標(biāo)服務(wù)器)下線舊的運(yùn)行環(huán)境

遷移后的Ghost(Pro)系統(tǒng)架構(gòu)是這樣的:

  下面就讓我們來詳細(xì)看看遷移過程的6個(gè)步驟。

Step 1:創(chuàng)建目錄

第一步是用配置管理工具創(chuàng)建一個(gè)目錄,用來顯示現(xiàn)存的服務(wù)器基礎(chǔ)設(shè)施上運(yùn)行著什么。

我們并沒有一個(gè)完整的目錄,包含所有安裝的軟件、防火墻設(shè)置和其他服務(wù)器配置。為了解決這個(gè)問題,我們引入了一個(gè)配置管理系統(tǒng)工具箱。配置管理的一大好處就是,一旦系統(tǒng)建立起來,它既可以作為記錄文檔,又可以用作一個(gè)部署工具。

我們考慮過幾個(gè)比較流行的配置管理工具,包括Puppet、Chef、Ansible和SaltStack。我們需要一個(gè)既能完成工作又不容易因?yàn)閺?fù)雜性而過載的工具。最終就選擇了SaltStack。

下面是幾個(gè)選擇SaltStack的原因:

它很輕量,易于安裝和維護(hù);它采用master/minion的架構(gòu),可以將更改從master“推送”到minion端,避免了由于頻繁請求可能造成的DDoS攻擊;它擁有一個(gè)專門的主服務(wù)器,可以防止管理員和開發(fā)者直接在未受保護(hù)的生產(chǎn)環(huán)境部署更改;Master和Minion的通信采用ZeroMQ而不是SSH。在處理多個(gè)加密并發(fā)連接時(shí),ZeroMQ使用更少的CPU資源,效率更高。

另一個(gè)附加的好處是Salt Cloud,它包含在SaltStack里,并且和DigitalOcean的API無縫兼容,資源可以快速彈性伸縮,我們可以用命令行管理系統(tǒng)資源。

雖然這個(gè)新的Ghost(Pro)架構(gòu)初始設(shè)置和配置頗花費(fèi)了一些時(shí)間——大概3周,但SaltStack表現(xiàn)除了它強(qiáng)大的功能。第二步迭代配置用了大概一周,第三步部署托管平臺(tái)只用了兩天。

創(chuàng)建一個(gè)目錄,并把它遷移到配置管理工具,這是一個(gè)迭代的過程,會(huì)涵蓋幾乎整個(gè)系統(tǒng)遷移的過程。除了完成遷移,創(chuàng)建目錄還暴露了我們結(jié)構(gòu)中需要改進(jìn)的部分。讀者如果想要嘗試SaltStack更多功能,請參考使用手冊:1、2、3.

Step 2:確保公網(wǎng)安全

第二步是為了確保平臺(tái)內(nèi)部服務(wù)器的公網(wǎng)防火墻安全。

以前,只有我們面向公眾的服務(wù)器可以通過外網(wǎng)訪問;其他服務(wù),比如APP和數(shù)據(jù)庫服務(wù),只能通過專用網(wǎng)絡(luò)訪問。遷移到DigitalOcean的云端后,所有服務(wù)器都有一個(gè)公共IP地址,我們必須解決這項(xiàng)新的安全隱患。

我們給內(nèi)部服務(wù)器的公網(wǎng)設(shè)置了一個(gè)iptables規(guī)則,能夠攔截除了SSH加密通信的其他所有連接。我們自己的服務(wù)器用的是Ubuntu,所以用UFW作為iptables的管理界面。

和其他基礎(chǔ)設(shè)施一樣,防火墻配置是通過SaltStack完成的,方便于我們統(tǒng)一管理。

Step 3:確保專用網(wǎng)絡(luò)安全

第三步是用VPN確保所有服務(wù)器專用網(wǎng)絡(luò)的安全。

DigitalOcean的專用網(wǎng)絡(luò)允許同一數(shù)據(jù)中心的Droplets彼此通信。這個(gè)特點(diǎn)非常棒,它在基礎(chǔ)設(shè)施內(nèi)保證了高帶寬和低延時(shí),專用網(wǎng)絡(luò)被共享給數(shù)據(jù)中心所有的Droplets,包括那些屬于其他DigitalOcean客戶的Droplets。這就是說,專用網(wǎng)絡(luò)保護(hù)我們不會(huì)被接入一般的互聯(lián)網(wǎng)連接,但可能接入其他不屬于我們的Droplets。

我們選擇配置VPN來確保服務(wù)器專用網(wǎng)絡(luò)的安全,它提供的加密和身份認(rèn)證正是我們所需要的。我們選了Tinc VPN,因?yàn)樗芯W(wǎng)狀路由布局,這意味著它的流量會(huì)盡可能直接發(fā)送到目標(biāo)主機(jī)。它允許通過直連的Droplets發(fā)送流量,而不必直接與請求者相連。不像OpenVPN那樣把VPN管理復(fù)雜化,我們的VPN更像是個(gè)傳統(tǒng)的專用網(wǎng)絡(luò)。

就像防火墻配置一樣,我們用SaltStack集中管理VPN配置。這樣就可以在所有服務(wù)器中自動(dòng)更新Tinc VPN的配置,從而保證了所有VPN網(wǎng)絡(luò)的正確和及時(shí)更新。

Step 4:啟動(dòng)數(shù)據(jù)庫備份

第四步是設(shè)置備份來遷移數(shù)據(jù)庫。

最初,我們計(jì)劃在數(shù)據(jù)庫遷移期間把Ghost(Pro)下線。這樣暫停一下,我們就可以保持?jǐn)?shù)據(jù)的連續(xù)性,并為MySQL數(shù)據(jù)庫備份。然后我們再把備份傳到新數(shù)據(jù)庫服務(wù)器上,最后重置一下就能完成數(shù)據(jù)庫遷移。然而,分析完現(xiàn)有數(shù)據(jù)后,我們發(fā)現(xiàn)這并不可行。我們有大約500G的數(shù)據(jù)庫,這意味著預(yù)計(jì)需要6小時(shí)的下載時(shí)間,還不包括任何意外的錯(cuò)誤。服務(wù)下線那么長時(shí)間是不能接受的。我們需要其他解決方案。

我們決定首先遷移備份數(shù)據(jù)庫,這樣可以保證在遷移數(shù)據(jù)的一致性,同時(shí)也能保證數(shù)據(jù)庫遷移過程中線上服務(wù)不中斷。下面簡述備份步驟:

配置Master/Slave備份

把原始數(shù)據(jù)庫服務(wù)器設(shè)置為master,新數(shù)據(jù)庫服務(wù)器設(shè)為slave。這意味著從原始數(shù)據(jù)庫系統(tǒng)到新架構(gòu)的數(shù)據(jù)庫備份是單向的。

測試新基礎(chǔ)設(shè)施

用這樣的master/slave設(shè)置,就可以測試了,看我們新的Ghost(Pro)系統(tǒng)是不是和原有設(shè)置保持一致。所有測試完成后,我們刪除了新的數(shù)據(jù)庫服務(wù)器(slave)數(shù)據(jù)來為下一步做準(zhǔn)備。

配置Master/Master備份

新數(shù)據(jù)庫服務(wù)器測試后,我們開啟了master/master備份,這意味著所有的數(shù)據(jù)變更是雙向的。一旦開啟master/master備份,原始數(shù)據(jù)庫被遷移到新服務(wù)器上,新的基礎(chǔ)設(shè)施準(zhǔn)備就緒了。更多關(guān)于數(shù)據(jù)庫遷移的教程,請參考1、2。

Step 5:更新DNS記錄

第五步是更新DNS記錄,以此把新基礎(chǔ)設(shè)施投入使用。

更新DNS記錄有時(shí)候會(huì)出現(xiàn)問題,因?yàn)镈NS生效需要時(shí)間。如果處理得當(dāng),生效時(shí)間是幾個(gè)小時(shí),用戶可以使用新老系統(tǒng)。我們使用CloudFlare管理DNS條目,它支持實(shí)時(shí)修改DNS,這樣我們就能避免可能出現(xiàn)的問題了。

當(dāng)準(zhǔn)備啟用新系統(tǒng)時(shí),我們執(zhí)行了以下步驟。首先,更新ghost.org,使它指向新的核心服務(wù)器;然后,測試運(yùn)行;最后,更新ghost.io,使它指向新緩存服務(wù)器,再多測試幾次。

Step 6:下線舊的運(yùn)行環(huán)境

最后一步就是下線舊運(yùn)行環(huán)境中的服務(wù)器。所有服務(wù)都運(yùn)行在新的DigitalOcean中,我們不再需要原來的專用服務(wù)器基礎(chǔ)設(shè)施了。淘汰舊的設(shè)備能大大節(jié)省我們的開支。

在關(guān)停舊的基礎(chǔ)設(shè)施前,我們需要停掉新舊數(shù)據(jù)庫服務(wù)器的備份。

結(jié)語

把Ghost(Pro)平臺(tái)從專用服務(wù)器遷移到DigitalOcean非常成功。我們希望分享自己的經(jīng)驗(yàn),因?yàn)槲覀冎罉I(yè)務(wù)遷移是很多項(xiàng)目面臨的一個(gè)挑戰(zhàn)。我們希望自己遷移到DigitalOcean的分享對(duì)其他準(zhǔn)備遷移的項(xiàng)目能有借鑒意義。

本文編譯自:How Ghost Migrated From Dedicated Servers to DigitalOcean

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2025 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 承德市| 昌平区| 高平市| 宁德市| 二连浩特市| 梓潼县| 乳山市| 石首市| 兰考县| 昭通市| 嘉禾县| 连江县| 香港| 乐至县| 肥西县| 两当县| 嫩江县| 荣成市| 文山县| 阜新| 清苑县| 新乐市| 建德市| 同江市| 霍林郭勒市| 新巴尔虎左旗| 荔浦县| 长汀县| 友谊县| 柳林县| 观塘区| 五指山市| 平南县| 南靖县| 施秉县| 绩溪县| 孝感市| 崇阳县| 天峨县| 蕲春县| 镇平县|