翟志军

阿里云经典网络下如何节约公网 IP 费用

想法

历史原因,我们一直使用的是阿里云经典网络的 ECS,疲于业务的开发及人力不足,一直没有特别大的动力迁移到 VPC 下。

而经典网络下的 ECS 的公网 IP 是收费的,而且没有公网 IP 有时会不方便。

购买公网 IP 时的费用

image.png

未购买公网 IP 时的费用

image.png

如果是按月购买,每个月将节约:296 - 273 = 23 元。

而我们的大多服务是内网使用的,所以,公网 IP 的申请完全是浪费。

可是,我们有时,还是需要公网下载一些东西的。这时怎么办呢?

我的方案是:没有公网 IP 的机器,使用 HTTP 代理就可以上网了。

image.png

当然,哪些机器需要上网,基于安全上的考虑,需要读者自己决定了。

怎么做?

我的具体实现方便使用 Squid 搭建 http proxy 服务。其他机器通过配置环境变量配置,笔者是通过 Ansible 初始化机器时配置的:

    - name: use httpproxy
      lineinfile:
        path: "/etc/profile"
        line: "<<item>>"
      with_items:
        - "export http_proxy=http://<< httpproxy.host >>:<< httpproxy.port >>/"
        - "export https_proxy=http://<< httpproxy.host >>:<< httpproxy.port >>/"
      when: is_use_httpproxy is defined and is_use_httpproxy == 'True'
      tag: httpproxy

关于 Squid Http Proxy 服务,笔者同样是使用 Ansible 搭建,具体不细表,看官可以自行看代码:Squid-ansible

这样就可以节约下公网 IP 的钱了。

关于 java 应用并没有使用 http Proxy

上文中,我们的机器使用了 http proxy,但是 Java 应用中依然无法请求外网,这时需要在 java 启动时加入相应的变量,如下:

/bin/java -Dhttp.proxyHost= -Dhttp.proxyPort=

小结

为什么要节约这点钱,大公司不差你这点钱。再说了,老板也没有让你做啊。你做了老板也不知道。那你为什么还要做?

笔者认为,不做,就会给自己一次机会养成“浪费”的习惯或者思维模式。这是自己的损失。最终,对企业,对个人都是损失。

End