Overview

Simnet has two separate load balancers, and choosing between them is the first decision:
Load balancing is off unless your deployment enables it. It is gated by a single build-time flag, and it fails closed — only an explicit opt-in turns it on.While it is off: every entry point is hidden, VPC networks are created with an offering that cannot carry a load balancer rule at all, and Static NAT is the only way to publish an instance. Existing rules stay readable internally so they can keep blocking conflicting services on an address, but you cannot see or manage them.If the Load Balancing tab is missing from a public address, this is why. Ask whoever operates your deployment before assuming something is broken.

The rule that catches everyone: one purpose per address

A public address does one job. It can be the VPC’s Source NAT address, or a Static NAT mapping, or carry port forwarding rules, or carry load balancer rules — never a mix. The console enforces this by checking an address before it offers you anything:
When the check fails you’ll see: “Some existing rules could not be verified. Available management tabs remain accessible; unrelated setup stays locked until verification succeeds.”That is deliberate. Rather than guess an address is free and let the platform reject the rule later, the console refuses to start. Retry — it’s usually transient.
Need inbound access on an address that is already committed? Acquire another address. Addresses are cheap relative to the time lost debugging a rejected rule.

Public load balancer rules

Navigation: Networking → Public IPs → click an address → Load Balancing.

Creating a rule

The form opens inline rather than as a modal. Validation is minimal: you get Name and ports are required if any of the three is blank, and nothing else is checked in the browser. Port conflicts and purpose conflicts are caught by the platform, so a rule that looks fine can still be refused — see Errors.

Choosing an algorithm

Source IP is a blunt form of stickiness. It breaks when many clients share an address behind NAT — they all land on one instance. Prefer a stickiness policy if you can.

Assigning instances

The console cannot assign instances to a public rule. The rule card lists whatever is attached and shows No VMs assigned otherwise, but there is no control to add one — even though the create dialog says “VMs are assigned to this rule after creation from the Load Balancing tab.”Until that gap closes, assignment is API-only:
virtualmachineids is comma-separated. Removing uses the same path with DELETE. A rule with no instances accepts connections and has nowhere to send them.

Health checks

Under an expanded rule, in the Health Checks panel. The console exposes two fields: Four more exist on the API only:
Simnet sets no defaults for these four and passes them straight through, so omitting them means the underlying platform’s defaults apply — and those are not documented here because Simnet does not define them. If the thresholds matter to you, set them explicitly through the API rather than assuming.Also note failures to load the health check list are silent by design. An empty Health Checks panel can mean “none configured” or “we could not read them”.
A health check is what makes a load balancer worth having. Without one, an instance that has crashed keeps receiving its share of traffic. Add one to every rule.

Stickiness

Sends a given client back to the same instance across requests.
Stickiness is API-only and method-only. There is no stickiness control on the public address tab, and although the API accepts a param field for per-method options — cookie name, hold time, table size — nothing in the product ever sends it. So you can pick a method and not configure it.

TLS certificates

Certificates can be uploaded and attached to a rule through the API — POST /api/v1/loadbalancer/ssl-certs then POST /api/v1/loadbalancer/rules/{ruleId}/ssl-cert.
There is no certificate UI at all, and the rule form offers only TCP and UDP — there is no TLS-terminating protocol option. So a certificate can be attached to a rule the console never created as a TLS listener.Treat TLS termination on the load balancer as not ready. Terminate TLS on your instances instead.

Internal load balancers

Navigation: Networking → Networks → open a network → Load Balancing.
For traffic between tiers rather than from the internet — “Distribute internal traffic across VMs in this network”. You get Name, source port, and instance port are required if any required field is blank.
Instances do not need a separate assign step here — the load balancer’s own record carries its instances and rules, and the card lists both. This is the one place internal load balancing is simpler than public.
Two gaps worth knowing:No editing. Renaming an internal load balancer or changing its algorithm is possible on the API (PUT /api/v1/loadbalancer/internal/{id}) but has no control in the console. Create and delete only.The list does not refresh by itself. It subscribes to change events the platform does not currently emit, so a load balancer created or deleted elsewhere won’t appear until you press Refresh or leave and return.

A worked example: two web servers behind one address

1

Confirm the address is unused

Open the address in Networking → Public IPs. Seeing both Port Forwarding and Load Balancing tabs means it is still free. Only one tab, or neither, means it is already committed — acquire a different address.
2

Create the rule

Load BalancingAdd Rule. Name it after the service, not the port: web-lb, not lb-80. Public port 80, private port 8080, Round Robin, TCP.The response is a job, so the rule exists a moment before it is listed — see Asynchronous work.
3

Attach the instances

API only, for now:
Expand the rule afterwards to confirm both appear under Assigned VMs.
4

Add a health check

Expand the rule → Health Checks+ Add. Point it at a path that actually checks your application — /health that touches the database beats / that returns a static page, because the latter stays up while your app is broken.
5

Open the port on the firewall

A load balancer rule makes the address listen; it does not permit traffic. The tier’s firewall policy still decides what arrives. This is the most common “the load balancer isn’t working”.
6

Test, then break something on purpose

Confirm requests reach both instances. Then stop one and confirm traffic keeps flowing — that is the only real proof the health check works.

Public IPs

Acquiring addresses, Static NAT and port forwarding.

Firewall Policies

What actually permits the traffic.

Networks

The tiers an internal load balancer sits in.

Asynchronous work

Following a rule creation to completion.