公司的跨國業務嘗試使用了AlibabaCloud的雲企業網(後簡寫爲CEN)加速,記錄一下搭建實例的整個過程,以供拾遺。
構建CEN加速前,已存在私有云暴露的https互聯網訪問入口,也就是需要進行跨國訪問加速的IP,記爲:p_cloud_IP。
當前存在英國用戶通過互聯網直連搭建在武漢的私有云的鏈路,示意圖如下:
在AlibabaCloud官網上,首先創建兩個VPC實例,一個在上海(阿里雲沒有武漢節點),一個在英國倫敦。
- 注意創建VPC時要用不同的網段,否則會造成阿里雲的內網IP衝突,這裏我一個使用了192.168.x.x網段,一個使用了172.16.x.x網段。
創建CEN實例,把剛剛創建的兩個VPC實例都加入此CEN。如下圖所示:
購買寬帶包,設置中國內地到歐洲,如下圖所示:
分配帶寬,如下圖所示:
至此,CEN的管道已經構建完畢了。
之後在上海的VPC和倫敦的VPC上,分別購買一臺ECS。倫敦的ECS作爲訪問入口,需要開通外網權限;上海的ECS作爲訪問中繼,爲了SSH連接方便,也推薦開通外網權限。
兩臺ECS搭建完畢,如下圖所示:
爲了後續記錄方便,記倫敦ECS爲ld_ECS,其外網IP爲ld_outer_IP,阿里內網IP爲ld_inner_IP;記上海ECS爲sh_ECS,其外網IP爲sh_outer_IP,阿里內網IP爲sh_inner_IP;
爲了測試CEN的連通性,SSH連接ld_ECS,嘗試ping一下sh_inner_IP,如果能ping通,就證明CEN連通,如下圖所示:
同時可以ping一下sh_outer_IP,對比兩者的加速效果,如下圖所示:
直觀感受上加速效果沒有想象中的明顯,阿里雲的工作人員稱傳輸速率只是CEN加速的一個優點,另一個優點是丟包率幾乎趨零。丟包率的測試留到後續工作中進行。
接下來配置ld_ECS和sh_ECS的nginx,作爲兩層轉發。示意圖如下:
首先SSH連接sh_ECS,安裝nginx。
在https://nginx.org/download/下載nginx1.18版本的編譯安裝包,放到sh_ECS上後解壓到/xxx/nginx-1.18.0。
按照如下步驟,編譯安裝:
cd /xxx/nginx-1.18.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module #需要安裝ssl module
make
make install
之後查看nginx是否安裝成功:
cd /usr/local/nginx/sbin
./nginx -V
輸出如下所示,記爲安裝成功:
接着進行配置,寫好的配置nginx.conf文件,節選重要的部分,如下所示:
upstream p_cloud{
server p_cloud_ip;#私有云暴露在公網上的ip
}
server {
listen 443 default ssl;
server_name localhost;
#ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass https://p_cloud;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
新建SSL個人證書,步驟如下:
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl req -new -x509 -key server.key -out ca.crt -days 3650
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
把生成好的server.crt和server.key放到/usr/local/nginx/conf下面。
啓動nginx,步驟如下:
cd /usr/local/sbin/
./nginx -t #測試配置文件是否異常
./nginx
這時可以訪問https://sh_outer_IP,測試上海ECS到私有云的網絡是否通暢了。
沒問題以後,SSH連接ld_ECS,同樣安裝nginx。
安裝過程一樣,不再贅述,寫好的配置nginx.conf文件,節選重要的部分,如下所示:
upstream sh_ip{
server sh_inner_ip;# 上海ECS內網IP
}
server {
listen 443 default ssl;
server_name localhost;
#ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass https://sh_ip;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
把剛剛在sh_ECS上生成的server.crt和server.key放到ld_ECS的/usr/local/nginx/conf下面,啓動nginx:
cd /usr/local/sbin/
./nginx -t #測試配置文件是否異常
./nginx
訪問https://ld_outer_ip,如果沒有差錯的話,就可以通過阿里雲內網加速訪問到私有云上的內容了。
至此,整套CEN網絡實例部署完畢。
最後再進行丟包測試,SSH登錄ld_ECS,分別ping sh_inner_ip,sh_outer_ip各一個小時:
在輸出的文檔中即可統計丟包率。在針對sh_inner_ip的ping記錄中中可以看到丟包率爲0,sh_outer_ip的ping記錄中由於存在網絡波動,丟包率可能會不爲0。