服务器双机 IP 切换免费方案
一、
在服务器运维场景中,双机部署常用于保障业务高可用性,当其中一台服务器出现故障或需进行维护时,将业务流量快速切换至另一台服务器至关重要,而 IP 切换是关键环节之一,以下介绍几种免费的服务器双机 IP 切换方法。
二、基于 Linux 系统自带工具实现 IP 切换
(一)使用 ifdown 和 ifup 命令
1、原理:ifdown 命令用于关闭网络接口,ifup 命令用于启动网络接口,通过这两个命令结合配置网络脚本来实现 IP 切换。
2、操作步骤:
假设有两台服务器 ServerA 和 ServerB,ServerA 的网卡接口为 eth0,原 IP 地址为 192.168.1.100/24,要切换到 ServerB 的 IP 地址 192.168.1.101/24。
首先在 ServerA 上执行ifdown eth0
,此命令会关闭 eth0 网卡,使其失去当前网络连接。
然后编辑网络配置文件(如 /etc/sysconfig/network-scripts/ifcfg-eth0),将 IPADDR 修改为 192.168.1.101,保存并退出。
接着执行ifup eth0
,重新启用 eth0 网卡,ServerA 的 eth0 网卡 IP 地址变为 192.168.1.101。
3、注意事项:
执行 ifdown 命令后,服务器会立即中断网络连接,可能会导致正在进行的网络服务中断,需提前做好业务暂停准备。
修改网络配置文件时,要确保新的 IP 地址与所在网络环境兼容,避免 IP 冲突等问题。
(二)利用 ip 命令
1、原理:ip 命令是 Linux 下强大的网络配置工具,可直接对网络接口的 IP 地址等参数进行设置,无需重启网络服务即可实现 IP 切换。
2、操作步骤:
例如要将 ServerA 的 eth0 网卡 IP 地址从 192.168.1.100 切换为 192.168.1.102。
先查看当前 eth0 网卡的 IP 地址等信息,执行ip addr show eth0
,记录下当前配置信息。
然后执行sudo ip addr del 192.168.1.100/24 dev eth0
,删除原来的 IP 地址。
再执行sudo ip addr add 192.168.1.102/24 dev eth0
,添加新的 IP 地址。
3、注意事项:
使用 ip 命令修改 IP 地址后,相关的网络服务可能需要手动重启或刷新配置才能正常识别新的 IP,如 Web 服务器、数据库服务等。
此方法虽然便捷,但在一些复杂的网络环境中,可能需要结合其他网络配置参数(如网关、DNS 等)一起调整,以确保网络通信正常。
三、基于 Keepalived 软件实现双机 IP 切换
(一)Keepalived 简介
Keepalived 是一款基于 VRRP(虚拟路由冗余协议)的高可用解决方案软件,常用于服务器双机或多机环境中,实现主备服务器之间的 IP 切换和服务接管,确保对外服务的连续性。
(二)安装 Keepalived
以 CentOS 系统为例:
1、执行yum install -y keepalived
,从默认的软件源下载安装 Keepalived 软件包。
2、安装完成后,可以通过rpm -qa | grep keepalived
命令查看软件版本信息,确认安装成功。
(三)配置 Keepalived
1、主备服务器配置示例:
配置项 | 主服务器(Master) | 备服务器(Backup) |
优先级 | 100 | 90 |
虚拟 IP 地址 | 192.168.1.200 | 192.168.1.200 |
接口 | eth0 | eth0 |
认证方式及密码 | password abcdefg | password abcdefg |
脚本(可选,用于健康检查等) | /usr/local/bin/check_service.sh | /usr/local/bin/check_service.sh |
2、配置步骤:
在主服务器上编辑 Keepalived 配置文件(通常位于 /etc/keepalived/keepalived.conf):
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass abcdefg } virtual_ipaddress { 192.168.1.200 } track_script { chk_http_port } }
其中chk_http_port
是一个自定义的健康检查脚本,用于检测服务器上的 HTTP 服务是否正常。
同样在备服务器上编辑配置文件,将state
改为BACKUP
,priority
改为 90,其他配置保持一致。
3、启动 Keepalived 服务:
在主备服务器上分别执行systemctl start keepalived
启动 Keepalived 服务,然后通过systemctl status keepalived
查看服务状态,确认正常运行。
(四)测试 Keepalived 的 IP 切换功能
1、模拟主服务器故障:
可以在主服务器上执行kill -9
命令杀死 Keepalived 进程,或者关闭主服务器电源、网络连接等,触发故障转移。
此时备服务器会自动检测到主服务器故障,根据 VRRP 协议选举自己为主服务器,接管虚拟 IP 地址(192.168.1.200),并启动相应的服务(如果配置了服务接管)。
2、恢复主服务器并验证切换回主服务器:
当主服务器恢复正常后,Keepalived 会自动进行主备切换,将虚拟 IP 地址切回到主服务器,主服务器重新成为主设备提供服务。
(五)注意事项
1、脚本编写:如果使用了自定义的健康检查脚本,要确保脚本的正确性和可靠性,能够准确反映服务器服务的运行状态。
2、防火墙配置:Keepalived 在工作过程中可能会受到防火墙规则的影响,需要确保相关端口(如 VRRP 协议使用的多播端口等)在防火墙中是开放的。
3、网络环境兼容性:在一些复杂的网络环境(如跨 VLAN、多层交换网络等)中,可能需要额外的网络配置和调试,以确保 Keepalived 的正常工作和 IP 切换的及时性。
四、相关问题与解答
(一)问题一:使用 ifdown 和 ifup 命令切换 IP 后,如何通知客户端新的 IP 地址?
答:可以采用多种方式,一种常见的方法是在 DNS 系统中更新服务器的 A 记录,将域名指向新的 IP 地址,如果客户端是通过域名访问服务器的,那么在 DNS 记录更新后,客户端下次访问时就会解析到新的 IP,也可以手动通知重要的客户端新的 IP 地址,比如通过企业内部邮件、即时通讯工具等方式告知运维人员和关键业务系统的负责人,由他们协助完成客户端配置的更新。
(二)问题二:Keepalived 实现双机 IP 切换时,如何避免脑裂现象?
答:脑裂现象是指在网络分区的情况下,不同的节点对主备状态的判断不一致,导致多个节点同时认为自己是主节点,从而引发数据混乱和服务异常,为了避免这种情况,Keepalived 采用了认证机制(如上述配置中的 password 认证),只有通过认证的节点才能成为主节点,合理配置网络环境和监控网络连通性也非常重要,尽量减少网络分区的出现,可以使用一些外部监控工具来实时监测 Keepalived 的状态和节点之间的通信情况,一旦发现异常及时报警并采取相应措施,如强制进行主备切换或修复网络问题等。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1660485.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复