You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 22, 2025. It is now read-only.
Copy file name to clipboardExpand all lines: docs/http/http-installation-guide.md
+34-19Lines changed: 34 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -80,7 +80,7 @@ A standard K8s cluster is all that is required, two or more Clusters if you want
80
80
81
81
The NGINX Ingress Controller in this Solution is the destination target for traffic (north-south) that is being sent to the cluster(s). The installation of the actual Ingress Controller is outside the scope of this guide, but the links to the docs are included for your reference. `The NIC installation using Manifests must follow the documents exactly as written,` as this Solution depends on the `nginx-ingress` namespace and service objects. **Only the very last step is changed.**
82
82
83
-
**NOTE:** This Solution only works with `nginx-ingress from NGINX`. It will `not` work with the K8s Community version of Ingress, called ingress-nginx.
83
+
**NOTE:** This Solution only works with `nginx-ingress from NGINX`. It will not work with the K8s Community version of Ingress, called ingress-nginx.
84
84
85
85
If you are unsure which Ingress Controller you are running, check out the blog on nginx.com:
- Plus Dashboard enabled, used for testing, monitoring, and visualization of the Solution working.
206
206
- The `http` context is used for MultiCluster Loadbalancing, for HTTP/S processing, Split Clients ratio, and prometheus exporting.
207
207
- Plus KeyValue store is configured, to hold the dynamic Split ratio metadata.
208
-
- Plus Zone Sync on Port 9001 is configured, to synchronize the dynamic KVstore data between multiple NGINX LB Servers.
208
+
- Plus Zone Sync on Port 9001 is configured, to synchronize the dynamic KeyVal data between multiple NGINX LB Servers.
209
209
210
210
<br/>
211
211
@@ -516,7 +516,7 @@ server {
516
516
517
517
```
518
518
519
-
- High Availability: If you have 2 or more NGINX Plus LB Servers, you can use Zone Sync to synchronize the Split Key Value Store data between the NGINX Servers automatically. Use the `zonesync.conf` example file provided, change the IP addresses to match your NGINX LB Servers. Place this file in /etc/nginx/stream folder, and reload NGINX. Note: This example does not provide any security for the Zone Sync traffic, secure as necessary with TLS or IP allowlist.
519
+
- High Availability: If you have 2 or more NGINX Plus LB Servers, you can use Zone Sync to synchronize the KeyValue SplitRatio data between the NGINX Servers automatically. Use the `zonesync.conf` example file provided, change the IP addresses to match your NGINX LB Servers. Place this file in /etc/nginx/stream folder, and reload NGINX. Note: This example does not provide any security for the Zone Sync traffic, secure as necessary with TLS or IP allowlist.
520
520
521
521
```bash
522
522
cat zonesync.conf
@@ -535,15 +535,15 @@ server {
535
535
536
536
listen 9001;
537
537
538
-
#cluster of 2 nodes
538
+
#Zone Sync with 2 nodes
539
539
zone_sync_server 10.1.1.4:9001;
540
540
zone_sync_server 10.1.1.5:9001;
541
541
542
542
}
543
543
544
544
```
545
545
546
-
Watching the NGINX Plus Dashboard, you will see messages sent/received if Zone Synch is operating correctly:
546
+
Watching the NGINX Plus Dashboard, Cluster Tab, you will see messages sent/received if Zone Sync is operating correctly:
547
547
548
548

549
549
@@ -557,7 +557,7 @@ Watching the NGINX Plus Dashboard, you will see messages sent/received if Zone S
557
557
558
558
<br/>
559
559
560
-
This is the new K8s Controller from NGINX, which is configured to watch the k8s environment, the `nginx-ingress Service` object, and send API updates to the NGINX LB Server when there are changes. It only requires three things.
560
+
### This is the new K8s Controller from NGINX, which is configured to watch the k8s environment, the `nginx-ingress Service` object, and send API updates to the NGINX LB Server when there are changes. It only requires three things:
561
561
562
562
- New kubernetes namespace and RBAC
563
563
- NKL ConfigMap, to configure the Controller
@@ -642,7 +642,7 @@ kubectl get svc nginx-ingress -n nginx-ingress
Notice: K8s Control Nodes are excluded from the list intentionally.
677
+
Note: K8s Control Nodes are excluded from the list intentionally.
678
678
679
679
<br/>
680
680
@@ -696,7 +696,7 @@ Using a Terminal and `./kube Context set for Cluster1`, delete the `nginx-ingres
696
696
kubectl delete -f nodeport-cluster1.yaml
697
697
```
698
698
699
-
Now the `nginx-ingress` Service is gone, and the Cluster1 upstream list will now be empty in the Dashboard.
699
+
Now the `nginx-ingress` Service is gone, and the Cluster1 upstream list will now be empty in the Dashboard. The NKL Logs will show that it has `DELETED` the upstream servers!
700
700
701
701

702
702
Legend:
@@ -724,27 +724,38 @@ Verify the nginx-ingress Service is re-created. Notice the the Port Numbers hav
724
724
725
725
## 7. Testing MultiCluster Loadbalancing with HTTP Split Clients
726
726
727
+
<br/>
728
+
727
729
In this section, you will generate some HTTP load on the NGINX LB Server, and watch as it sends traffic to both Clusters. Then you will `dynamically change the Split ratio`, and watch NGINX send different traffic levels to each cluster.
728
730
729
731
The only tool you need for this, is an HTTP load generation tool. WRK, running in a docker container outside the cluster is what is shown here.
730
732
731
733
Start WRK, on a client outside the cluster. This command runs WRK for 15 minutes, targets the NGINX LB Server URL of https://10.1.1.4/coffee. The host header is required, cafe.example.com, as NGINX is configured for this server_name. (And so is the NGINX Ingress Controller).
732
734
735
+
In these test examples, the Nginx LB Servers and IPs in the hosts file are:
If the KV data is missing on one LB Server, your Zone Sync must be fixed.
756
767
757
-
>Notice the difference in HTTP Response Times, Cluster2 is running much faster than Cluster1! (The Red and Green highlights on the Dashboard)
768
+
>Notice the difference in HTTP Response Times in the Dashboard, highlighted in Red and Green: Cluster2 is responding much faster than Cluster1! (The Red and Green highlights on the Dashboard).
758
769
759
-
So, you decide to send less traffic to Cluster1, and more to Cluster2. You will set the HTTP Split ratio to 10/90 = 10% to Cluster1, 90% to Cluster2.
770
+
So, you decide to send less traffic to Cluster1, and more to Cluster2. You will set the HTTP Split ratio to 10:90 = 10% to Cluster1, 90% to Cluster2.
760
771
761
-
Remember: This Solution example configures NGINX for Cluster1 to use the Split value, and the remaining percentage of traffic is sent to Cluster2.
772
+
Remember: This Split Clients example configures NGINX for Cluster1 to use the Split KeyValue, and the remaining percentage of traffic is sent to Cluster2.
762
773
763
774
Change the KV Split Ratio to 10:
764
775
```bash
@@ -783,8 +794,6 @@ The Completes the Testing Section.
0 commit comments