'AzureBasicLoadBalancerUpgrade' module fails with null error

James Head 25 Reputation points
2025-01-02T14:02:58.4466667+00:00

Hi all,

I have a very basic home-user set-up - just one VM behind a public IP (used for hosting websites, an email server, etc.).

Having received multiple emails about needing to migrate the Load Balancer (and Public IP) from Basic to Standard I am trying to use the 'AzureBasicLoadBalancerUpgrade' module, but it fails with the following error:

log : 2025-01-02T13:53:29+00 [Error]:[Test-SupportedMigrationScenario] Error comparing NIC backend pool memberships () to basicLBBackendIds (). Error: Cannot bind argument to parameter 'DifferenceObject' because it is null.

This seems like a nothing error to me - my load balancer doesn't have any rules or backend pools set-up due to how basic my set-up is - but I don't know how to proceed with the migration given it always get stuck at that point.

Any help much appreciated.

Thanks!

Azure Load Balancer
Azure Load Balancer
An Azure service that delivers high availability and network performance to applications.
470 questions
0 comments No comments
{count} votes

Accepted answer
  1. Ganesh Patapati 3,285 Reputation points Microsoft Vendor
    2025-01-02T18:05:59.3466667+00:00

    Hi James Head

    Greetings!

    Welcome to the Microsoft Q&A Platform. Thank you for reaching out & I hope you are doing well.

    Since your setup is basic and you mentioned that there are no backend pools or rules, ensure that the Load Balancer is not expecting any configurations that are not present. A Standard Load Balancer typically requires at least one backend pool.

    1. Even if you are not using backend pools, try creating a minimal backend pool with your VM's network interface (NIC) associated with it. This can help satisfy the migration requirements. You can create a backend pool using the Azure Portal or Azure CLI.

    When manually migrating from a Basic to Standard SKU Load Balancer, there are a couple key considerations to keep in mind:

    • It isn't possible to mix Basic and Standard SKU IPs or Load Balancers. All Public IPs associated with a Load Balancer and its backend pool members must match.
    • Public IP allocation method must be set to 'static' when a Public IP is disassociated from a Load Balancer or Virtual Machine, or the allocated IP will be lost.
    • Standard SKU public IP addresses are secure by default, requiring that a Network Security Group explicitly allow traffic to any public IPs
    • Standard SKU Load Balancers block outbound access by default. To enable outbound access, a public load balancer needs an outbound rule for backend members. For private load balancers, either configure a NAT Gateway on the backend pool members' subnet or add instance-level public IP addresses to each backend member.

    Refer: https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-basic-upgrade-guidance#upgrade-manually

    Suggested order of operations for manually upgrading a Basic Load Balancer in common virtual machine and virtual machine scale set configurations using the Portal:

    1. Change all Public IPs associated with the Basic Load Balancer and backend Virtual Machines to 'static' allocation
    2. For private Load Balancers, record the private IP addresses allocated to the frontend IP configurations
    3. Record the backend pool membership of the Basic Load Balancer
    4. Record the load balancing rules, NAT rules and health probe configuration of the Basic Load Balancer
    5. Create a new Standard SKU Load Balancer, matching the public or private configuration of the Basic Load Balancer. Name the frontend IP configuration something temporary. For public load balancers, use a new Public IP address for the frontend configuration. For guidance, see Create a Public Load Balancer in the Portal or Create an Internal Load Balancer in the Portal
    6. Duplicate the Basic SKU Load Balancer configuration for the following:
      1. Backend pool names
      2. Backend pool membership (virtual machines and virtual machine scale sets)
      3. Health probes
      4. Load balancing rules - use the temporary frontend configuration
      5. NAT rules - use the temporary frontend configuration
    7. For public load balancers, if you don't have one already, create a new Network Security Group with allow rules for the traffic coming through the Load Balancer rules
    8. For Virtual Machine Scale Set backends, remove the Load Balancer association in the Networking settings and update the instances
    9. Delete the Basic Load Balancer Note For Virtual Machine Scale Set backends, you will need to remove the load balancer association in the Networking settings. Once removed, you will also need to update the instances
    10. Upgrade all Public IPs previously associated with the Basic Load Balancer and backend Virtual Machines to Standard SKU. For Virtual Machine Scale Sets, remove any instance-level public IP configuration, update the instances, then add a new one with Standard SKU and update the instances again.
    11. Recreate the frontend configurations from the Basic Load Balancer on the newly created Standard Load Balancer, using the same public or private IP addresses as on the Basic Load Balancer
    12. Update the load balancing and NAT rules to use the appropriate frontend configurations
    13. For public Load Balancers, create one or more outbound rules to enable internet access for backend pools
    14. Remove the temporary frontend configuration
    15. Test that inbound and outbound traffic flow through the new Standard Load Balancer as expected

    If above is unclear and/or you are unsure about something add a comment below.

    Please don’t forget to close the thread by clicking "Accept the answer" wherever the information provided helps you, as this can be beneficial to other community members.

    Regards,

    Ganesh

    1 person found this answer helpful.

1 additional answer

Sort by: Most helpful
  1. Divyesh Govaerdhanan 720 Reputation points
    2025-01-02T16:36:42.4033333+00:00

    Hello,

    Welcome to Microsoft Q&A,

    I would suggest to manually migrate the Public IP to keep the ball rolling,

    1. Create a new Public IP with a Standard configuration
    2. Update VM's Network Interface
      1. Go to your VM's NIC
      2. Detach the Basic Public IP
      3. Attach the new Standard Public IP
    3. Test the connectivity to the website and email server with the new Public IP
    4. As you're currently not using the Load balancer, Delete the existing one and create it when needed

    Please Upvote and Accept the answer if it helps!


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.