甲骨文免费套春川网络落地其他区域 多区域组网 降低延迟 增强稳定性
## 本文改自Linux.do站[wsadkjhl](https://linux.do/u/wsadkjhl)大佬的[文章](https://linux.do/t/topic/2934050)
## 先搞清楚 A 和 B
```
客户端 --> A 区域 NLB --> drg+rpc 甲骨文内网 --> B 区域机器
```
A 是入口。A 这边不用开机器,只放一个网络负载平衡器(NLB),NLB 不要钱。 B 是落地。B 上要有一台已经跑着代理服务的机器,最后出去的 IP 就是这台的。
客户端到 A 这段走公网,A 到 B 这段走甲骨文自己的内网。所以 A 要选你本地连过去延迟低、晚高峰也稳的区域,B 就是你想要的落地地区。
本地到各区域的延迟可以在这个网站测:oracle.rui3.com

区域之间的延迟在控制台里能看到:网络 -> 区域间延迟。

本地到 A 的延迟,加上 A 到 B 的延迟,大概就是套完以后的延迟。这个数字要是比直连 B 高出一大截,就没必要折腾了。只是说可能晚高峰稳定性会高一些
**以及A 和 B 在同一个账号下的话,B 回 A 算一次出站,A 回客户端又算一次,每月 10T 的免费流量就只剩一半能用。**
## 准备工作
账户要先升级成按量付费,不升级是订阅不了其他区域的。**(不要乱订阅,最多3个)**
升级完,点右上角的区域下拉,选"管理区域",找到 A 点订阅。订阅后要等几分钟才能用。
我这里A为Osaka大阪,B为美西圣何塞(春川质量会好点,但我已经订满3个区域了)
## 第一步 B准备
B 上建机器的时候会自动建一个 vcn,一般是 10.0.0.0/16。
切到 B 区域,打开 计算 -> 实例,点进你的机器,在"主 VNIC"内"IP管理"那里能看到这几样,先记下来:
- 专用 IPv4 地址,比如 10.0.0.114,后面加后端要用
- IPv6 地址,要用 v6 的话后面也要用
- 子网,点进去能看到这台机器用的是哪个 vcn

再点进这个 vcn,在详细信息里抄下面两个:
- IPv4 CIDR 块,比如 10.0.0.0/16
- Oracle 分配的 IPv6 前缀,比如 2603:c024:c218:2200::/56

如果 IPv6 前缀那一栏是空的,说明这个 vcn 还没开 v6。如果想开v6传输自行搜索教程,只开v4可跳过。
## 第二步 A准备
### 创建VCN
切到 A 区域,打开 网络 -> 虚拟云网络 -> 创建VCN

VCN 名称:随便填
IPv4 CIDR 块:10.1.0.0/16
启用 IPv6:勾上IPv6前缀
DNS:关掉(无用)
**重要:这里的网段千万不能和 B 一样。B 是 10.0.0.0/16,A 就用 10.1.0.0/16。两边如果一样,A 会把 B 的 10.0.0.x 当成自己 vcn 里的地址。**
点下一步,然后点创建。向导会把互联网网关和默认路由一起建好。
建好以后进到这个 vcn,在详细信息里把 A 的 IPv6 前缀抄下来,比如 2603:c023:17:6900::/56。

### 创建子网
进入子网,点击创建子网

这里我用10.2.0.0是因为我前面创建的是10.2.0.0,你们创建的是啥就填啥
要ipv6就再点一下"+其他CIDR块"选Oracle分配的IPV6前缀,然后右侧随便输两个数字
### 创建网关
弄完后进入网关页点击创建Internet网关,名字自己随便起

### 创建路由
创建好后再点进路由,看一下 Default Route Table。

先把公网访问权限打开,进入路由规则选新建规则,把下面这两个填进去

## 第三步 A 建 drg 和 rpc

还在 A 区域,打开 网络 -> 动态路由网关 -> 创建动态路由网关,名字随便起,我的叫 JumpToB。
建好以后进去,点击"附加"菜单,再点创建 虚拟云网络 附加。名字随便填,VCN 选刚建的 A 的 vcn。

其他全默认,直接确定
再点"远程对等连接附加",点创建远程对等连接,填个名字。

建好以后点这个 rpc 的名字进去,详细信息里有一行 OCID,点旁边的复制,找个地方先存着,下一步要用。

## 第四步 B 建 drg 和 rpc 并连上 A
切到 B 区域,跟上一步一样,建一个 drg,VCN 附加选 B 的 vcn,再建一个 rpc。
B 这边多一步:点进 B 的 rpc,右上角有个"建立连接"。
区域:选 A 远程对等连接 OCID:粘贴刚才复制的 A 的 rpc 的 OCID

点建立连接,等一两分钟,对等状态变成"已对等"就连上了。A 那边的 rpc 状态也会跟着变。

## 第五步 路由表
光连上还不够,两边都得告诉路由表,去对面的流量要交给 drg。
先在 A:网络 -> 虚拟云网络 -> A 的 vcn -> 路由表 -> Default Route Table -> 添加路由规则。
目标类型:动态路由网关 目的地 CIDR 块:10.0.0.0/16(B 的 IPv4 网段) 目标动态路由网关:A 的 drg

再加一条 v6 的:(可选)
目标类型:动态路由网关 目的地 CIDR 块:2603:c024:c022:xx00::/56(B 的 IPv6 前缀) 目标动态路由网关:A 的 drg
**v6 这里要填 vcn 的 /56,不要填子网的 /64。**
然后切到 B 区域。B 的机器用的是哪张路由表,要从 实例 -> 子网 点进去看,子网详情里会显示它绑定的路由表,一般也是 Default Route Table。在这张表里加两条:
目的地:10.1.0.0/16(A 的 IPv4 网段) 目的地:2603:c023:18:2cc::/56(A 的 IPv6 前缀) 目标都是 B 的 drg
加完以后,两边的路由表应该都是 4 条:两条走 Internet 网关,两条走 drg。
## 第六步 安全规则
A:在 vcn 里点"安全列表",找到公共子网用的那张(Default Security List),加入站规则。
源 CIDR:0.0.0.0/0 IP 协议:所有协议
v6 的再加一条,源 CIDR 填 **::/0**,协议也填所有协议。
B:同样找到机器所在子网的安全列表,入站要放行 A 过来的流量。
源 CIDR:10.1.0.0/16 IP 协议:所有协议
v6 的再加一条,源 CIDR 填 A 的 2603:c023:15:200::/56。
**偷懒跟上面一样全填0也行**
出站规则默认就是全放行的,看一眼有没有被改过就行。
## 第七步 A 建网络负载平衡器
切到 A 区域,网络 -> 负载平衡器 -> 网络负载平衡器 -> 创建网络负载平衡器。
名称:随便填 可见性类型:公共 分配公共 IP 地址:临时 IPv4 地址就行,想要固定 IP 就选保留 允许 IPv6 地址分配:要用 v6 就打开 VCN:A 的 vcn 子网:10.1.0.0/24 那个公共子网
配置监听程序
名称:随便填
流量类型:UDP/TCP。
IP 协议:IPv4
端口:任意端口或输入0即为任意
选择后端
名称:随便填
保留源IP:关掉。(不关的话没法按 IP 加后端)
后端类型:选 IP 地址,不要选计算实例。计算实例只能选 A 区域自己的机器
IP 地址:填第一步抄下来的 B 机器的专用 IPv4,比如 10.0.0.114。**这里不能填公网 IP**
端口:监听如果选了任意端口,这里填 0;监听填的是具体端口,这里也填同一个
健康检查
协议:TCP 端口:填 B 机器上正在监听的端口,比如你的代理端口。这里不能填 0
**不想管健康检查的话,就把"失败时打开"勾上(建议打开,因为这个健康检查神神鬼鬼的)**
点下一步,确认一下配置,点创建。
## 第八步 加 v6 监听
一个监听只能选一种 IP 协议,所以 v6 要另外建一个。
进到刚建好的 NLB,点监听程序 -> 创建监听程序,IP 协议选 IPv6。后端集新建一个 IPv6 的,后端填第一步抄的 B 机器的 IPv6 地址,其他配置跟 v4 那套一样。
## 第九步 验证
在 NLB 详情页右边看健康状况,后端集都显示"正常"就说明通了。改完配置要等一两分钟,状态才会刷新。
用显示的IP地址去测试已有的服务,能用就代表成功
