手把手教你如何在云主机控制台添加虚拟IP
你有没有遇到过这种情况:线上业务跑得好好的,突然一台云主机挂了,整个服务就跟着瘫痪?或者你正在做双机热备、负载均衡,却怎么也搞不定那个“浮动”的IP?别急,今天我就来跟你聊聊虚拟IP——准确地说是怎么在云主机控制台把它加上去,这事儿说起来不难,但第一次操作的时候很多人都会懵,因为不同云厂商的叫法不一样,界面的位置也藏得挺深,我结合自己踩过的坑,给你捋一遍清晰的流程。
虚拟IP到底是个啥?
先简单说一句,免得你后面操作时搞混,传统机房里的虚拟IP(VIP)一般是通过Keepalived或者Heartbeat这类软件,让一组服务器共享一个IP,故障时自动漂移,但在云平台上,情况稍微有点不同,云厂商通常不让你直接操作ARP(地址解析协议),所以虚拟IP的实现方式变成了“辅助私网IP”或者“弹性网卡上的额外IP”,比如阿里云叫“辅助IP”,腾讯云叫“辅助弹性网卡IP”,华为云叫“虚拟IP地址”,功能其实是一样的:给一台云主机绑定多个私网IP,然后通过配置软件(比如Keepalived)让这些IP在主备机之间漂移。
准备工作:先看一眼你的网络环境
在动手之前,我建议你先确认两件事,第一,你的云主机是不是在VPC(虚拟私有云)里?经典网络的老架构有些云厂商已经不推荐了,而且辅助IP的功能在VPC下支持最完整,第二,你计划绑定几个IP?每个云主机默认有一个主私网IP,额外可以绑定若干个辅助IP,数量上限取决于云主机规格,比如某云厂商的标准型实例最多能绑20个辅助IP,而计算型可能只有8个,这个配额可以在控制台的“实例详情”页面的“弹性网卡”那里看到。
如果你要做高可用,通常需要准备两台云主机,它们要位于同一个VPC、同一个交换机(子网)下,并且安全组要允许对应的流量,别小看这一步,很多人卡在“IP绑上去了但ping不通”,十有八九是安全组或者防火墙没放行。
第一步:登录云主机控制台,找到你的实例
这个不用多说,用你的账号登录到云厂商的Web控制台,不同的厂商首页布局略有差别,但通常都会有一个“云主机”或“云服务器”的入口,进去之后你会看到所有实例的列表,找到你要添加虚拟IP的那台机器,点击它的“实例ID”或“名称”进入详情页。
这里提醒一下:有些云厂商支持在“弹性网卡”页面直接操作,你可以先找到“网络与安全”下的“弹性网卡”菜单,但最保险的方法还是从实例详情页进去,因为云主机的网卡信息一般都在那里。
第二步:找到弹性网卡,看看当前绑定了几个IP
进入实例详情后,往下翻或者找选项卡,通常会有“弹性网卡”或者“网络信息”这一项,点击进去,你会看到这张云主机的主网卡(eth0),点一下网卡的ID或者右侧的“修改”按钮,就能看到当前已经绑定的私网IP列表,列表中第一个是你的主IP,下面如果有“辅助IP”或“额外IP”的空白行,那就是你可以添加的位置。
我自己的经验是,很多新手会在这里犹豫:“到底是点‘添加’按钮,还是直接填IP地址?”答案是:看界面,大部分云厂商会在网卡编辑界面提供一个“添加辅助IP”的按钮,点击后会自动分配一个该子网下的可用IP,你也可以手动输入一个你规划好的IP地址,但要注意,手动输入的IP必须是子网范围内且没有被占用的,否则会报错。
第三步:添加辅助私网IP(也就是虚拟IP)
现在来实际操作,以某主流云厂商为例,你点击“添加辅助IP”后,系统会弹出一个对话框,一般有两种选择:
自动分配:系统从当前子网的空闲IP池里随机选一个给你。
手动输入:你提前规划好了一个IP,比如192.168.1.100,就填进去。
如果你是第一次尝试,我建议先选自动分配,看看效果,等熟悉了流程,再手动指定,点击确定后,稍等几秒,页面刷新,你就会看到网卡IP列表里多了一行,这个IP就已经绑定到你的云主机上了,但注意,这只是“控制台层面的绑定”,你的云主机的操作系统还不知道有这个IP,就好像你给房子装了一个新门,但门锁还没配钥匙——系统里的网络配置需要你自己去敲。
第四步:登录云主机操作系统内部,配置网络
这一步千万不能忘,很多人控制台操作完后,直接在服务器上ip addr命令一看,根本没出现新IP,就很慌,其实很正常,因为云厂商的虚拟化层只是把IP的映射关系通知给了底层网络,但操作系统不会主动添加地址。
具体做法取决于你的操作系统:
Linux系统(以CentOS/Ubuntu为例):
最简单的方法是用命令临时添加,测试用:
ip addr add 192.168.1.100/24 dev eth0
注意子网掩码要根据你的VPC子网来写,一般是/24,添加后可以用ip addr show eth0确认。
但临时添加重启就丢了,所以需要写入配置文件,CentOS的话,你可以复制一份ifcfg-eth0,改成ifcfg-eth0:1,然后修改里面的IPADDR,Ubuntu则是在/etc/netplan/目录下的yaml文件里添加一个addresses数组,不同发行版写法不一样,你可以搜索一下,或者直接用NetworkManager的图形界面。
Windows系统:
打开“网络和共享中心”,进入以太网属性,双击IPv4,然后点击“高级”,在“IP地址”那里点击“添加”,填上你刚刚绑定的虚拟IP和子网掩码,注意主IP别动。
配置完后,不用重启,直接禁用再启用网卡(或者修复一下网络),然后ipconfig就能看到新IP了。
第五步:验证连通性 + 配合Keepalived(如果需要)
现在你应该能从同VPC下的另一台机器ping通这个新IP了,如果ping不通,优先检查安全组是否放行了ICMP协议,其次检查云主机内部的防火墙(iptables/firewalld)是否拦截,有些云厂商的辅助IP默认是“不参与公网转发”的,也就是说你不能用这个IP直接上网,只能做私网通讯,想做公网高可用?那就需要配合弹性公网IP绑定到辅助IP上,但那是另一个话题了。
如果你搞的是双机热备(比如用Keepalived),通常的套路是这样的:在两台云主机上都添加同一个虚拟IP(注意,IP地址一模一样),然后Keepalived通过VRRP协议让其中一台持有这个IP,另一台备着,当主挂了,备机接管,这里有一个云平台特有的坑:因为云环境不支持广播包,VRRP的组播可能被屏蔽,所以Keepalived要改成单播模式,具体做法是在配置文件的vrrp_instance里加上unicast_src_ip和unicast_peer,指定对端的IP,否则你会发现虚拟IP一直在“争抢”但永远不稳定。
常见问题与避坑指南
1、添加后控制台显示成功,但系统里没有?
忘了在操作系统里配置,按照第四步操作即可。
2、ping不通,但配置好像都对?
先确认安全组入方向有没有放行对应协议(ICMP、TCP等),然后检查云主机系统防火墙:systemctl stop firewalld(临时),如果通了,再慢慢加规则,VPC内的ACL(网络访问控制列表)也可能拦截,别忘了看一眼。
3、IP冲突怎么办?
手动输入IP时一定要确认它没有被占用,你可以用同子网下另一台机器ping一下那个IP,如果通了说明已有人占用,自动分配一般不会冲突,但也不能100%保证。
4、云厂商限制绑定数量?
前面提到过,每个实例的辅助IP配额不同,如果你绑到上限了,控制台会提示“已达上限”,这时候可以考虑更换更高规格的实例,或者删掉一些不用的。
5、重启服务器后虚拟IP丢了?
确认操作系统内的网络配置是持久化的,Linux下改配置文件,Windows下要写在注册表级别,如果配置正确但重启后丢失,可能是云厂商的guest tools(如阿里云的cloud-init、腾讯云的agent)在启动时重置了网络,这种情况下,你需要关掉guest tools的网络管理功能,或者写一个启动脚本自动添加。
写在最后
添加虚拟IP这件事,说穿了就是两步半:控制台绑定→系统配置→调试,但实际操作中因为不同云厂商的差异、操作系统版本的差异,总会有各种小问题,我的建议是先在测试环境练手,别直接在生产上搞,很多云厂商其实提供了“高可用虚拟IP”的托管服务(比如阿里云的HaVip),你只需要创建资源然后绑定到云主机,连Keepalived都不用装,如果能用托管服务,尽量用,省心省力。
好了,今天就聊到这里,希望下次你遇到双机热备或者需要给服务器多加一个IP的时候,能想起这篇文章的思路,如果还有问题,欢迎留言讨论,没准我刚好踩过你那个坑。
文章摘自:https://idc.huochengrm.cn/zj/25937.html
评论