插件窝 干货文章 openstack 虚拟机配置VIP的实现步骤

openstack 虚拟机配置VIP的实现步骤

OpenStack Keepalived loadbalancer 配置 485    来源:    2025-04-02

在OpenStack中为虚拟机配置VIP(虚拟IP)通常用于高可用性场景(如负载均衡、主备切换等)。以下是详细的实现步骤及注意事项:


一、核心实现方案

方案1:使用Neutron LBaaS(推荐)

OpenStack Neutron提供LBaaS(Load Balancer as a Service),可直接创建VIP并绑定后端实例。 1. 启用LBaaS插件 - 确保Neutron已启用octavia(现代版本默认)或旧版neutron-lbaas。 - 检查Neutron配置文件中是否有: ini service_plugins = octavia

  1. 创建负载均衡器

    openstack loadbalancer create --name my-lb --vip-subnet-id <subnet_id>
    
  2. 添加监听器和后端池

    # 创建后端池
    openstack loadbalancer pool create --name my-pool --lb-algorithm ROUND_ROBIN --protocol HTTP --loadbalancer my-lb
    
    # 添加后端成员(虚拟机)
    openstack loadbalancer member create --subnet-id <subnet_id> --address <vm1_ip> --protocol-port 80 my-pool
    openstack loadbalancer member create --subnet-id <subnet_id> --address <vm2_ip> --protocol-port 80 my-pool
    
    # 创建监听器
    openstack loadbalancer listener create --name my-listener --protocol HTTP --protocol-port 80 my-lb
    
  3. 绑定浮动IP(可选)

    openstack floating ip set --port <lb_vip_port_id> <floating_ip>
    

方案2:手动配置Keepalived

若需更灵活控制(如非HTTP协议),可在虚拟机内手动部署Keepalived。 1. 在虚拟机上安装Keepalived bash apt-get install keepalived # Debian/Ubuntu yum install keepalived # CentOS/RHEL

  1. 配置Keepalived主节点(Master)

    vrrp_instance VI_1 {
       state MASTER
       interface eth0
       virtual_router_id 51
       priority 100
       advert_int 1
       authentication {
           auth_type PASS
           auth_pass 1234
       }
       virtual_ipaddress {
           <VIP>/24 dev eth0
       }
    }
    
  2. 配置Keepalived备节点(Backup)

    vrrp_instance VI_1 {
       state BACKUP
       interface eth0
       virtual_router_id 51
       priority 50
       advert_int 1
       authentication {
           auth_type PASS
           auth_pass 1234
       }
       virtual_ipaddress {
           <VIP>/24 dev eth0
       }
    }
    
  3. 允许VRRP协议

    • 确保安全组允许VRRP协议(IP协议号112)和组播流量。

二、关键注意事项

  1. 网络配置

    • VIP需与虚拟机在同一子网。
    • 若跨租户使用VIP,需配置共享网络(--shared)或路由。
  2. 安全组规则

    • 开放VIP的监听端口(如80、443)。
    • 允许VRRP流量(若用Keepalived): bash openstack security group rule create --protocol vrrp --remote-ip 0.0.0.0/0 <sec_group>
  3. ARP问题

    • 部分环境下需启用proxy_arp(Linux虚拟机): bash echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  4. 高可用性

    • 使用健康检查(如LBaaS的--healthmonitor)自动剔除故障节点。

三、验证步骤

  1. LBaaS验证

    openstack loadbalancer show my-lb  # 检查状态是否为ACTIVE
    curl http://<VIP>                 # 测试流量分发
    
  2. Keepalived验证

    • 主节点故障时,VIP应自动迁移到备节点: bash ip addr show eth0 | grep <VIP>

四、常见问题解决

  • VIP无法访问
    检查安全组、网络ACL、虚拟机防火墙(如iptables/ufw)。
  • Keepalived脑裂
    确保virtual_router_id唯一,网络延迟低。
  • LBaaS状态错误
    查看Octavia日志:/var/log/octavia/octavia-worker.log

通过上述步骤,您可以在OpenStack中高效配置VIP,并根据需求选择LBaaS或Keepalived方案。建议生产环境优先使用LBaaS(Octavia),以获得OpenStack原生支持。