您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

通過AWS創(chuàng)建無服務(wù)器的動(dòng)態(tài)DNS系統(tǒng)

大小:0.6 MB 人氣: 2017-10-12 需要積分:1
網(wǎng)絡(luò)中的系統(tǒng),就需要了解網(wǎng)絡(luò)的公共IP地址。初創(chuàng)公司、小型企業(yè)還有家庭網(wǎng)絡(luò)經(jīng)常會(huì)使用動(dòng)態(tài)的公共IP地址,這些地址在變更時(shí)不會(huì)另行作出通知。由于地址是變更的,人們無法以可靠地方式從外部訪問這些系統(tǒng)。動(dòng)態(tài)DNS系統(tǒng)通過在網(wǎng)絡(luò)中運(yùn)行軟件代理,保持DNS記錄與公共IP地址同步更新,來解決這一問題。只要保證DNS記錄是最新的,就能找到相應(yīng)的網(wǎng)絡(luò)。
  在本文中,我們講述了如何通過一個(gè)小腳本與一些AWS服務(wù)來構(gòu)建自己的動(dòng)態(tài)DNS系統(tǒng)。也有其他系統(tǒng)能提供類似的解決方案,然而只用AWS服務(wù)與幾行代碼來構(gòu)建無服務(wù)器系統(tǒng)確實(shí)簡單合算;下面是在AWS上如何構(gòu)建自己的無服務(wù)器解決方案的案例。
  我們用在動(dòng)態(tài)DNS系統(tǒng)中的AWS服務(wù)
  在下文中,我們會(huì)展示如何使用下面的AWS服務(wù)來構(gòu)建動(dòng)態(tài)DNS微服務(wù):
  (AWS Lambda)[https://aws.amazon.com/lambda/]可用于運(yùn)行Python、JavaNode.js的代碼,而無需管理底層服務(wù)器。代碼隨時(shí)可以運(yùn)行,不過只有每次執(zhí)行時(shí)才會(huì)加載,以100毫秒增量。Lambda可以通過AWS SDK管理其他AWS服務(wù)。Lambda的功能可以通過Amazon API Gateway或者其他AWS服務(wù)所發(fā)送的event,按預(yù)定計(jì)劃觸發(fā)。Amazon API Gateway是一種托管服務(wù),可以為運(yùn)行在Amazon EC2、Lambda或者其他網(wǎng)絡(luò)應(yīng)用之上的后端服務(wù)建立公共API前端。Amazon Route 53是一種托管的DNS服務(wù),提供服務(wù)允許用戶自全球DNS服務(wù)器對(duì)域名與DNS 區(qū)域進(jìn)行注冊(cè)與管理。與所有AWS服務(wù)一樣,Route 53也是通過API來管理的。Amazon S3是一個(gè)具有高可用性、高耐久度的對(duì)象存儲(chǔ)服務(wù)。通常用于存儲(chǔ)圖片之類的靜態(tài)資源,不過用來存儲(chǔ)配置信息、或者其他無服務(wù)器/無狀態(tài)系統(tǒng)的信息也是很好的選擇。
  動(dòng)態(tài)DNS系統(tǒng)的邏輯流程
  下面的圖片展示了客戶端是怎樣向API Gateway和Lambda服務(wù)包發(fā)起API請(qǐng)求,以獲得IP地址的。
  通過AWS創(chuàng)建無服務(wù)器的動(dòng)態(tài)DNS系統(tǒng)
  客戶端知道自己的公共IP后,向我們的服務(wù)發(fā)送了另一個(gè)請(qǐng)求,設(shè)置DNS記錄。Lambda通過咨詢S3中的一個(gè)配置文件,來確認(rèn)請(qǐng)求是否有效。如果核實(shí)有效,Lambda就會(huì)通過API調(diào)用,在Route 53中設(shè)置DNS條目?,F(xiàn)在,網(wǎng)絡(luò)當(dāng)前的IP是公共DNS,可以通過標(biāo)準(zhǔn)的DNS查詢來獲取。
  通過AWS創(chuàng)建無服務(wù)器的動(dòng)態(tài)DNS系統(tǒng)
  使用AWS Lambda與Amazon Route 53獲取動(dòng)態(tài)DNS的好處
  當(dāng)然還有其他可用的動(dòng)態(tài)DNS系統(tǒng),下面列舉了我們系統(tǒng)的一些優(yōu)勢。
  容易設(shè)置:樣例客戶端中包含了所有代碼、設(shè)置與設(shè)置自己AWS賬戶的指南。架構(gòu)單?。焊翧PI只需三個(gè)命令。支持大多語言,可以自行編寫客戶端,并能運(yùn)行在Windows、Linux、OS X、Raspberry Pi、Chrome OS與DD-WRT/ Tomato USB路由固件之上。支持任意數(shù)量的客戶端、主機(jī)名與域名。價(jià)格低廉,1-2美元/mo。Route 53 每個(gè)區(qū)域成本為0.5美元/月,DNS查詢花費(fèi)為0.01美元/25萬個(gè),e而更新DNS所需的Lambda請(qǐng)求為0.01美元/萬次。無服務(wù)器微服務(wù)。因?yàn)榇a在Lambda上運(yùn)行,因此運(yùn)行自己的Linux主機(jī)不需耗費(fèi)成本或維護(hù)費(fèi)用。安全。權(quán)限劃分細(xì)致:只有獲得授權(quán)的客戶端才能更新自己的主機(jī)名。只有通過加入到DNS中的地址,客戶端才能更新系統(tǒng)。調(diào)整當(dāng)前DNS,只需簡單的修改??梢栽诋?dāng)前的DNS供應(yīng)商處保留原本的example.com區(qū)域,并在AWS中使用第二個(gè)dynamic.example.com區(qū)域。代碼開源,架構(gòu)可擴(kuò)展。想要向系統(tǒng)增加自己的功能,或請(qǐng)關(guān)注后續(xù)文章。我們打算演示該如何借助加強(qiáng)版系統(tǒng),從網(wǎng)絡(luò)或漫游的筆記本對(duì)Amazon EC2實(shí)例進(jìn)行公開存取。
  前提條件
  AWS(Amazon Web Services)帳號(hào)。新賬號(hào)有資格享受AWS Free Tier服務(wù)。自己的域:由Amazon Route 53或其他供應(yīng)商托管。通過Route 53,只需每年10美元便可注冊(cè)一個(gè)域。
  在自己的AWS帳號(hào)上構(gòu)建動(dòng)態(tài)DNS系統(tǒng)
  讀到這里,信息量已經(jīng)足夠,你可以開始構(gòu)建自己的系統(tǒng)副本了。如果想要了解更多相關(guān)信息,請(qǐng)往下看。如果想要開始構(gòu)建,請(qǐng)?jiān)L問Git repository下載圖例說明,與所有必要的代碼及配置信息。
  系統(tǒng)運(yùn)作的詳細(xì)描述
  首先,客戶端需要知道分配給自己網(wǎng)絡(luò)的公共IP。如果從自己的網(wǎng)絡(luò)向互聯(lián)網(wǎng)服務(wù)發(fā)送請(qǐng)求,則該服務(wù)會(huì)看到從你的外部IP地址發(fā)出請(qǐng)求。
  在我們的系統(tǒng)中,以Get mode調(diào)用API,就會(huì)返回相應(yīng)的公共IP地址:
  https://….amazonaws.com/prod?mode=get
  {“return_message”: “176.32.100.36”, “return_status”: “success”}
  在后端,API Gateway將請(qǐng)求轉(zhuǎn)化為JSON,并將請(qǐng)求發(fā)送方的IP地址發(fā)給了Python Lambda的函數(shù)。然后,Lambda會(huì)通過API Gateway將JSON回應(yīng)與IP返回給客戶端。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?