我一直在寻找是否可以在Google云存储桶中托管静态React应用程序,并使用Google Cloud CDN和一个单独的Google云负载均衡器将缓存错误路由到存储桶中,管理证书,并将内部请求从React应用程序路由到GKE托管的API?
是否有可能实现这一体系结构,还是会有另一种推荐的方法?
发布于 2020-03-01 03:04:19
您可以使用(两个或更多)路由匹配器来实现负载均衡器,一个用于api.example.com,后端为GKE,另一个用于带有后端桶的static.example.com。
这个后端桶将启用CDN。如果需要,可以将多条路由指向同一个后端。
具体地说:
发布于 2020-02-28 12:12:57
这种方法首先要考虑的是,CDN位于负载平衡器的前面。而不是相反的方法。这意味着CDN不需要路由。路由是在之后完成的,缓存请求内容。
除此之外,CDN还开始缓存内容。这意味着,只有在客户端请求所述资源之后,它才需要第一次获取资源。
如果资源尚未缓存在CDN中,那么它将被路由到后端(通过负载均衡器),以便检索它并生成一个“本地副本”。当然,这要求资源也存在于后端,以便CDN缓存它。
您的方法似乎假设CDN将充当一种不同类型的持久层,因此我认为它仍然是可能的,但不是使用Cloud,而是使用云存储桶。
因为存储桶有多区域班,所以您可能能够实现一些与您正在尝试的CDN类似的东西。
更新:
考虑到新的前提:使用相同的负载均衡器在GCS桶中托管的静态站点和部署在GKE中的API之间路由请求,CDN在其前面,并支持证书。
尽管HTTP(S)负载平衡器可以管理证书,与Cloud兼容,可以将桶或GCE实例作为后端,并且是GKE中的默认in选项(因此它也与它兼容),但这种方法似乎不可行。
当使用部署此类负载均衡器的默认入口类(GCE)在GKE上公开应用程序时,GKE 云控制器管理器负责该资源,并依赖于部署到GKE的定义。
如果您尝试手动管理负载均衡器以添加一个新的后端,在您的示例中,包含静态应用程序的桶,如果将新版本的Ingress部署到集群中,则更改可能会被逆转。
在相反的情况下,手动创建负载均衡器并将其后端配置为服务桶的内容:不支持将这个负载均衡器附加到GKE集群,它必须在Kubernetes中创建。
因此,简单地说:要么使用负载均衡器和桶,要么使用GKE集群,而不是因为前面提到的设计。
当然,如果您部署了两个不同的负载均衡器(ingress表示GKE),并将CDN放在负载均衡器的前面,那么这是完全可能的。我提到这一点是为了与上面的信息进行对比。
(请告诉我这是否有帮助:)
https://stackoverflow.com/questions/60444988
复制相似问题