End of Sale Notice:
F5 NGINX is announcing the End of Sale (EoS) for NGINX Management Suite API Connectivity Manager Module, effective January 1, 2024.
F5 maintains generous lifecycle policies that allow customers to continue support and receive product updates. Existing API Connectivity Manager Module customers can continue to use the product past the EoS date. License renewals are not available after September 30, 2024.
See our End of Sale announcement for more details.
Cluster-Wide Config
Learn how to configure the Cluster-Wide Config settings to fine tune and control proxy cluster’s behavior with performance enhancing configurations.
Overview
In API Connectivity Manager, you can apply cluster policies to API Gateways and Developer Portals to further enhance their configuration to meet your requirements. A proxy cluster is a group of instances configured as API Gateways or Developer Portals. Any cluster policy will apply to all instances in a group.
If a proxy cluster is shared between environments, updating cluster policies will effect all the environments.
See the Learn about Policies topic for an overview of the different policy types and available policies.
About the Policy
Use the Cluster-Wide Config settings to fine tune the worker connections, hash table size, and keepalive settings to speed up data processing and improve the performance of the API proxy for large number of connections. When applied, the settings are applicable to all the instances in a proxy cluster. If the proxy cluster is shared between environments, the changes made in any environment will be reflected in all the other environments.
Intended Audience
This guide is meant for Infrastructure Administrators.
Infrastructure Administrators ensure uniform governance across an organization’s infrastructure by setting policies at the infrastructure level, enabling teams to build APIs without interruption while adhering to the organization’s standards.
Workflow for Applying Policy
To apply the policy or make changes to it, here’s what you need to do:
- Create an environment or edit an existing one.
- Check the cluster config settings for the environment to see if the policy has been applied.
- Edit the policy to make changes for each cluster. Save and publish the changes.
Policy Settings
The following table lists the configurable settings and their default values for the policy.
Field | Datatype | Possible Values | Description | Required | Default |
---|---|---|---|---|---|
mapHashBucketSize |
integer | example: 256 | Sets the bucket size for the map hash table. | No | 128 |
mapHashMaxSize |
integer | example: 2048 | Sets the maximum bucket size for the map hash table. | No | 2048 |
serverNamesHashBucket |
integer | example: 256 | Sets the bucket size for the server names hash tables | No | 256 |
serverNamesHashMaxSize |
integer | example: 1024 | Sets the maximum size of the server names hash tables. | No | 1024 |
workersConfig.connections |
integer | In range 256–65536 |
Sets the maximum number of simultaneous connections that can be opened by a worker process. | No | 8192 |
workersConfig.maxProcesses |
string | ^(auto|[1-9]|[1-2][0-9]|3[0-2])$ |
Defines the number of worker processes. | No | auto |
workersConfig.maxLimitForOpenFile |
integer | In range 512–262144 |
Changes the limit on the maximum number of open files (RLIMIT_NOFILE) for worker processes. Used to increase the limit without restarting the main process. | No | 20000 |
clientConnection.keepaliveTimeout |
string | ^([0-9]+)(([h|m|s]){1})$ | The first parameter sets a timeout during which a keep-alive client connection will stay open on the server side. | No | 75s |
clientConnection.keepaliveHeaderTimeout |
string | ^([0-9]+)(([h|m|s]){1})$ | ? | No | |
clientConnection.keepaliveRequests |
integer | In range 50–20000 |
Sets the maximum number of requests that can be served through one keepalive connection. | No | 1000 |
clientConnection.keepaliveTime |
string | ^([0-9]+)(([h|m|s]){1})$ | Maximum time during which requests can be processed through one keepalive connection. | No | “1h” |
clientHeaderBuffer.size |
string | ([.\d]+)(?:M|K) | Sets the maximum size of buffers used for reading a large client request header. | No | 8K |
clientHeaderBuffer.number |
integer | In range 1–64 |
Sets the maximum number of buffers used for reading a large client request header. | No | 4 |
clientHeaderBuffer.timeout |
string | ^[0-9]+[h|m|s]{1}$ | Defines a timeout for reading client request header. | No | “60s” |
Updating Cluster-Wide Policy
See Also:
You can use tools such as
curl
or Postman to interact with the API Connectivity Manager REST API. The API URL follows the formathttps://<NMS_FQDN>/api/acm/<API_VERSION>
and must include authentication information with each call. For more information about authentication options, please refer to the API Overview.
To create an Cluster-Wide Config settings using the REST API, send an HTTP PUT
request to the Add-Endpoint-Name-Here endpoint.
Method | Endpoint |
---|---|
PUT |
/infrastructure/workspaces/{infraWorkspaceName}/proxy-clusters/{clusterName} |
JSON request - Cluster-Wide Config with minimum configuration
{
"policies": {
"cluster-wide-config": [],
}
}
JSON request - Cluster-Wide Config with all options specified
{
"policies": {
"cluster-wide-config": [
{
"action": {
"clientConnection": {
"keepaliveRequests": 1000,
"keepaliveTime": "1h",
"keepaliveTimeout": "75s"
},
"clientHeaderBuffer": {
"number": 4,
"size": "8K",
"timeout": "60s"
},
"mapHashBucketSize": 128,
"mapHashMaxSize": 2048,
"serverNamesHashBucket": 256,
"serverNamesHashMaxSize": 1024,
"workersConfig": {
"connections": 8192,
"maxLimitForOpenFile": 20000,
"maxProcesses": "auto"
}
},
}
],
}
}
To create a Cluster-Wide Config setting using the web interface:
- In a web browser, go to the FQDN for your F5 NGINX Management Suite host and log in. Then, from the Launchpad menu, select API Connectivity Manager.
- On the left menu, select Infrastructure.
- Choose the workspace that contains your cluster’s environment from the list of workspaces.
- In the Environments section, select the environment name for your cluster.
- In the list of clusters, locate the cluster you want to add the policy to. On the Actions menu (represented by an ellipsis,
...
), select Edit Cluster Config. - On the left menu, select Cluster Policies.
- In the list of Cluster Policies, the Cluster-Wide Config setting should be enabled by default. To edit the policy, select the ellipsis icon (
...
), then select Edit Cluster Config. - Customize the policy settings to suit your requirements. Refer to the Policy Settings section for an overview of the available options and their possible configurations.
- Select Save to save the changes.
- Select Save and Submit to publish the policy changes to the environment.
Verify the Policy
Confirm that the policy has been set up and configured correctly by taking these steps:
- Verify the NGINX configuration was applied by this policy.