Prerequisites

  • The Load Balancer IP sharing feature applies to NextGen Gateway versions 19.1.0 and later when installed using the Gateway ISO.
  • Other installation types may not support the single IP sharing functionality with Load Balancer.

Service Disruption and Expected Downtime

Changing the Load Balancer configuration will restart multiple services and their associated ports, causing temporary downtime for various components.

Expected Downtime for Key Components

VersionMode of OperationDetails
nextgen-gw-0Main Gateway StatefulSet pod3-5 minutes
nextgen-gw-tcp serviceTCP services (SNMP traps, Syslog)2-3 minutes
nextgen-gw-udp serviceUDP services (SNMP traps, Syslog)2-3 minutes
npm-collector-[hash]NPM Collector pods2-4 minutes
npm-collector serviceNPM Collector service (replaced)2-3 minutes
npm-collector-externalNew external-facing NPM Collector1-3 minutes
npm-collector-internalNew internal ports NPM Collector1-3 minutes
squidproxy-[hash]Squid proxy deployment pods2-4 minutes
squidproxy serviceOriginal Squid proxy service1-2 minutes
squidproxy-ext serviceExtension Squid proxy service1-2 minutes
nextgen-gw-lb-controller-[hash]Load Balancer controller pod1-2 minutes
nextgen-updater-[hash]Updater cronjob pod (if running)No impact if not running
MetalLB componentsLoad balancer IP allocation2-3 minutes

Pods and Services: Before and After Load Balancer

  • Before LB Enabled: Services such as Gateway, Squid Proxy, and Redis run with separate IPs and independent pods.
  • After LB Enabled:
    • Introduction of nextgen-gw-lb-controller pod.
    • Squid Proxy runs in two modes initially:
      • squid-proxy: Original service with a separate IP.
      • squid-proxy-ext: New service sharing Gateway IP.
    • Over time, only squid-proxy-ext will remain active.

Example: Pod Status Before Load Balancer Enabled

root@gateway-admin:/home/gateway-admin# kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
nextgen-gw-0                   3/3     Running   0          40m
nextgen-gw-redis-master-0      1/1     Running   0          40m
opsramp-agent-4jm9c            1/1     Running   0          40m
squid-proxy-7549c5477f-gzqs5  1/1     Running   0          40m
stan-0                         2/2     Running   0          40m

Example: Service Status Before Load Balancer Enabled

root@gateway-admin:/home/gateway-admin# kubectl get svc
NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
kubernetes                  ClusterIP      10.43.0.1       <none>          443/TCP                      50m
nextgen-gw                  ClusterIP      10.43.217.215   <none>          25000/TCP                    39m
nextgen-gw-redis-headless   ClusterIP      None            <none>          6379/TCP                     39m
nextgen-gw-redis-master     ClusterIP      10.43.31.37     <none>          6379/TCP                     39m
nextgen-gw-tcp              LoadBalancer   10.43.133.248   172.25.250.63   514/TCP                      39m
nextgen-gw-udp              LoadBalancer   10.43.42.125    172.25.250.63   162/UDP,514/UDP              39m
squid-proxy                 LoadBalancer   10.43.212.152   172.25.250.63   3128/TCP                     39m
stan                        ClusterIP      None            <none>          7777/TCP,8222/TCP,4222/TCP  39m

Example: Pod Status After Load Balancer Enabled

NAME                                          READY   STATUS    RESTARTS   AGE
conntrack-handler-job-nextgen-gw-tcp-6ssq5    1/1     Running   0          4s
conntrack-handler-job-nextgen-gw-udp-svbm6    1/1     Running   0          4s
conntrack-handler-job-squid-proxy-ext-r777g   1/1     Running   0          3s
nextgen-gw-0                                  1/4     Running   0          23s
nextgen-gw-lb-controller-5475cb8f86-jp6pm     1/1     Running   0          23s
nextgen-gw-redis-master-0                     1/1     Running   0          43m
opsramp-agent-4jm9c                           1/1     Running   0          43m
squid-proxy-6b8f646d89-9skg2                  2/2     Running   0          23s
stan-0                                        2/2     Running   0          43m

Example: Service Status After Load Balancer Enabled

root@gateway-admin:/home/gateway-admin# kubectl get svc
NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
kubernetes                  ClusterIP      10.43.0.1       <none>          443/TCP                      54m
nextgen-gw                  ClusterIP      10.43.217.215   <none>          25000/TCP                    44m
nextgen-gw-lb-controller    ClusterIP      10.43.237.12    <none>          8080/TCP                     62s
nextgen-gw-redis-headless   ClusterIP      None            <none>          6379/TCP                     44m
nextgen-gw-redis-master     ClusterIP      10.43.31.37     <none>          6379/TCP                     44m
nextgen-gw-tcp              LoadBalancer   10.43.133.248   172.25.250.63   514/TCP                      44m
nextgen-gw-udp              LoadBalancer   10.43.42.125    172.25.250.63   162/UDP,514/UDP              44m
squid-proxy-ext             LoadBalancer   10.43.74.107    172.25.250.63   3128/TCP                     62s
stan                        ClusterIP      None            <none>          7777/TCP,8222/TCP,4222/TCP  44m

Point to be Noted

  1. Squid Proxy will continue to run in a Load Balancer (LB) configuration but will now share its IP address with the Gateway service.
  2. If you already have Squid Proxy running, it uses a separate IP address from the Gateway service. To allow customers enough time to update their agents on their own schedule, the existing Squid Proxy service will remain active with its current IP. Alongside the existing service, a new service called squid-proxy-ext will be introduced, which shares the IP address with the Gateway service.
  3. If you will have two Squid Proxy services running in the Load Balancer setup:
    • squid-proxy: Uses the original, separate IP address.
    • squid-proxy-ext: Shares the Gateway’s IP address.
  4. Only the new squid-proxy-ext service will be deployed once the Load Balancer mode is enabled.