From b9a5b4bbb9f07320e6e48153859b1e16913e6414 Mon Sep 17 00:00:00 2001
From: Joey Wang
Date: Tue, 16 Nov 2021 14:50:11 -0500
Subject: [PATCH 1/9] create 21b folder
---
releases/R2021b/LICENSE.md | 13 +
releases/R2021b/README.md | 309 ++++++++++++++++++
releases/R2021b/doc/cloudConsoleDoc.md | 170 ++++++++++
releases/R2021b/images/AboutPage.png | Bin 0 -> 19012 bytes
releases/R2021b/images/ApplicationsPage.png | Bin 0 -> 13885 bytes
releases/R2021b/images/Architecture.png | Bin 0 -> 23137 bytes
releases/R2021b/images/CertPage.png | Bin 0 -> 36545 bytes
releases/R2021b/images/ConfigPage.png | Bin 0 -> 58166 bytes
releases/R2021b/images/FinalArchitecture.png | Bin 0 -> 98440 bytes
.../R2021b/images/FinalArchitecture60.old.png | Bin 0 -> 82272 bytes
.../R2021b/images/FinalArchitecture60.png | Bin 0 -> 18346 bytes
releases/R2021b/images/HomePage.png | Bin 0 -> 62107 bytes
releases/R2021b/images/LicensePage.png | Bin 0 -> 30568 bytes
releases/R2021b/images/arch.png | Bin 0 -> 75443 bytes
releases/R2021b/images/cloudConsoleHome.png | Bin 0 -> 100796 bytes
releases/R2021b/images/cloudConsoleHome02.png | Bin 0 -> 38175 bytes
releases/R2021b/images/cloudConsoleLogin.png | Bin 0 -> 28704 bytes
...MatlabProductionServer_R2021a_Existing.yml | 248 ++++++++++++++
.../MatlabProductionServer_R2021a_New.yml | 184 +++++++++++
releases/R2021b/templates/templateURL.txt | 2 +
20 files changed, 926 insertions(+)
create mode 100644 releases/R2021b/LICENSE.md
create mode 100644 releases/R2021b/README.md
create mode 100644 releases/R2021b/doc/cloudConsoleDoc.md
create mode 100644 releases/R2021b/images/AboutPage.png
create mode 100644 releases/R2021b/images/ApplicationsPage.png
create mode 100644 releases/R2021b/images/Architecture.png
create mode 100644 releases/R2021b/images/CertPage.png
create mode 100644 releases/R2021b/images/ConfigPage.png
create mode 100644 releases/R2021b/images/FinalArchitecture.png
create mode 100644 releases/R2021b/images/FinalArchitecture60.old.png
create mode 100644 releases/R2021b/images/FinalArchitecture60.png
create mode 100644 releases/R2021b/images/HomePage.png
create mode 100644 releases/R2021b/images/LicensePage.png
create mode 100644 releases/R2021b/images/arch.png
create mode 100644 releases/R2021b/images/cloudConsoleHome.png
create mode 100644 releases/R2021b/images/cloudConsoleHome02.png
create mode 100644 releases/R2021b/images/cloudConsoleLogin.png
create mode 100644 releases/R2021b/templates/MatlabProductionServer_R2021a_Existing.yml
create mode 100644 releases/R2021b/templates/MatlabProductionServer_R2021a_New.yml
create mode 100644 releases/R2021b/templates/templateURL.txt
diff --git a/releases/R2021b/LICENSE.md b/releases/R2021b/LICENSE.md
new file mode 100644
index 0000000..c896375
--- /dev/null
+++ b/releases/R2021b/LICENSE.md
@@ -0,0 +1,13 @@
+MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE
+
+The files in this GitHub repository refer to commercial software products and services, virtual machine images, and related materials of The MathWorks, Inc. (“MathWorks Programs”). MathWorks Programs are separately licensed under the MathWorks Software License Agreement, available in the desktop installation of the MathWorks Programs or in the virtual machine image. The files in this GitHub repository may also refer to third-party software licensed under separate terms provided by such third parties.
+
+The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository.
+
+Copyright (c) 2021, The MathWorks, Inc.
+All rights reserved.
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/releases/R2021b/README.md b/releases/R2021b/README.md
new file mode 100644
index 0000000..fa21612
--- /dev/null
+++ b/releases/R2021b/README.md
@@ -0,0 +1,309 @@
+# MATLAB Production Server on Amazon Web Services
+
+# Requirements
+
+Before starting, you need the following:
+
+- A MATLAB® Production Server™ license that meets the following conditions:
+ - Current on Software Maintenance Service (SMS).
+ - Linked to a MathWorks Account.
+ - Concurrent license type. To check your license type, view your MathWorks Account.
+ - Configured to use a network license manager on the virtual network. By default, the deployment of MATLAB Production Server includes a network license manager, but you can also use an existing license manager. In either case, activate or move the license after deployment. For details, see [Configure MATLAB Production Server Licensing on the Cloud](https://www.mathworks.com/help/licensingoncloud/matlab-production-server-on-the-cloud.html).
+- An Amazon Web Services™ (AWS) account.
+- A Key Pair for your AWS account in the US East (N. Virginia), EU (Ireland) or Asia Pacific (Tokyo) region. For more information, see [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).
+
+# Costs
+You are responsible for the cost of the AWS services used when you create cloud resources using this guide. Resource settings, such as instance type, will affect the cost of deployment. For cost estimates, see the pricing pages for each AWS service you will be using. Prices are subject to change.
+
+
+# Introduction
+The following guide will help you automate the process of running MATLAB
+Production Server on the Amazon Web Services (AWS) Cloud. The automation is
+accomplished using an AWS CloudFormation template. The template is a JSON
+file that defines the resources needed to deploy and manage MATLAB Production
+Server on AWS. Once deployed, you can manage the server using the
+MATLAB Production Server cloud console—a web-based interface to
+configure and manage server instances on the cloud. For more information, see [MATLAB Production Server Cloud Console User Guide](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide).
+For information about the architecture of this solution, see [Architecture and Resources](#architecture-and-resources). For information about AWS templates, see [AWS CloudFormation Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html).
+
+The default MATLAB Production Server deployment template uses the Network License Manager for MATLAB reference architecture to manage MATLAB Production Server licenses. The template for using an exisitng VPC for the deployment provides an option to either deploy the Network License Manager or use your own license server. For more information about the Network License Manager for MATLAB reference architecture, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws).
+
+# Prepare Your AWS Account
+1. If you do not have an AWS account, create one at https://aws.amazon.com by following the on-screen instructions.
+2. Use the regions selector in the navigation bar to choose **US-EAST (N. Virginia)**, **EU (Ireland)** or **Asia Pacific (Tokyo)**, as the region where you want to deploy MATLAB Production Server.
+3. Create a [key pair](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) in that region. The key pair is necessary as it is the only way to connect to the instance as an administrator.
+4. If necessary, [request a service limit increase](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-) for the Amazon EC2 instance type or VPCs. You might need to do this if you already have existing deployments that use that instance type or you think you might exceed the [default limit](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) with this deployment.
+
+# Deployment Steps
+
+## Step 1. Launch the Template
+Click the **Launch Stack** button to deploy resources on AWS. This will open the AWS Management Console in your web browser.
+
+| Release | Windows Server 2019 or Ubuntu 18.04 VM |
+|---------------|------------------------|
+| MATLAB R2021a |
|
+
+For other releases, see [How do I launch a template that uses a previous MATLAB release?](#how-do-i-launch-a-template-that-uses-a-previous-matlab-release)
+Note: Creating a stack on AWS can take at least 20 minutes.
+
+## Step 2. Configure the Stack
+1. Provide values for parameters in the **Create Stack** page:
+
+ | Parameter Name | Value |
+ |----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ | **Stack name** | Choose a name for the stack. This will be shown in the AWS console. *Example*: Boston
|
+ | |**Remote access**|
+ | **Name of Existing Key Pair** | Choose the name of an existing EC2 Key Pair to allow access to all the VMs in the stack. For information about creating an Amazon EC2 key pair, see [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair). *Example*: boston-keypair
|
+ | **Allow connections from IP Address** | This is the IP address range that will be allowed to connect to the cloud console that manages the server. The format for this field is IP Address/Mask. Example:
10.0.0.1/32 - This is the public IP address which can be found by searching for "what is my ip address" on the web. The mask determines the number of IP addresses to include.
- A mask of 32 is a single IP address.
- Use a [CIDR calculator](https://www.ipaddressguide.com/cidr) if you need a range of more than one IP addresses.
- You may need to contact your IT administrator to determine which address is appropriate.
|
+ | **Make Solution Available over Internet** | Choose 'Yes' if you want your solution to use public IP addresses. |
+ ||**Server**|
+ | **Number of Server VMs** | Choose the number of AWS instances to start for the server. *Example*: 6
If you have a standard 24 worker MATLAB Production Server license and select `m5.xlarge` (4 cores) as the **Number of server VMs**, you need 6 worker nodes to fully utilize the workers in your license.
You can always under provision the number instances, in which case you may end up using fewer workers than you are licensed for.
|
+ | **Server VM Type** | Choose the AWS instance type to use for the server instances. All AWS instance types are supported. For more information, see [Amazon EC2 Instance Types](https://aws.amazon.com/ec2/instance-types/). *Example*: m5.xlarge
|
+ | **Server VM Operating System** | Choose between Windows (Windows Server) and Linux(Ubuntu) to use for the server instances. |
+ | **ARN of SSL Certificate** | Provide the Amazon Resource Name (ARN) of an existing certificate in the AWS Certificate Manager to enable secure HTTPS communication to the HTTPS server endpoint. This field is optional and may be left blank to use HTTP communication instead. For more information, see [Create Self-signed Certificate](/README.md#create-self-signed-certificate) and [Upload Self-signed Certificate to AWS Certificate Manager](/README.md#upload-self-signed-certificate-to-aws-certificate-manager).*Example*: 123456789012
|
+ | **Create Redis ElastiCache** | Choose whether you want to create a Redis ElastiCache service. Creating this service will allow you to use the persistence functionality of the server. Persistence provides a mechanism to cache data between calls to MATLAB code running on a server instance. |
+ ||**Network License Manager for MATLAB**|
+ | **Password** | Enter the password to use for logging in to the Network License Manager for MATLAB dashboard. |
+ | **Confirm Password** | Reenter the password to log in to the Network License Manager for MATLAB dashboard. |
+
+ >**Note**: Make sure you select US East (N.Virginia), EU (Ireland) or Asia Pacific (Tokyo) as your region from the navigation panel on top. Currently, US East, EU (Ireland), and Asia Pacific (Tokyo) are the only supported regions.
+
+2. Tick the box to accept that the template uses IAM roles. For more information about IAM, see [IAM FAQ](https://aws.amazon.com/iam/faqs).
+
+3. Click the **Create** button. The CloudFormation service will start creating the resources for the stack.
+
+## Step 3. Upload the License File
+1. Clicking **Create** takes you to the *Stack Detail* page for your stack. Wait for the Status to reach **CREATE\_COMPLETE**. This can take up to 20 minutes.
+1. In the Stack Detail for your stack, click **Outputs**.
+1. Look for the key named `MatlabProductionServerLicenseServer` and click the corresponding URL listed under value. This will take you to Network License Manager for MATLAB dashboard log in page.
+1. The user name for the Network License Manager for MATLAB dashboard is **manager**. For the password, enter the password that you entered in the **Network License Manager for MATLAB** section while creating the stack in [Step 2](#step-2-configure-the-stack).
+1. Follow the instructions to upload your MATLAB Production Server license.
+
+## Step 4. Get the Password to the Cloud Console
+1. In the AWS management console, select the stack that you deployed.
+1. In the Stack Detail for your stack, expand the **Outputs** section.
+1. Look for the key named `MatlabProductionServerInstance` and click the corresponding URL listed under value. This will take you to the server instance (`matlab-production-server-vm`) page.
+1. Click the **Connect** button at the top.
+1. In the *Connect To Your Instance* dialog box, choose **Get Password**.
+1. Click **Choose File** to navigate and select the private key file (`.pem` file) for the key pair that you used while creating the stack in [Step 2](#step-2-configure-the-stack).
+1. Click **Decrypt Password**. The console displays the password for the instance in the *Connect To Your Instance* dialog box, replacing the link to *Get Password* shown previously with the actual password.
+1. Copy the password to the clipboard.
+
+
+
+## Step 5. Connect to the Cloud Console
+> **Note**: The Internet Explorer web browser is not supported for interacting with the cloud console.
+
+1. In the Stack Detail for your stack, expand the **Outputs** section.
+1. Look for the key named `MatlabProductionServerCloudConsole` and click the corresponding URL listed under value. This is the HTTPS endpoint to the MATLAB Production Server Cloud Console.
+
+
+
+## Step 6. Log in to the Cloud Console
+The username to the cloud console is **Administrator**. For the password, paste the password you copied to the clipboard by completing [Step 4](#step-4-get-the-password-to-the-cloud-console). The cloud console provides a web-based interface to configure and manage server instances on the cloud. For more information on how to use the cloud console, see [MATLAB Production Server Cloud Console User Guide](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide).
+
+
+
+You are now ready to use MATLAB Production Server on AWS.
+
+>**Accept Terms and Conditions**: Access to and use of the MATLAB Production Server cloud console is governed by license terms in the file `C:\MathWorks\Cloud Console License.txt` (Linux: `/MathWorks/Cloud Console License.txt`) available on the `servermachine` in the resource group for this solution.
+
+
+>**Note**: The cloud console uses a self-signed certificate which you can change. For information on changing the self-signed certificates, see [Change Self-signed Certificates](/releases/R2021a/doc/cloudConsoleDoc.md#change-self-signed-certificates).
+
+To run applications on MATLAB Production Server, you need to create applications using MATLAB Compiler SDK. For more information, see [Deployable Archive Creation](https://www.mathworks.com/help/mps/deployable-archive-creation.html) in the MATLAB Production Server product documentation.
+
+# Additional Information
+
+## Delete Your Stack
+
+Once you have finished using your stack, it is recommended that you delete all resources to avoid incurring further cost.
+
+If you are using an existing license server, and have added the security group of the server VMs to the security group of the license server, you must delete the inbound rules before you delete the stack.
+1. In the AWS management console, select the stack that you deployed.
+1. In the stack detail for your stack, click **Resources**.
+1. Look for the **Logical ID** named `SecurityGroup` and click the corresponding URL listed under **Physical ID**. This will take you to the security group details.
+1. Click the **Inbound Rules** tab, then click **Edit Inbound Rules**.
+1. Click **Delete Rule** for the rules that have the tag `matlab-production-server-cloud-stack-elb-1-sg` and `
+matlab-production-server-cloud-stack-elb-2-sg` as their **Source**.
+1. Click **Save Rules**.
+
+To delete the stack, do the following:
+1. Log in to the AWS Console.
+3. Go to the AWS Cloud Formation page and select the stack that you created.
+3. Click the **Actions** button and click **Delete Stack** from the menu that appears.
+
+If you do not want to delete the entire deployment but want to minimize the cost, you can bring the number of instances in the Auto Scaling Group down to 0 and then scale it back up when the need arises.
+
+## Security
+When you run MATLAB Production Server on the cloud you get two HTTP/HTTPS endpoints.
+
+1. An HTTP/HTTPS endpoint to the application gateway/load balancer that connects the server instances. This endpoint is displayed in the home page of the cloud console and is used to make requests to the server. Whether the endpoint is HTTP or HTTPS depends on whether you provided a certificate during the creation of the stack.
+
+1. An HTTPS endpoint to the cloud console. This endpoint is used to connect to the cloud console. The cloud console comes with a self-signed certificate.
+
+For information on changing the self-signed certificates, see [Change Self-signed Certificates](/releases/R2021a/doc/cloudConsoleDoc.md#change-self-signed-certificates).
+
+### Create Self-signed Certificate
+For information on creating a self-signed certificate, see [Create and Sign an X509 Certificate](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl.html).
+
+### Upload Self-signed Certificate to AWS Certificate Manager
+
+1. Open the AWS Certificate Manager.
+2. Click the button at the top of the page to **Import a certificate**.
+3. Copy the contents of the `.crt` file containing the certificate into the field labeled **Certificate body**.
+4. Copy the contents of the `.pem` file containing the private key into the field labeled **Certificate private key**.
+5. Leave the field labeled **Certificate chain** blank.
+6. Click the button labeled **Review and import**.
+7. Review the settings and click the **Import** button.
+8. Copy the value of the Amazon Resource Name (ARN) field from the **Details** section of the certificate.
+
+The ARN value that you copied should be pasted into the **ARN of SSL Certificate** parameter of the template in [Step 2](#step-2-configure-the-stack).
+
+## View Logs
+Logs are available in Amazon CloudWatch.
+1. In the AWS management console, select the stack that you deployed.
+1. In the Stack Detail for your stack, expand the **Outputs** section.
+1. To view logs related to the cloud console and the MATLAB Production Server workers, look for the key named `MatlabProductionCloudConsoleWorkerLogGroup`, and click the corresponding URL listed under value. These logs contain information about user logins, deployed archives (CTF files), certificate changes, and user interface actions.
+1. To view logs related to the server instance, look for the key named `MatlabProductionServerLogGroup`, and click the corresponding URL listed under value.
+
+## Upload Multiple Applications
+You can upload multiple deployed archives (CTF files) using the Amazon S3 management console.
+1. In the AWS management console, select the stack that you deployed.
+1. In the Stack Detail for your stack, expand the **Outputs** section.
+1. Look for the key named `MATLABProductionServerApplicationsBucket`, and click the corresponding URL listed under value. Doing so takes you to the S3 console.
+1. In the S3 console, click **CTF**.
+1. Click **Upload** > **Add Files** to select and upload applications.
+
+## Get License Server MAC Address
+The Network License Manager for MATLAB reference architecture manages the MATLAB Production Server license file. The deployment templates for the MATLAB Production Server reference architecture provide an option to deploy the license manager. You can also use an existing license manager that is located in the same VPC and the security group of the MATLAB Production Server instances. For more information about the Network License Manager for MATLAB reference architecture, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws).
+
+>**NOTE**: For a new license manager deployed with MATLAB Production Server, the license manager MAC address is available only after the deployment to the Cloud is complete. For information on deploying the solution, see [Deployment Steps](/README.md#deployment-steps).
+
+To get the MAC address of the license manager:
+1. Log in to the Network License Manager for MATLAB dashboard. For a license manager deployed with the MATLAB Production Server deployment, use the following credentials:
+Username: **manager**
+Password: Enter the password that you entered during the deployment process.
+1. Click **Administration** > **License**.
+1. Copy the license server MAC address displayed at the top.
+# Architecture and Resources
+Deploying this reference architecture will create several resources in your
+resource group.
+
+
+
+
+*Architecture on AWS*
+
+### Resources
+
+| Resource Type | Number of Resources | Description |
+|----------------------------------------------------------------------------|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| AWS EC2 Instance | 2 | - Virtual machine (VM) that hosts the MATLAB Production Server Cloud Console. Use the cloud console to:
- Get HTTP/HTTPS endpoint to make requests
- Upload applications (CTF files) to the server
- Manage server configurations
- Manage the HTTPS certificate
For more information, see [MATLAB Production Server Cloud Console User Guide](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide).
- VM that hosts the Network License Manager for MATLAB. For more information, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws).
|
+| Auto Scaling Group | 1 | Manages the number of identical VMs to be deployed. Each VM runs an instance of MATLAB Production Server which in turn runs multiple MATLAB workers. |
+| Load Balancer | 1 | Provides routing and load balancing service to MATLAB Production Server instances. The MATLAB Production Server cloud console retrieves the HTTP/HTTPS endpoint for making requests to the server from the load balancer resource.**NOTE**: Provides HTTPS endpoint to the server for making requests.
|
+| S3 Bucket | 1 | S3 storage bucket created during the creation of the stack where applications deployed to the reference architecture are stored. |
+| Virtual Private Cluster (VPC) | 1 | Enables resources to communicate with each other. |
+| Redis ElastiCache | 1 | Enables caching of data between calls to MATLAB code running on a server instance. |
+| CloudWatch | 1 | Enables viewing of logs. |
+
+# FAQ
+## How do I use an existing VPC to deploy MATLAB Production Server?
+
+Use the following templates to launch the reference architecture within an existing VPC and subnet. The templates provide an option to deploy the Network License Manager for MATLAB to manage MATLAB Production Server licenses. The license manager must be in the same VPC and security group as MATLAB Production Server.
+
+| Release | Windows Server 2019 or Ubuntu 18.04 VM |
+|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| R2021a |
|
+
+In addition to the parameters specified in the section [Configure the Stack](#step-2-configure-the-stack), you will need to specify the following parameters in the template to use your existing VPC.
+
+| Parameter | Value |
+|----------------------------------|--------------------------------------------------------------------------------|
+| Existing VPC ID | ID of your existing VPC. |
+| IP address range of existing VPC | IP address range from the existing VPC. To find the IP address range: - Log in to the AWS Console.
- Navigate to the VPC dashboard and select your VPC.
- Click the **CIDR blocks** tab.
- The **IPv4 CIDR Blocks** gives the IP address range.
|
+| Subnet 1 ID | ID of an existing subnet that will host the cloud console and other resources. |
+| Subnet 2 ID | ID of an existing subnet that will host the application gateway. |
+
+- If Subnet 1 and Subnet 2 are public, then you must connect the EC2 VPC endpoint and the AutoScaling VPC endpoint to the VPC.
+- If Subnet 1 and Subnet 2 are private, then you must either deploy a NAT gateway in the VPC, or connect all of the following endpoints to the VPC:
+ - EC2 VPC endpoint
+ - AutoScaling VPC endpoint
+ - S3 VPC endpoint
+ - CloudFormation endpoint
+
+For more information about creating endpoints, see [AWS documentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint).
+
+You will also need to open the following ports in your VPC:
+
+| Port | Description |
+|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `443` | Required for communicating with the cloud console. |
+| `8000`, `8002`, `9910` | Required for communication between the cloud console and workers within the VPC. These ports do not need to be open to the internet. |
+| `27000`, `50115` | Required for communication between the network license manager and the workers. |
+| `3389` | Required for Remote Desktop functionality. This can be used for troubleshooting and debugging. |
+
+### How to use an existing license server in an existing VPC?
+If you want to use an exisiting license server, select `No` for the *Deploy License Server* step of the deployment.
+
+To use an existing license server, you must add the security group of the server VMs to the security group of the license server.
+1. In the AWS management console, select the stack that you deployed.
+1. In the stack detail for your stack, click **Resources**.
+1. Look for the **Logical ID** named ```SecurityGroup``` and click the corresponding URL listed under **Physical ID**. This will take you to the security group details.
+1. Click the **Inbound Rules** tab, then click **Edit Inbound Rules**.
+1. Click **Add Rule**.
+1. In the **Type** dropdown, select ```All TCP```.
+1. In the **Source**, search and add the ```matlab-production-server-cloud-stack-elb-1-sg``` and ```matlab-production-server-cloud-stack-elb-2-sg``` security groups.
+1. Click **Save Rules**.
+
+You must also add the private IP address of the license server to the `--license` property in the server configuration file.
+Find the IP address of the license server from the AWS management console.
+1. In the AWS management console, navigate to the EC2 dashboard.
+1. Select the license server instance.
+1. In the instance details, copy the value of **Private IPs**. For example, 172.30.1.126
+1. Add the private IP to the `--license` property. For example, `--license 27000@172.30.1.126`. For more information about editing the server configuration, see [Edit the Server Configuration](/releases/R2021a/doc/cloudConsoleDoc.md#edit-the-server-configuration).
+
+## How do I launch a template that uses a previous MATLAB release?
+| Release | Windows Server VM | Ubuntu VM |
+|---------------|------------------------|-----------------|
+| MATLAB R2019a |
|
|
+| MATLAB R2019b |
|
|
+| MATLAB R2020a |
|
|
+| MATLAB R2020b |
|
|
+
+For more information, see [previous releases](/releases).
+
+## What versions of MATLAB Runtime are supported?
+
+| Release | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime | MATLAB Runtime |
+|---------------|----------------|----------------|----------------|----------------|----------------|----------------|----------------|----------------|----------------|---------------|
+| MATLAB R2019a | R2016b | R2017a | R2017b | R2018a | R2018b | R2019a | |
+| MATLAB R2019b | | R2017a | R2017b | R2018a | R2018b | R2019a | R2019b |
+| MATLAB R2020a | | | R2017b | R2018a | R2018b | R2019a | R2019b | R2020a |
+| MATLAB R2020b | | | | R2018a | R2018b | R2019a | R2019b | R2020a | R2020b |
+| MATLAB R2021a | | | | | R2018b | R2019a | R2019b | R2020a | R2020b | R2021a |
+
+
+## Why do requests to the server fail with errors such as “untrusted certificate” or “security exception”?
+
+These errors result from either CORS not being enabled on the server or due to the fact that the server endpoint uses a self-signed
+certificate.
+
+If you are making an AJAX request to the server, make sure that CORS is enabled in the server configuration. You can enable CORS by editing the property `--cors-allowed-origins` in the config file. For more information, see [Edit the Server Configuration](/releases/R2021a/doc/cloudConsoleDoc.md#edit-the-server-configuration).
+
+Also, some HTTP libraries and Javascript AJAX calls will reject a request originating from a server that uses a self-signed certificate. You may need to manually override the default security behavior of the client application. Or you can add a new
+HTTP/HTTPS endpoint to the application gateway. For more information, see [Create a Listener](/releases/R2021a/doc/cloudConsoleDoc.md#create-a-listener).
+
+## How do I allow multiple IP address ranges access to the cloud console?
+The deployment template allows you to enter only one range of IP addresses that can access the cloud console. After the deployment is complete, you can allow additional IP ranges access to the cloud console. For details, see
+[Update security group rules](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#updating-security-group-rules) in the AWS documentation.
+
+The name of the security group to update is ``` matlab-production-server-cloud-stack-elb-1-sg```. Depending on whether your cloud console uses HTTP or HTTPS, edit inbound rules to add additional IP address ranges in CIDR format for either the ```HTTP``` type or the ```HTTPS``` type.
+
+
+# Enhancement Request
+Provide suggestions for additional features or capabilities using the following link: https://www.mathworks.com/cloud/enhancement-request.html
+
+# Technical Support
+If you require assistance or have a request for additional features or capabilities, please contact [MathWorks Technical Support](https://www.mathworks.com/support/contact_us.html).
+
diff --git a/releases/R2021b/doc/cloudConsoleDoc.md b/releases/R2021b/doc/cloudConsoleDoc.md
new file mode 100644
index 0000000..b991be0
--- /dev/null
+++ b/releases/R2021b/doc/cloudConsoleDoc.md
@@ -0,0 +1,170 @@
+# MATLAB Production Server Cloud Console User Guide
+
+1. [Get Information About Server Instances](#get-information-about-server-instances)
+1. [Get HTTPS End Point](#get-https-end-point)
+1. [Upload a MATLAB Application Created with MATLAB Compiler SDK](#upload-a-matlab-application-created-with-matlab-compiler-sdk)
+1. [Edit the Server Configuration](#edit-the-server-configuration)
+1. [Edit the Redis ElastiCache Configuration](#edit-the-redis-elasticache-configuration)
+1. [Upload an HTTPS Certificate](#upload-an-https-certificate)
+1. [Setup Authentication Using Azure Active Directory](#setup-authentication-using-azure-active-directory)
+1. [Change the Number of Virtual Machines](#change-the-number-of-virtual-machines)
+1. [Change Self-signed Certificates](#change-self-signed-certificates)
+
+## Get Information About Server Instances
+To get information about server instances:
+- On the cloud console navigation menu, click **Home**.
+
+
+
+[Back to Top](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide) | [Back to Main](/README.md#matlab-production-server-on-amazon-web-services)
+
+## Get HTTPS End Point
+To get the HTTPS end point:
+1. On the cloud console navigation menu, click **Home**.
+1. Copy the parameter value listed next to **HTTPS Server Endpoint**.
+
+[Back to Top](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide) | [Back to Main](/README.md#matlab-production-server-on-amazon-web-services)
+
+## Upload a MATLAB Application Created with MATLAB Compiler SDK
+To upload an application:
+1. On the cloud console navigation menu, click **Applications**.
+1. Click **+Upload Application**.
+1. Click **Browse CTF File**, select the file, and click **Upload**.
+
+For information on how to create an application, see [Package Deployable Archives
+with Production Server Compiler App](https://www.mathworks.com/help/mps/ml_code/create-a-deployable-ctf-archive-with-the-library-compiler-app.html) in the MATLAB® Compiler SDK™ documentation.
+
+[Back to Top](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide) | [Back to Main](/README.md#matlab-production-server-on-amazon-web-services)
+
+## Edit the Server Configuration
+To edit the server configuration:
+1. On the cloud console navigation menu, select **Administration** > **Server Configuration**.
+1. Find the server property you want to change and enter the appropriate value. For
+a list of server properties and values, see [Server Properties](https://www.mathworks.com/help/mps/referencelist.html?type=property).
+
+>**NOTE**: To assign a value to a property that has been commented out, remove the #
+symbol and assign a value.
+
+*Example*: Enabling CORS:
+
+`--cors-allowed-origins http://www.w3.org, https://www.apache.org`
+
+>**NOTE**: When setting the `num-workers` property in the server configuration you need to carefully consider your cluster setup. Each virtual machine in the cluster runs an instance of MATLAB Production Server and each instance runs multiple MATLAB workers. MathWorks recommends 1 core per MATLAB worker. For example, a `Standard_D4s_v3` **Server VM Instance Size** has 4 cores and therefore we recommend that you set `num-workers` be no more than 4 per instance.`--num-workers 4`
+
+[Back to Top](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide) | [Back to Main](/README.md#matlab-production-server-on-amazon-web-services)
+
+## Edit the Redis ElastiCache Configuration
+To edit the Azure Cache for Redis configuration:
+- On the cloud console navigation menu, select **Administration** > **Persistence Configuration**.
+
+The cache configuration is specified in JSON format as follows:
+```
+{
+ "Connections": {
+ "": {
+ "Provider": "Redis",
+ "Host": "",
+ "Port": ,
+ }
+ }
+}
+```
+If you create a Redis ElastiCache while launching the stack, the cache configuration is automatically populated. The default connection name is `Connection_Name` and can be changed.
+
+If you plan on using a different Redis ElastiCache, specify the ``, ``, and `` values in the configuration. The Redis ElastiCache must be within the same VPC as the deployment.
+
+For more information, see [Use a Data Cache to Persist Data](https://www.mathworks.com/help/mps/ml_code/use-a-data-cache-to-persist-data.html).
+
+[Back to Top](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide) | [Back to Main](/README.md#matlab-production-server-on-amazon-web-services)
+
+
+## Upload an HTTPS Certificate
+> **NOTE**: When you upload a new certificate, you will lose all pending requests.
+
+To upload an HTTPS certificate:
+1. On the cloud console navigation menu, select **Administration** > **HTTPS Certificate**.
+1. Click **Browse Certificate...** and select a certificate file. Only `.pfx` files are supported.
+1. Enter the certificate password in the **Certificate Password** field.
+1. Click **Upload**.
+
+The server will automatically restart after uploading a certificate. You will
+need to log out and log back in.
+
+[Back to Top](/releases/R2020a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide) | [Back to Main](/README.md#matlab-production-server-on-amazon-web-services)
+
+## Setup Authentication Using Azure Active Directory
+You can use Azure Active Directory (Azure AD) to provide an identity to each user. To use Azure AD you will need to specify an:
+* Access Control Configuration File
+* Access Control Policy File
+
+
+
+ | Sample Access Control Configuration File |
+
+
+ { "tenantId": "54ss4lk1-8428-7256-5fvh-d5785gfhkjh6", "serverAppId": "j21n12bg-3758-3r78-v25j-35yj4c47vhmt", "jwksUri": "https://login.microsoftonline.com/common/discovery/keys", "issuerBaseUri": "https://sts.windows.net/", "jwksTimeOut": 120 } |
+
+
+
+
+
+ | Sample Access Control Policy File |
+
+
+ { "version": "1.0.0", "policy" : [ { "id": "policy1", "description": "MPS Access Control policy for XYZ Corp.", "rule": [ { "id": "rule1", "description": "group A can execute ctf magic", "subject": { "groups": ["aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"] }, "resource": { "ctf": ["magic"] }, "action": ["execute"] }, { "id": "rule2", "description": "group A and group B can execute ctf monteCarlo and fastFourier", "subject": { "groups": ["aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"] }, "resource": { "ctf": ["monteCarlo", "fastFourier"] }, "action": ["execute"] }, { "id": "rule3", "description": "QE group C can execute any ctf starts with test", "subject": { "groups": ["cccccccc-cccc-cccc-cccc-cccccccccccc"] }, "resource": { "ctf": ["test*"] }, "action": ["execute"] } ] } ] }
|
+
+
+
+For more information, see [Access Control](https://www.mathworks.com/help/mps/server/access_control.html).
+
+After you enter the details of each file and click **Save and Apply Configuration**, you will need to edit the [Server Configuration](#edit-the-server-configuration) and enable the option `access-control-provider`.
+
+[Back to Top](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide) | [Back to Main](/README.md#matlab-production-server-on-amazon-web-services)
+
+
+## Change the Number of Virtual Machines
+You cannot change the number of virtual machines (VMs) from the cloud console.
+To change the number of VMs:
+
+1. Log in to the AWS Console.
+2. Expand **Services** and select **CloudFormation** under Management Tools.
+3. Select the stack you created for this solution.
+4. Expand **Outputs**.
+5. Look for the key named `MatlabProductionServerAutoScalingGroup` and click the corresponding URL listed under value. This will take you to the auto scaling group associated with your stack.
+6. In the **Details** tab, click **Edit** and change the value for the **Desired** field to the number of VMs you want.
+
+If you have a standard 24 worker MATLAB Production Server license and select `t2.xlarge` as the **Instance type for the worker nodes** during setup, you will need 6 worker nodes to fully utilize the workers in your license.
+
+[Back to Top](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide) | [Back to Main](/README.md#matlab-production-server-on-amazon-web-services)
+
+## Change Self-signed Certificates
+You can change the self-signed certificate to:
+- The HTTPS endpoint to the load balancer. This endpoint is used to make requests to the server.
+- The HTTPS endpoint to the cloud console. This endpoint is used to connect to the cloud console.
+
+To change the self-signed certificate used to connect to the cloud console, see [Upload an HTTPS Certificate](#upload-an-https-certificate).
+
+To change the self-signed certificate to the load balancer you need to create a new listener for the load balancer.
+
+> NOTE: The load balancer HTTPS endpoint is used to make requests to the server.
+
+### Create a Listener
+1. Select the stack you created for this solution.
+2. Expand **Resources**.
+3. Look for the Logical ID with type `AWS::ElasticLoadBalancing::LoadBalancer`.
+4. Click the corresponding URL listed under value for the load balancer Logical ID. This will take you to the load balancer associated with your stack.
+5. Select the **Listeners** tab and click the **Edit** button.
+6. Click **Add** and fill in the details:
+
+ | Parameter Name | Value |
+ |----------------------------|------------------------------------|
+ | **Load Balancer Protocol** | HTTPS (Secure HTTP) or HTTP |
+ | **Load Balancer Port** | 443 (HTTPS) and 80 (HTTP) |
+ | **Instance Protocol** | HTTP |
+ | **Instance Port** | 9910 |
+ | **Cipher** | Select a cipher as applicable. |
+ | **SSL Certificate** | Select an appropriate certificate. |
+
+7. Click **Save**.
+
+[Back to Top](/releases/R2021a/doc/cloudConsoleDoc.md#matlab-production-server-cloud-console-users-guide) | [Back to Main](/README.md#matlab-production-server-on-amazon-web-services)
diff --git a/releases/R2021b/images/AboutPage.png b/releases/R2021b/images/AboutPage.png
new file mode 100644
index 0000000000000000000000000000000000000000..1296d492809491828046b69ffaa78a121d3ec22c
GIT binary patch
literal 19012
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