公司的跨国业务尝试使用了AlibabaCloud的云企业网(后简写为CEN)加速,记录一下搭建实例的整个过程,以供拾遗。
构建CEN加速前,已存在私有云暴露的https互联网访问入口,也就是需要进行跨国访问加速的IP,记为:p_cloud_IP。
当前存在英国用户通过互联网直连搭建在武汉的私有云的链路,示意图如下:
在AlibabaCloud官网上,首先创建两个VPC实例,一个在上海(阿里云没有武汉节点),一个在英国伦敦。
创建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。