使用内部IP地址在EC2中运行TeamCity服务器和代理

我正在EC2中build立一个TeamCity集群,并带有一个SVN服务器,并希望用户使用TeamCity的“云”function ,在需要时启动新的代理。

在这一点上我主要关心的是确保三种types的机器(TC服务器,TC代理和SVN)用户内部EC2 IP地址之间的所有通信,以使数据免费传输(请参阅EC2定价页面,可用性区域数据传输)。

这对于SVN服务器来说很简单,我可以把它的私有IP地址放到TeamCity服务器configuration中。 但是,对于TeamCity服务器URL,我相信我需要input外部IP地址,以便用户可以访问服务器。 相同的IP地址被发送到新纺代理,以便他们知道在哪里交谈。

因此,从代理到服务器的通信将超过外部IP,从而导致数据传输成本。 我如何避免这种情况?

编辑

我在我的一个代理上运行了'dig',给了它TC服务器的弹性IP地址,并得到了这个(注意我模糊了外部IP)。 没有内部IP地址在那里。

[ec2-user@ip-10-166-9-94 ~]$ dig 54.243.xy ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.25.amzn1 <<>> 54.243.xy ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60896 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;54.243.xy IN A ;; AUTHORITY SECTION: . 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2012111500 1800 900 604800 86400 ;; Query time: 38 msec ;; SERVER: 172.16.0.23#53(172.16.0.23) ;; WHEN: Thu Nov 15 18:10:09 2012 ;; MSG SIZE rcvd: 106 

您不需要设置域名/ DNS。 如果您分配弹性IP,则可以使用Elastic IP Public DNS名称,如果您从外部查询,则它将parsing为外部IP,如果从其他EC2实例查询,则parsing为内部地址。

因此,如果我的弹性IP为54.254.54.54,则公共主机名为ec2-54-254-54-54.us-west-2.compute.amazonaws.com。 如果在内部查询,这将parsing为内部IP。

可以 CNAME你自己的主机名(foo.domain.com),它会以同样的方式运作。