openstack 환경에서 구축된keepalived 두 서버는 VIP ALLOWED-ADDRESS-PAIRS를 직접 ping할 수 없습니다

4718 단어
진짜 오래 했는데 물어보니까 진짜 뉴트론 문제인 거 알아요.
물론 전제 조건은 유니캐스트를 설정하는 것이지 기본 설정이 아니다
일단 붙이고 나중에 이미지 업데이트를 할게요.
[root@haproxy1 ~]# cat/etc/keepalived/keepalived.confvrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 200 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 10.0.0.121 unicast_peer { 10.0.0.122 }
==== haproxy2
[root@haproxy2 ~]# cat/etc/keepalived/keepalived.confvrrp_instance VI_1 { state SLAVE interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 10.0.0.122 unicast_peer { 10.0.0.121 } virtual_ipaddress { 10.0.0.200/24 brd 10.0.0.255 dev eth0 label eth0:vip }}[root@haproxy2 ~]#
테스트 arp
#tcpdump-i eth0 vrrp-n은 VIP를 표시할 수 있지만 핑통vip10.0.200은 할 수 없다
Openstack에서 나온 질문입니다.

ALLOWED-ADDRESS-PAIRS


https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/10/html/networking_guide/sec-allowed-address-pairs
Allowed-address-pairs allow you to specify mac_address/ip_address (CIDR) pairs that pass through a port regardless of subnet. This enables the use of protocols such as VRRP, which floats an IP address between two instances to enable fast data plane failover.

  
haproxy1
| 59f73969-0126-4e87-b829-9ece9d905541 | | fa:16:3e:d8:70:a2 | {"subnet_id": "36350ca0-2734-44ca-9167-7713ff9925e2", "ip_address": "10.0.0.121"}

haproxy2
| 7b49f386-e908-42ac-89ef-dc9d977b37e5 | | fa:16:3e:4e:55:8b | {"subnet_id": "36350ca0-2734-44ca-9167-7713ff9925e2", "ip_address": "10.0.0.122"}
set vip = 200

ubuntu@p01-neutron-a1-e1c7g7:~$ neutron port-update 7b49f386-e908-42ac-89ef-dc9d977b37e5 --allowed-address-pairs type=dict list=true ip_address=10.0.0.200
Updated port: 7b49f386-e908-42ac-89ef-dc9d977b37e5
ubuntu@p01-neutron-a1-e1c7g7:~$

 
그리고 됐어.어이가 없네.
 
 
=== 끊임없이 업데이트 failover 문제
[root@haproxy1 ~]# cat /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state BACKUP   # backup  priority master master  vip master 
    interface eth0
    virtual_router_id 51
    priority 50  #has issue so aleays make it secondary
    advert_int 1
    nopreempt    #  master  vip failback
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 10.0.0.121
    unicast_peer {
        10.0.0.122
   }
    virtual_ipaddress {
        10.0.0.200/24 brd 10.0.0.255  dev eth0 label eth0:vip
    }
}

  
참고
https://blog.51cto.com/13590999/2096701
nopreempt#선점하지 않음으로 설정: 이 설정은 백업 호스트에만 설정할 수 있으며, 이 호스트의 우선순위는 다른 호스트보다 높습니다.
하지만!!!master는 nopreempt를 설정할 수 없습니다.
그래서 해결 방안은 마스터를 설정하지 않고 모두 백업으로 설정하면 모두가 백업이므로 nopreempt를 추가할 수 있다. 마스터가 된 LB가 고장나서 다시 고친 후에도 마스터를 점령하지 않는다.
통상적으로 마스터 서비스가 죽은 후에 백업이 마스터가 되지만 마스터 서비스가 다시 좋아질 때 마스터가 VIP를 점유하면 업무가 바쁜 사이트를 두 번 전환하는 것은 좋지 않다.그래서 우리는 프로필에 nopreempt 비점령을 넣어야 하지만, 이 매개 변수는state를 백업으로만 사용할 수 있기 때문에 HA를 사용할 때 마스터와 백업의state를 백업으로 설정하여priority를 통해 경쟁하도록 하는 것이 가장 좋다

좋은 웹페이지 즐겨찾기