我平时帮人弄服务器,十次里有八次被问到一个问题:为啥我明明买了一台云主机,给的却是一个10打头的内网地址,网站扔上去,外面死活访问不了?等我说完“还得再申请一个弹性公网IP”,对方更懵了——IP不是跟着机器走的吗?还要单独买?这玩意儿到底是个啥。
这篇就把移动云的弹性公网IP彻底讲清楚。它本质上是一张“公网入场券”,负责把云主机从只有内网环境的封闭空间里拉出来,让外部用户能通过互联网访问你的网站、接口或者远程桌面。不管你是准备搭个人网站、跑个API服务,还是帮团队规划云上资源,先把弹性公网IP这个概念弄明白,后面所有网络操作才玩得转。
1. 弹性公网IP到底是干什么的
1.1 你买的云主机,自带IP为什么不好使
很多人刚接触云计算时有个错觉:我买一台云服务器,它就理所当然有一个能被全世界访问的公网IP。实际上,绝大多数云平台默认分配的,是一个私有IP,也就是VPC内部地址,常见的是10.x.x.x、172.16.x.x、192.168.x.x这类网段。它的作用范围只在你的私有网络里,云主机之间互访没问题,但出了这个圈子,外部设备根本不知道这个地址在哪,自然也就访问不到。
这时候弹性公网IP(Elastic IP,简称EIP)就出来了。它是由云平台统一规划、独立存在的一种网络资源,本质上是一个真实可路由的公网IPv4地址,和你云主机网卡上的内网IP是两码事。拿到EIP之后,你需要手动把它绑定到某台云主机上,这台机器才真正获得“被公网访问”的能力。
我用一个生活里的例子你立刻就懂了:内网IP像是办公楼里每个工位的分机号,同事之间随便拨;但外面的人想找你,必须得知道公司总机,由总机转到分机。EIP就是那个总机号码,没有它,外线电话打不进来。云的逻辑也一样,你得先把EIP这个“总机”申请到,再告诉它转接到哪台云主机。
1.2 “弹性”两个字,价值全在灵活性
为什么前面要加“弹性”两个字,而不是直接叫“公网IP”?因为它在使用方式上比传统IP灵活太多。
传统的物理服务器时代,IP地址是和网卡绑定的。你要换一台机器,旧机器释放了IP,新机器重新配置IP,还要改DNS解析、等生效,业务中断时间按小时算。而弹性公网IP是把IP做成一个可以独立操控的资源对象,它今天可以绑在A机器上,明天解绑,再绑到B机器上,整个过程可能只需要几分钟,甚至几十秒。如果你做了脚本化处理,几秒钟就能完成切换。
这种“IP跟业务走,不跟机器走”的特性,在故障转移和业务迁移时尤其好用。比如A机器硬件出问题,你在另一台新机器上把环境复制好,解绑EIP再绑过去,外部用户无感知,连DNS都不用等。带宽也是一样的道理,今天业务量上来了,在控制台把带宽峰值调高,明天活动结束再调低,不用重新买机器,也不用动IP。
另外一点容易被忽略:EIP是独立计费的云资源,你不用时可以保留,也可以随时释放。这个“用完能放”的能力,才配得上“弹性”这两个字。如果IP只能买不能退、只能绑一台不能换绑,那跟传统机房里买条固定IP没什么区别,也就没有单独做成云产品的必要了。
2. 移动云弹性公网IP的真实应用场景
2.1 给网站、应用和API一个公网入口
最典型的场景就是对外提供服务。你自己写了个网站、搭了个博客、部署了一个后端API,希望用户通过域名访问;又或者你的业务需要接收第三方平台的回调消息,比如支付通知、登录回调,这些服务必须有一个公网可达的地址,EIP就是这个地址的提供者。
不绑EIP的情况下,云主机就算上面跑着Nginx、Tomcat,监听80或443端口,公网请求也进不来。绑上EIP之后,再把安全组规则放行对应端口,外部的请求才会被路由到这台机器上。我在实际部署中遇到过太多“一模一样”的案例:用户在云主机上把服务起好了,本地SSH连上去也没问题,但网页就是打不开,最后排查半天,发现就是没绑EIP或者绑了没放行安全组。
2.2 远程管理机器时,它就是你的门把手
运维层面的刚需。你要SSH登录Linux服务器,要在Windows云主机上开远程桌面,都得靠公网IP作为入口。虽然现在很多平台提供网页版的VNC登录方式,但那种方式通常在网络环境特殊或者带宽受限时用,真正高效的运维还是得走SSH和RDP,而这两个协议都需要一个能从你所在网络访问得到的地址。EIP就是那个地址。
这里要说一个我的习惯:即便有EIP,也尽量不要把它直接暴露在所有端口上。比如Linux服务器,把SSH端口从默认的22改到高位端口,或者至少设置好密钥登录、禁止root密码登录。这不是EIP的问题,而是暴露在公网上的机器,时时刻刻都会被人扫描,安全习惯跟不上,早晚会吃亏。
2.3 临时测试、联调与外发数据的快速通道
很多临时需求也离不开EIP。比如你做两个系统之间的联调,对方需要访问你这边的一个测试接口;或者你要给客户演示一个Demo,客户需要一个公开链接;再或者你本地开发环境需要接收某个外部服务的回调,不想改代码逻辑,临时申请一个EIP绑到开发机上就能解决。
这种场景下,EIP“按需申请、用完释放”的优势特别明显。你不用像传统机房那样,为了一次持续半小时的联调去拉一条永久宽带,然后一直付月租。按量计费的EIP,通常按小时收费,带宽可以设得很低,用完就释放,成本可能就几毛钱。我个人的经验是,凡是不确定要用多久的公网出口需求,一律先用按量计费EIP顶着,等确认长期稳定再改成包年包月,既省事又不心疼钱。
3. 申请并绑定一个EIP,实操流程完整走一遍
3.1 申请之前先拍板这三件事
不要一上来就点申请按钮,先把三件事想清楚。
第一是地域。EIP属于地域级别的资源,它只能绑定到同一地域下的云主机,跨地域不能绑定。比如你的云主机开在华东某节点,那就得申请同节点的EIP,跑到华北节点去申请,回来根本绑不上。这个坑我见过不少新手踩,申请的时候不留意地域,绑定的时候弹错误,白耽误时间。
第二是计费模式。现在主流两种:包年包月和按量付费。包年包月适合明确长期使用的业务,价格稳定;按量付费适合不确定用量、短期测试的场景,灵活但单价通常比包年包月折算下来贵一点。先别纠结哪种更省钱,后面单独讲,申请前至少要心里有数。
第三是带宽峰值。你要评估业务平时的流量大概是多少,设置一个合理的上限。这个值不是越小越好,也不是越大越好。设小了,业务高峰期带宽跑满,用户访问卡顿;设大了,费用明显上涨。我见过有人图省事直接拉满100Mbps,结果一个月下来账单很难看,业务也就用2Mbps。
3.2 控制台申请与绑定的七个步骤
在移动云控制台操作,整体流程不算复杂,我按正常操作顺序给你整理一下:
- 登录移动云官网控制台,在左侧菜单找到“网络”分类下的“弹性公网IP”,进入EIP列表页。
- 点击“申请弹性公网IP”按钮,进入配置页面。
- 选择与云主机相同的地域,这是绑定成功的前提。
- 选择计费方式。常用的组合是“按量付费+按流量计费”或“包年包月+按固定带宽计费”,按自己的预算来。
- 设置带宽峰值。不确定就先按5Mbps起步,后面可以随时调整。
- 确认数量。一般申请1个就够,如果有多台机器需要公网访问,可以一次申请多个,也可以后面再加。
- 提交订单支付,回到EIP列表,等状态变为“可用”。
申请成功后,下一步就是绑定云主机。在EIP列表右侧找到“绑定”操作,点击后选择目标云主机实例,确认绑定即可。绑定的本质是把EIP这个公网地址和云主机当前使用的内网网卡做一层映射关系,不需要你在操作系统里面改任何网络配置。这个设计很省心,比传统的“登录服务器改/etc/network/interfaces或者改网卡属性”要简单太多。绑定完成后,在云主机里执行ip addr或者ifconfig查看网卡,你会看到内网IP还在,而公网IP通常是以辅助方式关联的,并不直接出现在系统网络配置里。
3.3 别忘安全组放行端口
这是拦住很多人的“隐形门槛”。EIP绑定成功后,并不是所有端口就自动对外开放了。云平台默认的安全组策略往往比较严格,通常是“默认拒绝入站流量”,你需要显式放行需要的端口。
以最常见的网站服务为例,你需要在安全组入站规则里加上:来源IP填0.0.0.0/0,协议选TCP,端口填80和443;如果还要SSH登录,再放行22端口。规则配置好之后,最好去云主机上再确认一下系统自身的防火墙,CentOS的firewalld、Ubuntu的ufw都可能拦截流量,两边都要打开对应的端口,才能真正通畅。
我特意把安全组放在“绑定”之后讲,是因为很多人觉得“绑上IP就万事大吉”。实际上,EIP、安全组、系统防火墙三者缺一不可。绑了EIP等于给你家大门装上了门牌号,安全组走漏了等于门卫不放人进来,系统防火墙再拦一道等于你自己家里还反锁了。这三层但凡有一层没通,服务就是不可访问的。所以在测试的时候,建议从外网机器上做个连通性测试,比如ping公网IP或telnet IP 80,一步步定位问题在哪一层。
4. 计费方式怎么选,才能少花冤枉钱
4.1 固定带宽和按流量到底怎么算账
这是EIP计费里最让人纠结的问题。简单说,固定带宽模式是你预先买一个带宽上限,比如2Mbps、5Mbps、10Mbps,无论你用不用,都要按这个保底费用付钱;按流量模式则不设带宽保证,用多少流量付多少钱,带宽峰值通常也可以设置一个上限用来防止失控。
怎么选,核心看你的业务流量曲线。一个个人博客或者企业官网,一天到晚其实没多少访问量,峰值也就几Mbps,这种就用固定带宽,比如5Mbps,一个月费用是确定且可控的。反过来,如果你的业务流量波动很大,平时没动静、一活动就爆量,按流量模式可能更划算。因为固定带宽买高了,平时闲置浪费;买低了,活动来了又不够用,升级还要操作。按流量则不存在这个矛盾,用多少算多少。
我举个例子算笔账。某小型网站月流量约200GB,假设按流量单价折合下来每GB约0.8元(具体以移动云官网价格为准),那月流量费大概160元。如果改成固定带宽10Mbps,按常见价格可能在百元左右,但前提是你们那边卖EIP带带宽套餐且不限流量,这里只是抛个思路。真正的结论是:长期稳定低流量业务选固定带宽,短期高波动业务选按流量,别只看单价。我自己的项目通常用固定带宽5Mbps,开发测试才用按流量,一个月下来费用差好几倍。
4.2 实际省钱经验与欠费回收风险
几条实打实的省钱建议。第一,申请EIP时地域一定别选错,选错了不能绑定,要么退了重买,要么就只能闲置,等于白花钱。第二,暂时用不上的EIP一定要释放。很多人申请了忘了退,一个月多出几十上百块,累计起来不是小数。第三,带宽峰值不是越高越好,如果你不确定,先设个保守值,比如3Mbps或5Mbps,实际不够再调大。大部分云平台的EIP都支持带宽峰值实时调整,你完全不需要一开始就“拉满”。
再提醒一个容易被忽视的规则:按量付费的EIP如果绑定的云主机被释放了,或者你长期欠费,平台有一定的时间窗口后IP会被系统回收。回收之后,你再想要同一个IP,基本不可能了。这个IP涉及的一切解析、白名单、回源地址都得重新配置。我见过有人因为忘记续费,一个EIP被回收,结果合作方把旧IP写死在系统白名单里,重新换IP还得走流程申请,相当折腾。所以,如果你对某个IP有感情,或者业务强依赖它,最好绑定一台常驻实例,别让资源空转。
5. 日常使用中的高频故障与排查技巧
5.1 绑了EIP却Ping不通,八成是这四层问题
“我明明绑了EIP,为什么从外面Ping不通?”这个问题我问过很多人,最终原因基本逃不出下面四个层级。
第一层,安全组没放行ICMP协议。很多平台默认安全组只放行了自己指定的端口,ICMP(也就是Ping用的协议)并没有放行。你去安全组入站规则里加一条“ICMP,来源0.0.0.0/0”,放行后再试,多半就行了。
第二层,云主机系统防火墙拦截。Linux的iptables、firewalld,Windows的防火墙,都有可能屏蔽外部ping包。测试时可以临时把这台机器的防火墙关掉一次,如果通了,就说明系统层面挡了。注意别一直关着,定位到问题后,按需放行精准端口就好。
第三层,EIP确实没绑定成功。这个不要臆断,去控制台看EIP状态和绑定的实例ID。很多时候,用户买了很多云主机,结果在列表里绑错了机器。看似绑了,实际绑的并不是你正在测的那台。
第四层,云主机本身网络异常。比如系统网卡down了、路由表被改坏了、网络服务异常。这种属于实例层面的问题,可以尝试重启网络服务进一步定位。多数情况下前两层原因占80%,先从这两处查起,别一上来就怀疑平台。
5.2 带宽跑满或费用异常,先别急着加钱
业务访问变卡,很多人第一反应是“带宽不够,升级带宽”。但带宽跑满只是现象,原因未必是需求增长。我遇到过几次典型情况:一次是服务器日志没开轮转,日志文件越滚越大,监控程序不断传输日志,把带宽吃满了;另一次是云主机被入侵,成了别人对外扫描或发包的“肉鸡”,短时间内流量飙升;还有一次是备份任务、代码拉取、镜像推送全部挤在同一时段执行,瞬时带宽直接打满。
碰到这种情况,正确做法是先看监控面板,查一下是哪个时间段的流量飙升、入口流量和出口流量哪个大。入口大可能是被扫描或攻击,出口大可能是内部服务在往外吐数据。再登录系统,通过ss -ant看连接数,通过iftop看实时流量,通过这些手段找到具体的流量来源。如果确认是正常业务增长,再加带宽不迟;如果是异常流量,加带宽等于给别人攻击你的资源买单。
费用异常同理。按流量计费的EIP如果突然产生天价账单,先别慌,也别急着把EIP删掉。去查流量账单、看流量使用曲线的峰值时间段,很多时候是某台机器的Agent上报数据开了大流量,或者备份策略出了问题。解决根源之后,再考虑把这个EIP的带宽峰值调低,防止再次失控。
5.3 解绑、释放、IP换绑时的注意事项
解绑EIP本身不影响云主机运行,但有几个细节要留意。首先,解绑之后,云主机就失去了公网访问能力,如果你正在通过这个IP远程登录,解绑的瞬间连接会断开,这是正常的。其次,解绑后EIP仍然保留在你的账号下,但多数平台会开始收取“闲置费”或者“保有费”,虽然通常不高,但长期闲置一样是成本。再一个,如果EIP的带宽是按固定带宽购买的,解绑后带宽资源还在,你随时可以绑到另一台机器上。
释放EIP则是彻底退掉这个资源,释放后IP会被平台回收,无法找回。所以释放之前,务必检查三个方面:一是域名解析记录,有没有A记录指到这个IP;二是其他系统里有没有写死这个IP的白名单、回源配置、数据库连接地址;三是第三方服务如果有回调地址配置,也需要同步更新。我强烈建议在释放一个生产环境EIP之前,先拿一张纸列出它涉及的所有关联项,勾完再动。
换绑IP这个操作在高可用里很常见。比如A机器要停机维护,你先把EIP解绑,绑定到B机器上。这里有个诀窍:尽量在业务低峰期操作,并且提前把B机器上的环境、服务、安全组都准备好。绑定操作本身很快,但业务恢复可快可慢,取决于你B机器的环境是否完备,别到时候IP切过去了,服务却起不来。
6. 几条老鸟才知道的EIP使用心得
6.1 一个EIP不要什么都往上挂
很多小团队图省事,一台云主机上既跑网站又跑数据库,还挂着一个API服务,然后用一个EIP对外提供所有服务。短期看是省钱,长期看是安全隐患和运维负担。一旦某一个服务被攻击或者出现异常流量,整个IP的带宽都被拖垮,其他服务全部受到影响。如果你业务确实比较重要,建议按服务类型拆分网络出口,比如Web和API用一组EIP,运维管理入口用另一组EIP加独立安全组规则。弹性公网IP的成本并不高,多一两个带来的安全性提升,完全值回票价。
另外一个点是,EIP只解决“公网可达”的问题,不解决“高可用”的问题。如果业务要求更高的可用性,那要上负载均衡或者高可用组,让多个后端实例分担流量,EIP绑定到负载均衡上,而不是单台云主机。别把EIP当作高可用的全部,它只是入口,后端有多扛打才决定可用性。
6.2 域名和证书的坑,提前安排
有了EIP之后,大多数人会继续做两件事:绑定域名、部署HTTPS证书。这里面有个顺序问题容易出错。域名解析建议用CNAME或A记录指向EIP,如果以后EIP换了,A记录要改;如果用CNAME指到平台给的一个域名,换IP时你就不用动自己的解析配置。我个人倾向于能用CNAME就用CNAME,省心。
HTTPS证书方面,如果你申请的是免费证书或者云平台提供的托管证书,证书绑定的通常是域名,而不是IP。只要域名不变,换IP不影响证书生效。但有一种情况要注意:如果你在证书里填了IP地址作为“IP证书”,那EIP一换,证书就废了,得重新申请。国内很多合规场景更认域名,所以能用域名就用域名,别为了偷懒直接拿IP做证书。
6.3 用EIP做简单的故障转移
老手还会把EIP当作一个轻量的故障转移工具。比如你有两台云主机,一台主用一台备用,正常情况下EIP绑在主用机上。你可以写一个简单的健康检查脚本,定期去探测主用机的服务端口,如果连续探测失败,就通过云平台API把EIP解绑并绑定到备用机上。整个过程可以完全自动化,实现秒级切换。
这种方案比直接买负载均衡要轻量得多,适合那些不想引入额外组件的场景。当然它也有短板:没有健康检查的精细调度、没有会话保持、没有多后端流量分发。所以我的定位是“轻量故障转移”,不是“正经负载均衡”。真要上生产级的架构,还是把负载均衡和EIP搭配起来用。但如果你只有两台测试机、一个小型内部系统,这套脚本方案完全够用,而且能让你对EIP的理解深一个层次。
最后再分享一点我个人在长期使用中的体会:弹性公网IP看似只是一个“IP地址”,但它是整个云上业务对外通信的起点。你后面要做的域名解析、HTTPS、安全组、负载均衡、故障切换,全部绕不开它。把它的绑定逻辑、计费逻辑、排查方法都搞明白,云上网络这一块基本就通了。以后遇到任何“公网访问不通”的问题,你都能按“EIP有没有绑→安全组有没有放行→系统防火墙有没有拦→服务有没有监听”的顺序快速定位,不慌也不瞎猜。