从另一个VPC访问私有RDS数据库

时间:2016-11-08 16:55:36

标签: postgresql amazon-web-services ssh amazon-rds amazon-vpc

我尝试使用对等连接从其他VPC访问私有RDS实例。我有两个VPC:

  1. 具有一个公有子网的VPC-K8S($(document).ready(function() { var counter1 = 1; var counter2 = 2; var counter3 = 3; var paused1 = false; var paused2 = false; var paused3 = false; $('input[type=radio]').click(function() { delay = $('input[type=radio]:checked').val(); $(".speed_buttons").fadeOut(0, function() { $(".start_over_button").fadeIn(0); }); $("p.directionsOtheGame").text("Get three in a row!"); setInterval(function firstWindow() { if (paused1 == false) { counter1 = counter1 + 1; if (counter1 > 3) { counter1 = 1; }; $("#mainImage1").attr("src", "image" + counter1 + ".jpg"); }; }, delay); setInterval(function secondWindow() { if (paused2 == false) { counter2 = counter2 + 1; if (counter2 > 3) { counter2 = 1; }; $("#mainImage2").attr("src", "image" + counter2 + ".jpg"); }; }, delay); setInterval(function thirdWindow() { if (paused3 == false) { counter3 = counter3 + 1; if (counter3 > 3) { counter3 = 1; }; $("#mainImage3").attr("src", "image" + counter3 + ".jpg"); }; }, delay); $("#mainImage1").click(function() { paused1 = true; }); $("#mainImage2").click(function() { paused2 = true; }); $("#mainImage3").click(function() { paused3 = true; }); }); });
  2. VPC-RDS(172.20.0.0/16),包含一个公有子网(172.17.0.0/16)和3个私有子网(172.17.0.0/24
  3. VPC-RDS有2个安全组(非实际名称):

    1. 172.17.{1,2,3}.0/24,从我的IP
    2. 接受SSH
    3. default,它接受​​来自db安全组的端口5432上的TCP。
    4. 我在私有子网中创建数据库子网组后,在VPC-RDS中部署我的数据库实例,并将其配置为不可公开访问。要从我的工作站访问它,我在VPC-RDS的公共子网中使用default安全组创建一个小实例,并创建一个SSH隧道:

      default

      我可以通过localhost从我的工作站访问RDS。

      我希望能够从我的Kubernetes集群(VPC-K8S)访问我的RDS实例。我在两者之间建立了对等连接,并相应地配置路由表(在VPC-K8S中:ssh -L 5432:rds-host-name.us-east-1.rds.amazonaws.com:5432 -i "KeyName.pem" ec2-user@ec2-host-name.compute-1.amazonaws.com ; VPC-RDS:172.17.0.0/16 -> pcx-112233

      我无法从我的一个K8S节点或K8S VPC中的任何实例连接到RDS。我怀疑它与172.20.0.0/16 -> pcx-112233安全组有关,但即使我将端口5432打开到所有IP(0.0.0.0/0)它也没有帮助。

      任何想法如何做到这一点,或者这只能通过公共可访问的RDS实例或VPC-RDS和db SG中的堡垒主机来实现?

1 个答案:

答案 0 :(得分:9)

愚蠢的疏忽,但如果有人帮助我,我会把它留下来。

我在VPC-RDS中的私有子网使用与公有子网不同的路由表。这样做是为了使Internet地址(对于catch all 0.0.0.0/0)指向NAT网关而不是公共子网中的Internet网关。

我在私人子网中添加了一条规则'用于对等连接的路由表(172.20.0.0/16 -> pcx-112233),然后将db安全组配置为从172.20.0.0/16接受端口5432上的TCP流量。