混合云访问阿里云对象存储的解决方案

混合云融合了公有云和私有云,是近年来云计算的主要模式和发展方向。企业出于安全考虑更愿意将数据存放在私有云中,但是同时又希望获得公有云的计算资源。阿里云混合云方案中客户IDC和阿里云VPC通过专线/VPN打通,实现云上云下业务紧密连接,既可以利用云上资源的按需使用和易扩展的特性,又可以利用本地IDC满足合规性要求。

专线/VPN能为客户IDC访问阿里云对象存储提供高速安全的传输通道。但在混合云方案中,客户IDC访问阿里云对象存储时(例如把本地数据备份到云上),由于客户IDC解析阿里云对象存储域名得到的是阿里云对象存储公网IP地址,所以数据流还是走公网传输,无法利用专线/VPN。该教程为混合云中使用专线/VPN访问阿里云对象存储提供解决方案。

混合云访问阿里云对象存储的解决方案

混合云中使用专线/VPN访问阿里云对象存储方案的核心是使用阿里云服务器作为访问代理:

  1. 首先申请一台阿里云服务器并安装Nginx,作为到阿里云对象存储的反向代理;
  2. 修改客户IDC机器的本地DNS记录,把访问阿里云对象存储的请求指向Nginx代理。

    注意:本方案只能保证同区域下访问阿里云对象存储走专线/VPN和内网。例如客户IDC和阿里云的北京VPC打通,本方案可以利用专线/VPN访问位于北京的阿里云对象存储 Bucket;但如果客户去访问位于广州的阿里云对象存储 Bucket,数据还是会走公网传输。

配置Nginx反向代理

  1. 首先申请一台阿里云服务器。推荐配置:2核CPU、4G内存、CentOS 7.1,无需配置公网IP。

  2. 安装Nginx。由于我们需要额外的stream模块来提供TCP协议代理,所以还需要安装stream模块。

    a) yum install nginx nginx-mod-stream

    b) 配置Nginx:

    cd /nginx/vim nginx.conf

    把nignx.conf修改成如下配置,注意下述配置适用于北京区域,如果想访问广州区域的阿里云对象存储,把配置文件里的bj替换成gz即可:

    #user work;worker_processes auto;events { worker_connections 1024;}stream { error_log logs/access.log info; # The backend address of 阿里云对象存储 in Beijing upstream httpbosbj { server bj.bcebos.com:80; } upstream httpsbosbj { server bj.bcebos.com:443; } server { listen 80; proxy_pass httpbosbj; # Proxy settings proxy_connect_timeout 5s; proxy_timeout 90s; proxy_buffer_size 4k; } server { listen 443; proxy_pass httpsbosbj; # Proxy settings proxy_connect_timeout 5s; proxy_timeout 90s; proxy_buffer_size 4k; }}

    c)验证配置文件并启动Nginx(需要root):

    nginx -tmkdir –p /usr/share/nginx/logs

    确认Nginx成功启动:

配置客户IDC节点

配置本地DNS记录,让客户IDC机器把访问阿里云对象存储的请求指向到Nginx中转机。例如在CentOS环境下,在/etc/hosts中添加记录:

nginxIp bj.bcebos.com

这里nginxIp就是上面配置的Nginx反向代理的内网IP地址,eg. 192.168.1.5。Windows等环境下修改本地DNS记录同理。

测试

配置完成后您就可以使用专线/VPN从IDC机器访问阿里云对象存储了,您可以使用阿里云对象存储 SDK、CLI、阿里云对象存储桌面等各种工具进行文件上传和管理。

此外,您还可以登陆Nginx代理节点检查日志来确认Nginx反向代理工作状态是否正常:

less /usr/local/nginx/logs/access.log

说明

本教程提供的方案可以满足大多数情况下的访问阿里云对象存储需求。在2核4G配置下,代理节点可以支撑1000并发连接(这是由于阿里云对象存储出于防DDoS原因限制了单IP的并发访问连接数)和1Gbps的访问速度。

不过本方案有如下限制:

  • Nginx代理是潜在的单点故障,您需要维护这台阿里云服务器保证其运行正常;
  • 如果需要更高的上传速度和更多的并发连接,可以进一步提高Nginx节点配置或增加额外Nginx节点等。