本文對IPv6化改造思路以及CDN的IPv6化改造進行了介紹,本期将對ECS及業務應用的IPv6化改造進行介紹。
ECS及業務應用IPv6化改造方法
這部分的改造我們可以根據具體情況使用兩種方法:
- 使用IPv6轉換服務:通過阿裡雲的IPv6轉換服務進行旁路轉換,不改造應用架構,但類似反向代理有一定的局限性,可以作為短期過渡使用。
- ECS配置IPv6網關:VPC中開啟IPv6網關,在每一台ECS中配置IPv6 Interface,并手工配置應用服務使之開啟IPv6的服務監聽,這種方法會進行一些配置變更和應用變更,雖然操作技術門檻略高一些,但是長期可行的方式。
使用IPv6轉換服務
從客戶業務應用的角度出發,如果客戶對其應用層面并不非常熟悉,對現有業務的不間斷運作要求非常高,同時和外部資料交換并不是那麼頻繁,那麼采用“IPv6轉換服務”是個不錯的選擇,具體操作起來也很容易,具體分為三步:
(1)擷取應用服務IP和服務端口:這裡的IP和服務端口可以是SLB的,也可以是ECS的,主要看現有IPv4應用對外釋出時所暴露的IP和服務端口;
(2)評估應用的CPS(Connection Per Second,每秒建立連接配接數)和帶寬:根據現有IPv4應用通路情況和客戶規劃情況确定IPv6轉換服務的執行個體規格和帶寬;
(3)配置IPv6轉換服務:根據CPS、帶寬、服務IP、服務端口就可以進行IPv6轉換服務的配置了,配置對應的映射條目。
下圖是為1xx.xx.xx9.129的TCP80進行IPv6轉換映射:

圖1:添加IPv6轉換映射條目
配置好後會獲得一個IPv6位址,使用這個IPv6位址即可通路ECS或業務應用了。如上圖的配置,我們的IPv6通路位址就為:
http://[2::*::2bf]:80。
圖2:通路IPv6位址示例
ECS配置IPv6網關
如果客戶對自身的業務應用非常熟悉,且動手能力很強,那麼通過支援客戶對ECS和應用進行IPv6的改造,使其達到“IPv6+IPv4雙棧”模式,是一個一勞永逸的方法,這種方法在變更前要對客戶應用架構和具體使用的服務程式很了解,同時變更過程中可能會出現業務閃斷,需要格外注意方案的有效性,可以通過灰階的方式分子產品進行變更和驗證,具體改造需要下面幾步。
配置VPC的IPv6功能
這一步需要提前讓客戶申請“IPv4/IPv6雙棧VPC公測資格”,稽核通過後點選“開通IPv6”,使VPC和其下的vSwitch支援IPv6。
圖3:VPC開通IPv6功能示意圖
配置成功後如下圖所示:
圖4:VPC的IPv6配置成功
建立并配置IPv6網關
這一步需要配置IPv6網關的規格和IPv6公網帶寬,需要根據客戶應用的公網轉發吞吐和業務帶寬進行規劃。
圖5:IPv6網關設定
為ECS申請IPv6位址
在ECS控制台中,為需要進行IPv6改造的ECS申請“輔助IP”,使其獲得公網IPv6位址。
圖6:ECS申請“輔助IP”
這一步隻是在阿裡雲的管控層面為所選ECS申請到了對應的IPv6位址,還需要在ECS層面配置才能使ECS中的作業系統擷取這個IPv6位址(詳見3.5)。同時,需要在“IPv6網關”的“IPv6網關帶寬”中為對應的IPv6位址配置設定帶寬,否則此IPv6位址無法對外網提供服務。
圖7:為IPv6位址配置設定帶寬
配置安全組
這一步非常重要,很多客戶在做了IPv6化後發現依然無法通過IPv6進行通訊,客戶在安全組中常常會設定“0.0.0.0/0”這種規則,以為是代表所有,其實0.0.0.0/0”僅是IPv4的“ALL對象“,需要客戶再建立對應的IPv6安全組規則,授權對象寫成“::/0”即可。
配置ECS内的系統參數
這一步也非常關鍵,通過修改ECS内sysctl的參數使其Interface支援IPv6協定,并擷取3.3中擷取的IPv6位址,動手能力強的客戶可以通過手工修改sysctl中的net.ipv6.conf.all.disable_ipv6、net.ipv6.conf.default.disable_ipv6、net.ipv6.conf.lo.disable_ipv6三個參數,使其全部為“0”來使能IPv6 Mod,也可通過
這裡的指引執行自動化腳本開啟IPv6 Mod。開啟成功後,通過執行:ip a | grep “inet6”即可看到作業系統已經擷取到對應的公網IPv6位址:
圖8:檢視ECS作業系統擷取到的公網IPv6位址
驗證ECS内作業系統的IPv6連通性
進行過如上五步後,可以在改造後的ECS中執行:ping6 aliyun.com或ping6 ipv6.baidu.com來測試IPv6協定棧和網絡是否有效。
圖9:驗證ECS内作業系統的IPv6連通性
應用IPv6服務監聽開啟
這一步需要對客戶業務應用有很深的了解,并根據具體的應用服務軟體特性進行IPv6開啟。例如某ERP開發公司的某業務應用依賴nginx系的Web服務程式提供服務,對外服務端口為8080,則我們需要在nginx.conf中添加對應的IPv6監聽:
server {
listen 80;
listen [::]:80;
……
}
然後執行nginx -t測試配置是否正确,确認無誤後和客戶進行灰階釋出(systemctl restart nginx);
然後執行netstat -tunlp看是否出現如下監聽服務:
tcp6 0 0 :::80 :::* LISTEN 1053/nginx
如出現以上情況,說明變更成功,同時不必緊張為何沒有顯示IPv4的80監聽,這是正常情況,IPv4和IPv6都可通路。
無論nginx還是tomcat,還是其他C/S或B/S服務,開啟IPv6服務監聽的方法均大同小異,搜尋對應的應用官網或服務商的文檔即可擷取具體配置方法,這裡不再贅述。
下期本文将從“SLB、DNS”幾個層面具體講解IPv6化改造的方法,敬請期待!
作者:成俞晟
阿裡雲智能GTS-SRE團隊技術服務經理
曾就職于聯想集團、華為、中化集團,有着豐富的資料中心及雲計算經驗,現就職于阿裡雲智能GTS-SRE團隊,任北方區SRE架構師。
我們是阿裡雲智能全球技術服務-SRE團隊,我們緻力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基于雲建構更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運作更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿裡雲SRE技術學院釘釘圈子,和更多雲上人交流關于雲平台的那些事。