怎么绑定不同的jvm进程到不同的公网ip呢?

2013-09-06 13:29:58 +08:00
 huazhouji
小弟买了个vps,给了两个公网ip,想要在这个vps上起两个jvm进程但是要分别走不同的公网ip出去,这个怎么才能办到呢?
4445 次点击
所在节点    Java
13 条回复
nybux
2013-09-06 13:32:47 +08:00
bind()应该可以
huazhouji
2013-09-06 13:44:02 +08:00
@nybux 能说的详细一点吗?
damngood
2013-09-06 13:59:23 +08:00
这个两个 JVM 是做什么用途的呢, 如果是提供 HTTP 服务的话,可以用 nginx 做个反向代理服务器吧
varrily
2013-09-06 14:09:57 +08:00
@huazhouji nybux 说的应该是socket 分别绑定到不同的ip
BOYPT
2013-09-06 14:15:39 +08:00
跑tomcat的话,server.xml里面就可以写绑定地址。
seeker
2013-09-06 14:16:37 +08:00
ServerSocket(int port, int backlog, InetAddress bindAddr)
wubo19842008
2013-09-06 16:49:14 +08:00
要看你jvm提供什么服务了,如果通过web容器提供http服务,直接在web容器或者webserver上配置,如果是自己开发的socket服务就需要用ServerSocket这种编程级的方法。
huazhouji
2013-09-06 17:35:50 +08:00
@wubo19842008
@seeker
@BOYPT
@damngood
两个jvm都用来提供http代理的,关键是要让这两个jvm发出去的请求从外部来看是来自不同公网ip的,所以光配下nginx/tomcat的虚拟主机应该没有用,不过我对这两者的配置不熟。
查谷歌查半天得到的办法是:把这两个jvm放在两个linux用户下,然后用iptables的nat功能让请求出去时走不同ip,不过还没试验。
BOYPT
2013-09-06 17:58:07 +08:00
@huazhouji 嗯,刚才误解了,是要对外地址。

直接写socket的对外bindAddr地址即可:
ServerSocket(int port, int backlog, InetAddress bindAddr)
seeker
2013-09-06 18:08:23 +08:00
huazhouji
2013-09-06 18:32:01 +08:00
@BOYPT 这个bindAddr应该指bind在ip a上,那么只有这个ip a发来的包才会被接受

@seeker 嗯,不过httpclient才支持,而且是多网卡,我那个场景是vps上单网卡但是多ip,还是有区别的
BOYPT
2013-09-07 19:56:44 +08:00
paw
2015-03-04 19:38:27 +08:00
@huazhouji 请教下,你最后实验成功没,怎么做的??

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/81524

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX