云計算公司Joyent近日宣布自家的DNS服務正式上線。該服務被稱為Triton容器名服務(Triton Container Name Service,簡稱CNS),可以讓應用客戶端及用戶更容易地定位那些所在托管服務器不斷變動的服務。
此處所指的服務器是由Triton控制的計算實例,它可以是Docker容器、架構容器(功能類似裸機虛擬機),也可以是虛擬機。Triton CNS通過利用Triton實例的名稱和標簽,來定位服務。一組提供某個服務的容器共享一個標簽和一個CNS地址記錄(address record)。該記錄可以直接通過互聯網訪問。
許多現代應用已經采用了不可變架構模型,意味著應用的每次更新會被推送到全新配置的服務器(或容器)上,隨后新服務器上線,老服務器被廢棄。大部分情況下,新部署服務的地址會有變化,客戶端應用必須通過新的地址才能定位服務,這就涉及到手動修改配置。如果使用DNS來實現服務發現(service discovery),那么就必須首先更新DNS項(DNS entry)。這對于經常發布版本更新的環境來說操作繁瑣。
大部分應用會在第三方DNS服務商托管自己的域名。在這種情況下,自定義的域名可以映射到CNS記錄上。DNS查找將會返回托管該服務的一臺在線容器。由于CNS與Triton容器服務(Triton Container Service)高度集成,它掌握了每個容器的在線狀態。隨著容器不斷新增和刪除,Triton CNS將密切追蹤其狀態,只返回當前在線的容器。
其他云計算服務商也能實現不可變服務器,盡管方式不同。例如,AWS公司提供的“彈性IP”是可以指定給任意實例(AWS對虛擬機的稱呼)的一個IP地址。準備好新實例后,彈性IP就可以被指定給新實例,并不需要更改服務注冊表(service registry)或DNS。Openstack云部署中有一個叫作“浮動IP”的類似概念,支持同樣的功能。
去年,Joyent在一個討論請求(Request for Discussion,簡稱RFD)中提出了CNS這個概念。并在同一年推出了容器管理架構Triton。