Keepalived load balancing traffic blocking on the OVN network

Hi Team,

I have deployed OpenStack Yoga with OVN. Its a multi node HA setup.

On OpenStack, I am testing Keepalived. Two Rocky Linux 8.7 instances were created, and Keepalived and Apache were installed for testing.

VIP: 192.168.2.53

The issue is that the node where VIP is mapped is the only one to respond. The second node did not respond to the second request. Seems some thing blocking. Check the below curl output.

First curl response:

[root@rocky-test ~]# curl -k http://192.168.2.53/
keepalived-1.novalocal

Second curl response:

[root@rocky-test ~]# curl -vv -k http://192.168.2.53/
*   Trying 192.168.2.53...
* connect to 192.168.2.53 port 80 failed: Connection timed out
* Failed to connect to 192.168.2.53 port 80: Connection timed out
* Closing connection 0
curl: (7) Failed to connect to 192.168.2.53 port 80: Connection timed out

Third curl response:

[root@rocky-test ~]# curl -k http://192.168.2.53/
keepalived-1.novalocal
[root@rocky-test ~]#

Note: Required ports opened in firewalld.

firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent

Using Neutron OVS, the same Keeplived configuration working as expected. OVN-based setup causing problems.

This problem prevents me from moving forward. I need your assistance to identify the main cause of this problem.

Neutron configuration from OpenStack deployment yaml

neutron-mysql-router:
    annotations:
      gui-x: '505'
      gui-y: '1385'
    charm: ch:mysql-router
    channel: 8.0/stable
    bindings:
      "": internal-api
  neutron-api-plugin-ovn:
    annotations:
      gui-x: '690'
      gui-y: '1385'
    charm: ch:neutron-api-plugin-ovn
    channel: yoga/stable
    bindings:
      "": internal-api
  neutron-api-hacluster:
    charm: 'ch:hacluster'
    series: focal
    annotations:
      gui-x: 689.4863891601562
      gui-y: 1237.3250732421875
    bindings:
      "": internal-api
  neutron-api:
    annotations:
      gui-x: '580'
      gui-y: '1270'
    charm: ch:neutron-api
    channel: yoga/stable
    num_units: 3
    bindings:
      "": internal-api
      public: external-network
      internal: internal-api
      shared-db: internal-api
    options:
      neutron-security-groups: true
      enable-ml2-port-security: true
      flat-network-providers: physnet1
      openstack-origin: *openstack-origin
      vip: 10.90.8.27 10.90.5.27
    to:
    - lxd:1
    - lxd:2
    - lxd:3

 ovn-central:
    annotations:
      gui-x: '70'
      gui-y: '1550'
    charm: ch:ovn-central
    channel: 22.03/stable
    num_units: 3
    bindings:
      "": internal-api
    options:
      source: *openstack-origin
    to:
    - lxd:1
    - lxd:2
    - lxd:3

ovn-chassis:
    annotations:
      gui-x: '120'
      gui-y: '1030'
    charm: ch:ovn-chassis
    channel: 22.03/stable
    bindings:
      ovsdb: internal-api
    # Please update the `bridge-interface-mappings` to values suitable for the
    # hardware used in your deployment. See the referenced documentation at the
    # top of this file.
    options:
      ovn-bridge-mappings: physnet1:br-ex
      bridge-interface-mappings: *data-port