CREATE NETWORK INTERFACE vs CREATE NETWORK ADDRESS

JoshLittJoshLitt Vertica Customer

Both CREATE NETWORK INTERFACE and CREATE NETWORK ADDRESS seem to create a row in the network_addresses table. I wonder if there is really any difference between these commands.

In our product, we are trying to switch customer deployments from "Classic Load Balancing" to "Load Balanceing Policies". To configure classic load balancing, we created a NETWORK INTERFACE, and told the node to export on that network interface. For load Balancing policies, we create a NETWORK ADDRESS and add the address to a LOAD BALANCE GROUP.

In converting a Classic Load Balancing deployment to one using Load Balancing Policy, is there a need to delete the drop the NETWORK INTERFACE and create a NETWORK ADDRESS instead? They seem to be the same thing, and both look identical in the network_addresses table once created. So I can't even tell how it was created. In fact, if I create a NETWORK INTERFACE, I can drop it with DROP NETWORK ADDRESS, and vice versa.

This is in Vertica 23.4, though the original NETWORK INTERFACE may have been created in Vertica 10.1 or Vertica 11.1.

Answers

  • SruthiASruthiA Administrator

    they should create rows in network_interfaces and network_adddresses tables respectively. if there is already existing interface and network addresses you can use them to set up load balancing. please create a support case and share the reproducer.

  • JoshLittJoshLitt Vertica Customer

    I don't think so. The v_monitor.network_interfaces table appears to reflect the operating system network interfaces. Running CREATE NETWORK INTERFACE doesn't affect that table. However, it does create a row in the v_catalog.network_addresses table (as does CREATE NETWORK ADDRESS).

  • SruthiASruthiA Administrator

    @JoshLitt yes. you are right. I am able to reproduce it. I have created a JIRA for the same.

    test=> select interface from network_interfaces;

    interface

    lo
    ens192
    docker0
    br-2f776fe24f78
    lo
    ens192
    docker0
    br-2f776fe24f78
    lo
    ens192
    lo
    ens192
    lo
    ens192
    lo
    ens192
    (16 rows)

    test=> CREATE NETWORK INTERFACE mynetwork ON v_test_node0001 WITH '127.0.0.1';
    CREATE NETWORK INTERFACE
    test=> select interface from network_interfaces;

    interface

    lo
    ens192
    docker0
    br-2f776fe24f78
    lo
    ens192
    docker0
    br-2f776fe24f78
    lo
    ens192
    lo
    ens192
    lo
    ens192
    lo
    ens192
    (16 rows)

    test=> select * from network_addresses;
    name | node | address | port | address_family | is_enabled | is_auto_detected
    -----------+-----------------+-----------+------+----------------+------------+------------------
    mynetwork | v_test_node0001 | 127.0.0.1 | 5433 | ipv4 | t | f
    (1 row)

  • JoshLittJoshLitt Vertica Customer

    Thanks for confirming.

    I'd be happy if the documentation clarified this. From my perspective, CREATE NETWORK INTERFACE and CREATE NETWORK ADDRESS currently seem indistinguishable, but since the doc for CREATE NETWORK INTERFACE says the following, I'm left scratching my head about the difference, or how to tell which was used:

    Do not confuse this statement with CREATE NETWORK ADDRESS, which is used to identify network addresses for connection load balancing (see Connection load balancing policies).

  • SruthiASruthiA Administrator
    edited April 30

    true. there is definitely an issue that needs to be corrected. hence I created a JIRA with engineering

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file