Skip to content

Commit a969477

Browse files
authored
Merge branch 'main' into feature-mjang-cert-csg-changelog
2 parents 0fda64a + 7263c52 commit a969477

File tree

5 files changed

+91
-37
lines changed

5 files changed

+91
-37
lines changed

.github/workflows/linkchecker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ jobs:
104104
# Run LinkChecker
105105
- name: Run LinkChecker on ${{ matrix.doc_paths }}
106106
continue-on-error: ${{ env.isProduction != 'true' }}
107-
uses: nick-fields/retry@c97818ca39074beaea45180dba704f92496a0082 # v3.0.1
107+
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
108108
with:
109109
timeout_minutes: 10
110110
max_attempts: 3

content/nginx/deployment-guides/amazon-web-services/high-availability-network-load-balancer.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ NGINX Plus also provides reverse‑proxy and load balancing features, including
4141
- [Management and real‑time configuration changes with DevOps‑friendly tools](https://www.nginx.com/products/nginx/load-balancing/#load-balancing-api)
4242

4343
<span id="overview"></span>
44-
## Solution Overview
44+
## Solution overview
4545

4646
The combined solution described further in these instructions consists of:
4747

@@ -88,7 +88,7 @@ The steps to set up an AWS NLB for an HA, all‑active NGINX Plus deployment i
8888
- [Launch the AWS NLB](#nlb-launch)
8989

9090
<span id="nlb-eip"></span>
91-
### Allocate an Elastic IP Address
91+
### Allocate an Elastic IP address
9292

9393
The first step is to allocate an Elastic IP address, which becomes the fixed IP address for your AWS NLB. Using an Elastic IP address is optional, but it is strongly recommended that you do so. With a dynamic IP address, the AWS NLB might not remain reachable if you reconfigure or restart it.
9494

@@ -139,7 +139,7 @@ The new Elastic IP address displays on the **Elastic IPs** dashboard. Make a no
139139
5. Select the *Next: Configure Routing* button. The **Step 2: Configure Routing** window opens.
140140

141141
<span id="nlb-routing-options"></span>
142-
### Configure the AWS NLB Routing Options
142+
### Configure the AWS NLB routing options
143143

144144
In this step, you create a _target group_, using the **Step 2: Configure Routing** window. The target group contains the set of EC2 instances across which your AWS NLB load balances traffic. You specify those EC2 instances later, in the step [Register Instances in the Target Group](#nlb-register-instances)).
145145

@@ -169,7 +169,7 @@ In this step, you create a _target group_, using the **Step 2: Configure Routing
169169
3. Select the *Next: Register Targets* button. The **Step 3: Register Targets** window opens.
170170

171171
<span id="nlb-register-instances"></span>
172-
### Register Instances in the Target Group
172+
### Register instances in the target group
173173

174174
In this step, you add instances to the empty target group you created in the previous section. Use the the **Step 3: Register Targets** window to add both NGINX Plus load balancer instances.
175175

@@ -242,7 +242,7 @@ Use our Packer and Terraform scripts to completely automate the process:
242242
Once you have created and configured the EC2 instances, your prerequisites are complete. Continue to [Configure an AWS Network Load Balancer](#nlb-configure).
243243

244244
<span id="create-instance-install-nginx"></span>
245-
#### Create EC2 Instances and Install the NGINX Software
245+
#### Create EC2 instances and install the NGINX software
246246

247247
The deployed solution in these instructions uses six EC2 instances. Two instances run NGINX Plus. These load balance traffic to the other four instances, which run NGINX Open Source as a web server. The four NGINX Open Source instances deploy in two pairs; each pair runs a different app.
248248

@@ -267,7 +267,7 @@ Assign the following names to the instances, then install the indicated NGINX so
267267
<a href="/nginx/images/aws-nlb-instances-summary.png"><img src="/nginx/images/aws-nlb-instances-summary.png" alt="" width="1024" height="263" class="aligncenter size-full wp-image-54856" style="border:2px solid #666666; padding:2px; margin:2px;" /></a>
268268

269269
<span id="configure-web-servers"></span>
270-
#### Configure NGINX Open Source on the Web Servers
270+
#### Configure NGINX Open Source on the web servers
271271

272272
Configure NGINX Open Source instances as web servers. These should return a page specifying the server name, address, and other information. As an example, here's the page returned by *App 1*:
273273

@@ -285,7 +285,7 @@ Repeat the instructions on all four web servers:
285285
- <span style="color:#666666; font-weight:bolder">ngx-oss-app2-2</span>
286286

287287
<span id="configure-load-balancers"></span>
288-
#### Configure NGINX Plus on the Load Balancers
288+
#### Configure NGINX Plus on the load balancers
289289

290290
Configure NGINX Plus instances as load balancers. These distribute requests to NGINX Open Source web servers set up in [Configure NGINX Open Source on the Web Servers](#configure-web-servers).
291291

@@ -294,7 +294,7 @@ Use the *Step‑by‑step* instructions in our deployment guide, [Setting Up an
294294
Repeat the instructions on both <span style="color:#666666; font-weight:bolder; white-space: nowrap;">ngx-plus-1</span> and <span style="color:#666666; font-weight:bolder; white-space: nowrap;">ngx-plus-2</span>.
295295

296296
<span id="create-instances-automated"></span>
297-
### Automate Instance Setup with Packer and Terraform
297+
### Automate instance setup with Packer and Terraform
298298

299299
You can automate set up of the six instances described in these instructions. Automation is an alternative to creating and configuring each instance one at a time. To automate the set up, use the Packer and Terraform scripts from our [GitHub repository](https://github.com/nginxinc/NGINX-Demos/tree/master/aws-nlb-ha-asg). These scripts will:
300300

layouts/redoc/single.html

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,32 @@
6060
}
6161
</style>
6262
<!--Use wide page layout for the API reference pages-->
63-
<div
64-
class="row flex-md-nowrap"
65-
style="
66-
position: relative;
67-
flex-wrap: nowrap;
68-
margin-right: 9px;
69-
max-width: calc(100% + 9px);
70-
"
71-
>
72-
<nav
73-
class="sidenav overflow-auto col-md-3 d-none d-md-block d-print-none sidebar-toggle-hidden-width"
74-
style="width: 25%; border-right: 1px solid #e6e6e6"
75-
;
63+
<section class="main-layout api">
64+
<div class="sidebar-layout" data-mf="true" style="display:none;">
65+
<nav id="sidebar-v2" class="sidebar">
66+
{{ partial "sidebar-v2.html" . }}
67+
</nav>
68+
</div>
69+
<div
70+
class="row flex-md-nowrap content-layout"
71+
style="
72+
position: relative;
73+
flex-wrap: nowrap;
74+
margin-right: 9px;
75+
max-width: calc(100% + 9px);
76+
"
7677
>
77-
{{ partial "sidebar.html" . }}
78-
</nav>
79-
<div class="nginx-docs-api-container">
80-
<div id="api-component">{{ .Content}}</div>
78+
<nav
79+
id="sidebar"
80+
class="sidenav overflow-auto col-md-3 d-none d-md-block d-print-none sidebar-toggle-hidden-width"
81+
style="width: 25%; border-right: 1px solid #e6e6e6"
82+
;
83+
>
84+
{{ partial "sidebar.html" . }}
85+
</nav>
86+
<div class="nginx-docs-api-container">
87+
<div id="api-component">{{ .Content}}</div>
88+
</div>
89+
</section>
8190
</div>
82-
</div>
8391
{{ end }}

static/nginx-one/api/one.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
},
3939
{
4040
"name": "Certificates",
41-
"description": "The `Certificates` object in the NGINX One console represents an SSL certificate, covering both managed and unmanaged types. \nYou can view essential details like issuer, expiration status, and the instances or config sync groups where each certificate is deployed.\n",
41+
"description": "The `Certificates` object in NGINX One Console represents an SSL certificate, covering both managed and unmanaged types. \nYou can view essential details like issuer, expiration status, and the instances or config sync groups where each certificate is deployed.\n",
4242
"x-displayName": "Certificates"
4343
},
4444
{
@@ -48,7 +48,7 @@
4848
},
4949
{
5050
"name": "Events",
51-
"description": "Get a list of system events in the NGINX One console.\n",
51+
"description": "Get a list of system events in NGINX One Console.\n",
5252
"x-displayName": "Events"
5353
},
5454
{
@@ -616,7 +616,7 @@
616616
],
617617
"summary": "Delete an SSL certificate",
618618
"operationId": "deleteCertificate",
619-
"description": "Deletes a managed SSL certificate from the NGINX One console. This operation is disabled for unmanaged certificates, as they get cleaned up automatically when they are not used in any NGINX configuration.",
619+
"description": "Deletes a managed SSL certificate from NGINX One Console. This operation is disabled for unmanaged certificates, as they get cleaned up automatically when they are not used in any NGINX configuration.",
620620
"responses": {
621621
"204": {
622622
"description": "Successfully deleted the SSL certificate."
@@ -1127,7 +1127,7 @@
11271127
"Config Sync Groups"
11281128
],
11291129
"summary": "Delete an NGINX config sync group",
1130-
"description": "Delete a NGINX config sync group from the NGINX One console. You can delete a config sync group, only if it contains no NGINX instances.\n",
1130+
"description": "Delete a NGINX config sync group from NGINX One Console. You can delete a config sync group, only if it contains no NGINX instances.\n",
11311131
"operationId": "deleteConfigSyncGroup",
11321132
"responses": {
11331133
"204": {
@@ -1702,7 +1702,7 @@
17021702
"Config Sync Groups"
17031703
],
17041704
"summary": "Retrieves stored NGINX configurations for a NGINX config sync group",
1705-
"description": "Returns a list of all configurations for a NGINX config sync group. Only the last 5 are kept on the NGINX One Console for a NGINX config sync group.",
1705+
"description": "Returns a list of all configurations for a NGINX config sync group. Only the last 5 are kept on NGINX One Console for a NGINX config sync group.",
17061706
"operationId": "listConfigSyncGroupConfigurations",
17071707
"responses": {
17081708
"200": {
@@ -2811,7 +2811,7 @@
28112811
"Instances"
28122812
],
28132813
"summary": "Retrieves the stored NGINX configurations for an instance",
2814-
"description": "Returns a list of all configurations for a NGINX instance. Only the last 5 are kept on the NGINX One Console for a NGINX instance.",
2814+
"description": "Returns a list of all configurations for a NGINX instance. Only the last 5 are kept on NGINX One Console for a NGINX instance.",
28152815
"operationId": "listInstanceConfigurations",
28162816
"responses": {
28172817
"200": {
@@ -3731,7 +3731,7 @@
37313731
"properties": {
37323732
"total": {
37333733
"type": "integer",
3734-
"description": "The absolute total number of the resource in the NGINX One Console.\n"
3734+
"description": "The absolute total number of the resource in NGINX One Console.\n"
37353735
},
37363736
"count": {
37373737
"type": "integer",
@@ -4078,7 +4078,7 @@
40784078
},
40794079
"CertificateType": {
40804080
"type": "string",
4081-
"description": "Certificate type:\n * `ca_bundle` - This certificate object is a CA bundle.\n * `cert_key` - This certificate object is consisted of public certificates and key.\n * `unmanaged` - This certificate is not managed by NGINX One console and its type is unmanaged.\n",
4081+
"description": "Certificate type:\n * `ca_bundle` - This certificate object is a CA bundle.\n * `cert_key` - This certificate object is consisted of public certificates and key.\n * `unmanaged` - This certificate is not managed by NGINX One Console and its type is unmanaged.\n",
40824082
"enum": [
40834083
"ca_bundle",
40844084
"cert_key",
@@ -5535,7 +5535,7 @@
55355535
},
55365536
"NginxConfigPayloads": {
55375537
"type": "array",
5538-
"description": "An array of payloads that track the file paths of each SSL certificates and key, indicating where to deploy\nthem onto the data plane instance.\n* If the `type` is `managed_certificate` or `managed_key`, you need to specify an `object_id`.\n * The `object_id` must represent a managed certificate object, or a `400 Bad Request` is returned. \n * The `contents` field is optional and is ignored if included.\n* The NGINX One Console manages deployed file paths only for managed certificates and keys. If you don't want \nthem to be managed by NGINX One Console, `inline_content` and `inline_secret` can be used for certificates or \nkeys, respectively. When you retrieve certificate deployment details, only the file paths of managed \ncertificates and keys will be shown.\n* If you use `inline_content` and `inline_secret` in your NGINX configuration, the NGINX One Console \nwill detect them. When they are used as SSL directives of the NGINX configuration \nfor certificates and keys, the certificates will be listed as `unmanaged_certificate` in the certificate \ndeployment details.\n",
5538+
"description": "An array of payloads that track the file paths of each SSL certificates and key, indicating where to deploy\nthem onto the data plane instance.\n* If the `type` is `managed_certificate` or `managed_key`, you need to specify an `object_id`.\n * The `object_id` must represent a managed certificate object, or a `400 Bad Request` is returned. \n * The `contents` field is optional and is ignored if included.\n* NGINX One Console manages deployed file paths only for managed certificates and keys. If you don't want \nthem to be managed by NGINX One Console, `inline_content` and `inline_secret` can be used for certificates or \nkeys, respectively. When you retrieve certificate deployment details, only the file paths of managed \ncertificates and keys will be shown.\n* If you use `inline_content` and `inline_secret` in your NGINX configuration, NGINX One Console \nwill detect them. When they are used as SSL directives of the NGINX configuration \nfor certificates and keys, the certificates will be listed as `unmanaged_certificate` in the certificate \ndeployment details.\n",
55395539
"items": {
55405540
"$ref": "#/components/schemas/NginxConfigPayload"
55415541
},

static/scripts/install-nim-bundle.sh

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,41 @@ This action deletes all files in the following directories: /etc/nms , /etc/ngin
697697
fi
698698
}
699699

700+
download_third_party_dependencies(){
701+
if cat /etc/*-release | grep -iq 'debian\|ubuntu'; then
702+
if echo "${target_distribution}" | grep -iq 'debian\|ubuntu'; then
703+
mkdir "${TEMP_DIR}/${target_distribution}/keepalived"
704+
apt-get install --download-only -o Dir::Cache="${TEMP_DIR}/${target_distribution}/keepalived" keepalived
705+
else
706+
if command -v docker >/dev/null 2>&1; then
707+
mkdir "${TEMP_DIR}/${target_distribution}/keepalived"
708+
docker run --rm -it -v "${TEMP_DIR}/${target_distribution}/keepalived":/downloads fedora dnf download --resolve --destdir=/downloads keepalived
709+
else
710+
echo "Cross platform packing requires Docker. Please install Docker and try again."
711+
exit 1
712+
fi
713+
fi
714+
elif cat /etc/*-release | grep -iq 'centos\|fedora\|rhel\|Amazon Linux'; then
715+
if echo "${target_distribution}" | grep -iq 'centos\|fedora\|rhel\|Amazon Linux'; then
716+
mkdir "${TEMP_DIR}/${target_distribution}/keepalived"
717+
yumdownloader --destdir="${TEMP_DIR}/${target_distribution}/keepalived" --resolve keepalived
718+
else
719+
if command -v docker >/dev/null 2>&1; then
720+
mkdir -p "${TEMP_DIR}/keepalived"
721+
docker run --rm -it -v "${TEMP_DIR}/keepalived":/tmp/nim ubuntu bash -c "apt-get update && mkdir -p /tmp/nim && apt-get install -y --download-only -o Dir::Cache=\"/tmp/nim\" keepalived"
722+
mkdir "${TEMP_DIR}/${target_distribution}/keepalived"
723+
mv ${TEMP_DIR}/keepalived/archives/* ${TEMP_DIR}/${target_distribution}/keepalived
724+
else
725+
echo "Cross platform packing requires Docker. Please install Docker and try again."
726+
exit 1
727+
fi
728+
fi
729+
else
730+
printf "Unsupported distribution"
731+
exit 1
732+
fi
733+
}
734+
700735
OPTS_STRING="k:c:m:d:i:s:p:n:hv:t:j:rf:l"
701736
while getopts ${OPTS_STRING} opt; do
702737
case ${opt} in
@@ -938,11 +973,12 @@ else
938973
url_file_download "$file_to_download" "$save_path"
939974
echo "Downloaded NGINX Instance Manager package - $save_path"
940975
done
976+
download_third_party_dependencies
941977
bundle_file="nim-${NIM_VERSION}-${target_distribution}.tar.gz"
942978
echo -n "Creating NGINX Instance Manager install bundle ... ${bundle_file}"
943979
cp ${NGINX_CERT_PATH} "${TEMP_DIR}/${target_distribution}/nginx-repo.crt"
944980
cp ${NGINX_CERT_KEY_PATH} "${TEMP_DIR}/${target_distribution}/nginx-repo.key"
945-
tar -zcf "$bundle_file" -C "${TEMP_DIR}/${target_distribution}" .
981+
tar -zcf "$bundle_file" -C "${TEMP_DIR}/${target_distribution}/" .
946982
echo -e "\nSuccessfully created the NGINX Instance Manager bundle - $bundle_file"
947983
curl -s -o /dev/null --cert ${NGINX_CERT_PATH} --key ${NGINX_CERT_KEY_PATH} "https://pkgs.nginx.com/nms/?using_install_script=true&app=nim&mode=offline"
948984

@@ -971,6 +1007,11 @@ else
9711007
DEBIAN_FRONTEND=noninteractive dpkg -i "$pkg_clickhouse_srv"
9721008
check_last_command_status "dpkg -i \"$pkg_clickhouse_srv\"" $?
9731009
done
1010+
if [ -d "${TEMP_DIR}/keepalived" ]; then
1011+
echo "Installing keepalived from ${TEMP_DIR}/keepalived"
1012+
DEBIAN_FRONTEND=noninteractive dpkg -i ${TEMP_DIR}/keepalived/*.deb
1013+
check_last_command_status "dpkg -i ${TEMP_DIR}/keepalived/*.deb" $?
1014+
fi
9741015
for pkg_nim in "${TEMP_DIR}"/nms-instance-manager*.deb; do
9751016
echo "Installing NGINX Instance Manager from ${pkg_nim}"
9761017
DEBIAN_FRONTEND=noninteractive dpkg -i "$pkg_nim"
@@ -1005,6 +1046,11 @@ else
10051046
echo "Installing clickhouse dependencies from ${pkg_clickhouse}"
10061047
yum localinstall -y -v --disableplugin=subscription-manager --skip-broken "$pkg_clickhouse_srv"
10071048
done
1049+
if [ -d "${TEMP_DIR}/keepalived" ]; then
1050+
echo "Installing keepalived from ${TEMP_DIR}/keepalived"
1051+
yum localinstall -y -v --disableplugin=subscription-manager --skip-broken "${TEMP_DIR}/keepalived/*.rpm"
1052+
check_last_command_status "dpkg -i yum localinstall -y -v --disableplugin=subscription-manager --skip-broken ${TEMP_DIR}/keepalived/*.rpm" $?
1053+
fi
10081054
for pkg_nim in "${TEMP_DIR}"/nms-instance-manager*.rpm; do
10091055
echo "Installing NGINX Instance Manager from ${pkg_nim}"
10101056
yum localinstall -y -v --disableplugin=subscription-manager --skip-broken "$pkg_nim"

0 commit comments

Comments
 (0)