为你的MiniOSS起个好名字

在之前的文章中,我们介绍了阿里云的MiniOSS,一种可以完全兼容阿里公共云OSS服务的一个硬件设备,这个设备在交付形式上类似于在线下数据中心中广泛磁盘阵列,因此在成本和可维护性上相对于阿里专有云要精简太多,这里有种昔日王谢堂前燕,飞入寻常百姓家的感觉。

在向MiniOSS写入数据时有两种寻址定位方法,可以用IP地址也可以域名,两种方式的格式有一定区别:

这里的bucket是OSS的存储容器,相当于我们windows操作系统上的盘符,就像一台PC上可以有多个盘符一样,在一套MiniOSS上可以创建多个Bucket。在使用IP地址时bucket的名字放在IP地址的后面,而使用域名时bucket的名字要放在endpoint的前面。这个endpoint在公共云代表一个地域下的OSS的服务入口,而在minioss上则用来定位minioss设备本身,在我们这个例子中endpoint是oss.domainname.com,OSS的客户端通过解析这个域名来定位minioss所在的IP地址。

假如你希望写入MiniOSS的数据使用HTTPS加密传输,则需要申请对应域名的证书并绑定到MiniOSS设备上去,这个过程相当于给MiniOSS取名。因为既要定位bucket也要定位endpoint,所以我们的MiniOSS至少需要一个endpoint的域名及一个或多个bucket的域名,因为在使用域名的情况下在endpoint前加上bucket的前缀就是bucket的域名,因此这里的关键就是为endpoint来分配域名了。

因为我们的目标是申请对应域名的证书,所以站在证书的申请这个角度,我们举的这个例子oss.domainname.com 就不是一个特别好的名字,因为需要有多个bucket,所以我们需要申请的是泛域名证书,也就是*.oss.domainname.com,而以泛域名证书的匹配规则,这个证书可以匹配bucket01.oss.domainname.com、bucket02.oss.domainname.com、……,但无法匹配oss.domainname.com,也就是说三级的泛域名证书无法匹配二级域名,这样在需要对endpoint进行操作时我们还需要一个额外的单域名证书oss.domainname.com。而一套MiniOSS目前只能部署一套证书,要解决这个问题我们还需要增加一些额外的架构,这个问题我们这次暂且不展开,留到下次讨论。

能不能只申请一个证书就同时满足endpoint和多个bucket的使用需求呢,答案当然是可以的,那就是直接使用一级域名来命名endpoint,二级域名来命名bucket,举个例子:

因为根据泛域名的匹配规则,二级泛域名*.domainname.com 既能够匹配bucket01.domainname.com、bucket02.domainname.com、……也能够匹配domainname.com这个一级域名本身,这一点和三级泛域名不同。

正常情况下,我们现有的一级域名一般都已经用于门户等业务应用场景,所以,我的建议是最好为你的MiniOSS重新申请一个一级域名,并申请这个域名下的二级泛域名证书。

上一篇:专属钉钉混合云架构的启示


下一篇:值得收藏 | 专业的MySQL开发规范