虚拟ip地址怎么弄,虚拟IP地址是什么 原理

题图来自Unsplash,基于CC0协议
导读
虚拟IP地址是什么?原理
虚拟IP地址,通常简称为VIP,是一个不与特定物理机器(如服务器的网卡)绑定的IP地址。它由一组计算机(通常是一个集群)共享,但在任意时刻只由其中一台“活动”节点拥有并响应请求。其核心原理基于“地址漂移”:当集群中的主节点发生故障时,VIP会自动“漂移”或“转移”到另一台健康的备节点上,而客户端的连接(如通过此IP访问服务)几乎不受影响。这种机制依赖于底层协议(如ARP协议,即地址解析协议)的操作——通过发送免费的ARP广播,通知交换机将目标为VIP的数据帧转发到新的物理机器上。简而言之,VIP为服务提供了一个逻辑的、稳定的访问入口,隐藏了后端物理服务器的变动,是实现高可用性的基石。
虚拟IP地址配置方法:Linux
在Linux系统上,配置虚拟IP地址的典型方法是使用ip命令,其核心是给网络接口添加“别名”。假设你的物理网卡名为eth0,你想添加的VIP是192.168.1.100/24,步骤如下:
- 临时添加:执行命令
sudo ip addr add 192.168.1.100/24 dev eth0。这条命令会立即在eth0上添加一个名为eth0:0的虚拟接口(或者在内核中直接管理,视发行版而定)。重启网络服务或重启机器后,此配置会丢失。 - 永久生效:不同的发行版方法不同,最直接的方式是修改网卡配置文件。对于CentOS/Red Hat,可以在
/etc/sysconfig/network-scripts/目录下创建一个名为ifcfg-eth0:0的文件,内容类似:DEVICE=eth0:0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0对于Ubuntu/Debian,则通常在
/etc/network/interfaces文件中追加如下段落:auto eth0:0 iface eth0:0 inet static address 192.168.1.100 netmask 255.255.255.0保存后,运行
sudo ifup eth0:0或重启网络服务即可生效。
需要注意的是,手动配置的VIP不具备故障转移能力,它只是静态绑定到网卡上。要实现高可用,必须配合像Keepalived或Heartbeat这样的集群软件。
虚拟IP地址与高可用性实现
虚拟IP是实现服务器高可用性(High Availability, HA)的核心组件。典型的实现方案是使用Keepalived软件,它结合了VRRP(虚拟路由冗余协议)协议。
基本原理是:在多台服务器(通常是2台,一主一备)上运行Keepalived守护进程。它们通过发送组播心跳报文互相监控健康状态。主节点拥有VIP并正常提供服务。配置文件中会定义“虚拟路由器”实例,指定VIP和优先级(比如主节点优先级设为100,备节点设为50)。
当主节点故障(如宕机、服务进程崩溃或网络中断)时,备节点在连续几个心跳周期内收不到主节点的报文,会认为主节点失效。此时,备节点会立即接管VIP——它会在自己的网卡上配置该IP,并发送带有VIP的免费ARP包,通知局域网内的交换机更新ARP表。此后发往VIP的数据包就会被导向新的主节点。整个过程通常在几秒内完成,对客户端而言,只是连接短暂中断(需要重连)甚至完全无感知。
虚拟IP地址在Kubernetes中的应用
在Kubernetes(K8s)集群中,虚拟IP扮演着至关重要的角色,主要体现在两个层面:
-
高可用集群的访问入口:为了确保Kubernetes的API Server(控制平面的入口)高可用,通常会为多台Master节点配置一个VIP(例如使用Keepalived)。客户端(如kubectl)和各个Worker节点都通过这个稳定的VIP来访问API Server。当一台Master宕机,VIP漂移到另一台Master,保证了集群管理的连续性。
-
Service资源的实现:Kubernetes的Service(服务)概念本身就实现了虚拟IP。当用户创建一个ClusterIP类型的Service时,Kubernetes会为其分配一个虚拟IP地址(Cluster IP)。这个IP并不是绑定在任何Pod或节点的网卡上,而是通过节点上的
kube-proxy组件实现。kube-proxy会监听Service和Endpoint(端点)的变化,并在每个节点上通过iptables或IPVS规则将发往这个虚拟IP的流量,转发到后端的一组Pod实例上。这实现了负载均衡和故障修复——一旦某个Pod不可用,kube-proxy会自动更新转发规则,将流量导向其他健康的Pod。从这个角度看,Kubernetes内置的Cluster IP是一种更加动态、分布式的虚拟IP实现。
如何设置虚拟IP地址:Windows
在Windows操作系统上设置虚拟IP地址(通常称为添加附加IP地址)相对直观,主要通过图形界面或PowerShell完成。
方法一:图形界面
- 打开“控制面板” -> “网络和 Internet” -> “网络和共享中心”。
- 点击当前的网络连接(例如“以太网”或“本地连接”)。
- 在状态窗口中,点击“属性”,然后双击“Internet 协议版本 4 (TCP/IPv4)”。
- 在常规选项卡中,确保已选择“使用下面的 IP 地址”。点击下方的“高级”按钮。
- 在“高级 TCP/IP 设置”窗口的“IP 地址”区域,点击“添加”。
- 输入你想要添加的虚拟IP地址及其子网掩码(例如IP:
192.168.1.101,子网掩码:255.255.255.0)。 - 依次点击“添加”、“确定”保存所有窗口。新IP会立即生效,并且会在命令提示符下执行
ipconfig时显示。
方法二:PowerShell
- 以管理员身份打开PowerShell。
- 使用
Get-NetAdapter命令查看你的网络适配器名称(例如“以太网”)。 - 执行以下命令添加IP地址:
New-NetIPAddress -InterfaceAlias "以太网" -IPAddress 192.168.1.101 -PrefixLength 24(
PrefixLength对应子网掩码,24对应255.255.255.0) - 该IP会立即添加,并自动保留。如果要永久保留,确保网络配置为静态IP。
如同Linux系统,Windows上的这种静态配置的虚拟IP同样不具备高可用故障转移功能。在Windows Server环境中,要实现VIP的自动漂移,通常需要配置网络负载平衡(NLB,Network Load Balancing)集群或利用Failover Clustering(故障转移集群)功能。
© 版权声明
本文由盾科技原创,版权归 盾科技所有,未经允许禁止任何形式的转载。转载请联系candieraddenipc92@gmail.com