Quagga配置指南:基于OSPF等值路由的服务器负载均衡实现

299 阅读3分钟

一、实验目标

通过开源路由软件 Quagga 实现 OSPF 动态路由协议,并在多台服务器上配置共享虚拟 IP(VIP),使网络设备上存在多条等值路由,从而实现多个服务器使用单个 VIP 同时为客户端提供服务。


二、实验环境准备

✅ 创建三台虚拟机:

虚拟机名称角色说明
Server1模拟路由器
Server2真实业务服务器
Server3真实业务服务器

所有服务器均使用 CentOS 7.9 操作系统,并且网络管理工具为 network

三、IP地址规划

设备/接口IP地址子网掩码说明
Server1 ens33192.168.1.10255.255.255.0-
Server2 ens33192.168.1.20255.255.255.0-
Server3 ens33192.168.1.30255.255.255.0-
Server2 lo192.168.20.20/32255.255.255.255Loopback 接口,作为 VIP
Server3 lo192.168.20.20/32255.255.255.255Loopback 接口,作为 VIP

四、ens33接口配置(Server1 / Server2 / Server3)

1. Server1上IP配置示例:

对于每台服务器,编辑网络接口配置文件以设置静态IP。假设默认的网络接口名称为ens33

对于 Server2Server3,只需分别将 IPADDR 修改为 192.168.1.20192.168.1.30,其余配置保持一致。

vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes 
IPADDR=192.168.1.10            # `更改为对应的IP地址`
NETMASK=255.255.255.0
GATEWAY=192.168.1.2             # `更改为对应的网关`
DNS1=114.114.114.114
DNS2=223.5.5.5

保存并退出编辑器 (按 Esc 键, 输入 :wq)

# 重启网络服务
systemctl restart network

五、修改主机名(Server1 / Server2 / Server3)

请根据当前服务器角色设置对应的主机名。以下命令需在三台服务器上分别执行:

  • Server1 执行:

    sudo hostnamectl set-hostname server1
    
  • Server2 执行:

     sudo hostnamectl set-hostname server2
    
  • Server3 执行:

     sudo hostnamectl set-hostname server3
    

提示:更改主机名后,建议同时更新 /etc/hosts 文件以包含本机的主机名解析,例如:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.10   server1
192.168.1.20   server2     
192.168.1.30   server3      

六、安装 Quagga 和 Telnet 工具 (Server1 / Server2 / Server3)

  • 在所有三台服务器上执行以下命令:

# 安装 Quagga 路由软件
yum install -y quagga.x86_64

# 安装 Telnet 工具(用于管理 Quagga)
yum install -y telnet.x86_64

七、初始化 Quagga 配置 (server1 / server2 / server3配置相同)

1. server1上的示例:

vim /etc/quagga/zebra.conf
  • 根据实际主机名(如server1server2server3)添加如下内容:

    #替换为对应的主机名
    hostname server1        
    password zebra123
    enable password zebra123
    
  • 保存 (按 Esc 键, 输入 :wq)退出后,修改权限:

    chown quagga:quagga /etc/quagga/zebra.conf
    
  • 初始化 OSPF 配置文件

    cd /etc/quagga
    touch ospfd.conf
    chown quagga:quagga ospfd.conf
    
  • 启动并启用服务:

    systemctl start zebra.service
    systemctl enable zebra.service
    systemctl status zebra.service
    
    systemctl start ospfd.service
    systemctl enable ospfd.service
    systemctl status ospfd.service
    

八、配置动态路由(OSPF)

🔹 仅在Server1上执行以下命令:

# 登录到 Server1,执行:
vtysh

输入以下命令,下图仅为参考:

configure terminal
router ospf
network 192.168.1.0/24 area 0
end
write memory
exit

图片.png

🔹 仅在Server2上执行以下命令:

# 登录到 Server2,执行:
vtysh

输入以下命令,下图仅为参考:

configure terminal
interface lo
ip address 192.168.20.20/32
exit
router ospf
network 192.168.1.0/24 area 0
network 192.168.20.20/32 area 0
end
write memory
exit

图片.png

🔹 仅在Server3上执行以下命令:

# 登录到 Server3,执行:
vtysh

输入以下命令:

configure terminal
interface lo
ip address 192.168.20.20/32
exit
router ospf
network 192.168.1.0/24 area 0
network 192.168.20.20/32 area 0
end
write memory
exit

图片.png


九、运行状态检查

登录到任意一台服务器(如 Server1),执行:

vtysh

输入以下命令进行验证:

show ip route
show ip ospf neighbor
show ip ospf database
show ip ospf database router 192.168.20.20
exit

图片.png