一条千兆宽带接十台机器,日常用着不卡,同时跑的任务一多就开始掉。多数人第一反应是带宽不够,真正的瓶颈却常常在地址这一层:十台机器共用一个对外IP,请求全挤在同一个地方发出去,对方限速或者排队,带宽再宽也没用。先分清是带宽到顶还是地址到顶,再决定往哪花钱。
分IP这件事,早做比晚做省事,机器铺开之后再改最麻烦。
先算需要几个地址
按并发算,不按机器数算。八台机器如果只有三台同时在跑任务,三个IP就够用;十台同时在线,就得准备十个。按峰值需求买,平均数在业务高峰时一定不够,临时加IP又来不及,只能干等。留两成余量,比事后补救便宜。
| 分法 | 具体怎么做 | 适合什么规模 |
|---|---|---|
| 按机器分 | 一台一个地址 | 十台以内 |
| 按任务分 | 一个任务一个地址 | 任务数固定 |
| 按时段分 | 错峰共用地址 | 夜间批量任务 |
- 先定并发峰值,再定地址数量
- 地址尽量来自不同网段,整段买容易连带
- 留两成余量应付临时加机
分完之后要有台账。哪台机器走哪个IP,写清楚,改一次记一次。没有台账,出了问题只能一台台试,十台机器试一轮半小时就过去了。台账不用多复杂,一张表三列就够:机器编号、IP、启用时间,看完就明白。
分完还要能守住
分好之后还要防止互相串。最常见的情况是某台机器的程序走了默认路由,没走指定规则,表面上分开了,实际还是共用一个IP。查的办法很简单,每台机器各开一次查询页面,同时截图比对,有重复的立刻回去看规则,别急着换资源。
规则写在客户端里,系统层一起改才守得住。程序自带代理设置、系统级路由、网卡绑定,这三处的优先级不一样,写在哪一层决定了别的程序会不会跟着走。在系统层做一遍,客户端那层的设置才有意义,否则改完看着生效,重启又回到原样。
虚拟机算一台还是多台
算多台。虚拟机的流量走宿主机的网卡出去,如果不单独配,十个虚拟机还是共用一个IP。要给虚拟机单独分,得在虚拟网卡这一层做规则,工作量比物理机大一些,思路是一样的,只是少了几张物理网卡可以绑。
地址不够时怎么过渡
先保重点。把任务按重要性排一遍,核心的几台单独给IP,其余错峰上线。错峰的关键是记录时间,别让两台在同一分钟启动,否则请求还是撞在一起,分了等于没分。错开半小时以上,效果比加一条线还明显。
换地址会不会掉线
会。换的瞬间连接会断,长连接要重连。批量换的时候挑业务低峰,一次换一台,确认恢复再换下一台。十台一起换,出问题连是哪台引起的都看不出来,排查时间够换三遍了。
分IP这件事没有一步到位的方案,规模变了就要重算一遍。先按现在的并发分,跑一段时间看实际峰值,再调。台账留着,重算的时候能省一半时间。
数量算准,规则放对,台账记全,这三步做完之后剩下的就是日常维护了。
按并发买,按机器管,按台账查。
