镜像迁移

镜像回源

通过回源设置,对于获取数据的请求以多种方式进行回源读取,满足您对于数据热迁移、特定请求重定向等需求。

通过规则的方式,对每条到NOS的Get,Head请求的Url进行匹配,然后按照特定的方式进行回源。规则最多配置10条,顺序匹配,直到匹配到有效规则。回源类型分为镜像方式和重定向的方式。

如果配置了镜像回写,则当Get一个不存在的文件时,会向源地址请求这个文件,返回给用户,并同时异步写入到NOS。

使用场景

镜像回写主要用于无缝迁移数据到NOS,即服务已经在自己建立的源站或者在其他云产品上运行,需要迁移到NOS上,但是又不能停止服务,此时可利用镜像回写功能实现。具体场景分析如下:

  • 源站有一批冷数据,同时在不断的生成新的热数据。配置镜像回写,将源站的地址配置到NOS上。当将域名切换到NOS上,就算有一部分新生成的数据没有迁移过来,依然可以在NOS上正常访问到,且访问一次后文件就会存入到NOS。
  • 只切换源站的部分流量到NOS,源站本身还在不断的产生数据。迁移方式与上述方式类似,只是流量切换到NOS后,不要将镜像回写的配置删掉,这样可以保证切换到NOS的流量还是能够拿到源站的数据。

使用细则

  • 只有当GetObject()本应该返回404的情况下,NOS才会执行镜像回写,向源站请求文件,如果是HeadObject请求,那么不会回写数据到NOS,只是去源站HEAD,并把得到的结果返回给用户。
  • 向源站请求的url为MirrorURL+object,回写到NOS的文件名为“object”,例如bucket为example-bucket,配置了镜像回写,MirrorURL为http://www.example-domain.com/,文件image/example_object.jpg不在这个bucket里面,此时去下载这个文件时,NOS将向http://www.example-domain.com/image/example_object.jpg发起GET请求,并将结果同时返回给用户以及写入到NOS,当下载完成后,这个文件就已经存在NOS上了,文件名为image/example_object.jpg,此时相当于将源站的文件同名的迁移到了NOS上。如果MirrorURL带有path信息,比如http://www.example-domain.com/dir1/,其他与上例相同,那么NOS回源的url为http://www.example-domain.com/dir1/image/example_object.jpg,写入到NOS的object依然是image/example_object.jpg,此时相当于将源站的某一个目录下的文件迁移到NOS上。
  • 传给NOS的header信息不会传递给源站,目前不支持带queryString的请求
  • 如果源站是chunked编码返回,那么NOS返回给用户的也是chunked编码。
  • 假设文件已经通过镜像回写到了NOS,如果源站的相同文件发生了变化,那NOS不会更新已经存在于NOS上的文件,因为此时文件已经在NOS上,不符合镜像回写的条件了。
  • 如果镜像源也不存在此文件,即镜像源返回给NOS的http status为404,那么NOS也返回404给用户

重定向

URL重定向功能的作用是根据用户设置的条件,以及相应的跳转的配置,向用户返回一个3xx跳转。用户可以利用这种跳转的功能对文件做重定向以及在此基础之上的各种业务。其流程如下:

使用场景

  • 其他数据源向NOS的无缝迁移。
    用户异步的从自己的数据源向NOS迁移数据,在此过程中未迁移到NOS的数据通过URL rewrite的方式返回给用户一个302重定向请求,用户的客户端根据302中的Location从自己的数据源读回数据。
  • 配置页面跳转功能。 比如用户希望隐藏自己的某些前缀开头的object,给访问者返回一个特殊的页面。
  • 配置发生404时的跳转页面。 发生404错误的时候用户可以看到一个预先设定的页面,不至于系统发生错误的时候向用户完全暴露NOS的错误。

操作说明

1.在桶列表找到对应的桶,点击[基础配置],如图所示

2.在[基础配置]页,找到[镜像迁移]

3.点击添加规则,在如图所示界面选择镜像回源或重定向;

说明:

  • 回源条件:当 http 状态码为 404 时触发回源
  • 回源地址: 可选 HTTP/HTTPS

例如选择镜像回源方式,将阿里云 OSS 的外网域名填到此处,回源条件设置为请求状态码为 404 时触发回源

4.浏览器访问桶的外网域名,当访问404时候触发规则去源站拉取文件并存储到桶中。