1. Load Balancer 一般有以下实现方案
- 一个 Anycast IP(比如 Google LB),GCP 的 cdn 是不直接提供对外连接地址,而是由 lb 的 ip 提供。
- 一个普通 IP(比如 Ucloud LB)
- 一个 CNAME 分区解析(比如 AWS ELB),AWS 的 cdn 是直接 提供了对外的 CNAME 地址。
2. dns 解析知识点
- 一个二级域名只能同时存在一个 A 记录,不能出现 A 和 A,A 和 CNAME 记录同时存在(假设能存在,也只会走 A 记录),不过你是哪个地区解析,这是最高优先级。
3. 问题
问题一:GCP cdn 没有提供 CNAME fqdn,无法 CNAME?
我们在 Router 53 上面做 cdn 相关的域名 CNAME 的时候,因为之前用的 AWS,所以 CNAM 方式要保留,另外只有 CNAME 才能多个同时存在存在按不同地理位置进行解析。
示例:
www CNAME aws.cloudfront.cname.fqdn1 香港
www CNAME aws.cloudfront.cname.fqdn2 美国
www CNAME eggcpcdn.test1.com 英国
解决办法:
aws 那边在 route53 上建一条 A 记录(比如eggcpcdn.test1.com),指向 Cloud LB IP,然后把这个 hk 域名当做cname添加都route53中
问题二:GCP 的 lb 无法自定义 TCP LB 的端口?
场景:LB 后面是 nginx,nginx 负载 80、443 和其他 tcp 端口,采用了 umanaged instance group(非托管实例)。
1.如果要同一组 umnaged instance group,服务多个LB,要 LB http(s) 模式的 balancing mode 兼容(这里要用 Rate mode)才可以。然后在 TCP model 那里选择 Single region only,HTTP(s)则可由继续用 Multiple regions
2.要么用多个不同的 vm 创建不同的 ig,也就是多个 nginx 在不同的 instace group,lb 的时候也就影响了,如果是一个 ig 后面多个 nginx vm,那么就只能通过一个 ig 负载多个端口的方式去进行 1 方法的处理。
3.在 1 那里先创建好 HTTPS 的 lb 并且选择了 UTILIZATION mode 而不是 rate mode,那么你创建 TCP LB的时候,选择 Multiple regions 的话,TCP 只能用固定端口,而不能自定义 。