From 8c0683453705af261a3ba1c27b57ca9ae6cd7e86 Mon Sep 17 00:00:00 2001 From: Amy Zhou Date: Fri, 9 Sep 2022 13:49:35 -0700 Subject: [PATCH] added version history, added tables and screenshot --- .../deployment/do/images/mcc-img-metrics.PNG | Bin 0 -> 41210 bytes .../do/mcc-isp-cache-node-configuration.md | 22 ++++++++++--- .../deployment/do/mcc-isp-client-routing.md | 6 ++-- .../do/mcc-isp-configure-routing.md | 10 +++--- windows/deployment/do/mcc-isp-monitor.md | 30 +++++++++++------- windows/deployment/do/mcc-isp-uninstall.md | 3 -- windows/deployment/do/mcc-isp-update.md | 4 +-- .../do/mcc-isp-verify-cache-node.md | 4 +-- .../deployment/do/mcc-traffic-estimation.md | 30 ++++++++++-------- windows/deployment/do/mcc-version-history.md | 0 10 files changed, 62 insertions(+), 47 deletions(-) create mode 100644 windows/deployment/do/images/mcc-img-metrics.PNG create mode 100644 windows/deployment/do/mcc-version-history.md diff --git a/windows/deployment/do/images/mcc-img-metrics.PNG b/windows/deployment/do/images/mcc-img-metrics.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1ca9078f3e5c1ad49781def6215b8a0bebbf857b GIT binary patch literal 41210 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 yUyJwIeWmIA%f|qh_1_#7AN~)7BYhkI literal 0 HcmV?d00001 diff --git a/windows/deployment/do/mcc-isp-cache-node-configuration.md b/windows/deployment/do/mcc-isp-cache-node-configuration.md index 623b883947..fb900aeba5 100644 --- a/windows/deployment/do/mcc-isp-cache-node-configuration.md +++ b/windows/deployment/do/mcc-isp-cache-node-configuration.md @@ -2,15 +2,27 @@ All cache node configuration will take place within Azure portal. This article outlines all of the settings that you will be able to configure. +## Settings + | Field Name | Expected Value| Description | | -- | --- | --- | | **Cache node name** | Alphanumeric string that contains no spaces | The name of the cache node. You may choose names based on location like Seattle-1. This name must be unique and can't be changed later. | | **Server IP address** | IPv4 address | IP address of your MCC server. This address is used to route end-user devices in your network to the server for Microsoft content downloads. The IP address must be publicly accessible. | | **Max allowable egress (Mbps)** | Integer in Mbps | The maximum egress (Mbps) of your MCC based on the specifications of your hardware. For example, 10,000 Mbps.| | **Enable cache node** | Enable or Disable | You can choose to enable or disable a cache node at any time. | -| **Cache drive** | File path string | Up to 9 drives can be configured for each cache node to configure cache storage. Enter the file path to each drive. | -| **Cache drive size in gigabytes** | Integer in GB | Set the size of each drive configured for the cache node. | -| **Address range/CIDR blocks** | IPv4 CIDR notation | The IP address range (CIDR blocks) that should be routed to the MCC server as a comma separated list. For example: 2.21.234.0/24, 3.22.235.0/24, 4.23.236.0/24 | -| **Neighbor ASN** | Integer ASN | When configuring BGP, enter the ASN(s) of your neighbors that you want to establish. | -| **Neighbor IP address** | Ipv4 address | When configuring BGP, enter the IP address(es) of neighbors that you want to establish. | + +## Storage + +| Field Name | Expected Value| Description | +| -- | --- | --- | +| **Cache drive** | File path string | Up to 9 drives can be configured for each cache node to configure cache storage. Enter the file path to each drive. For example: /dev/folder/ | +| **Cache drive size in gigabytes** | Integer in GB | Set the size of each drive configured for the cache node. | + +## Client routing + +| Field Name | Expected Value| Description | +| -- | --- | --- | +| **Manual touting - Address range/CIDR blocks** | IPv4 CIDR notation | The IP address range (CIDR blocks) that should be routed to the MCC server as a comma separated list. For example: 2.21.234.0/24, 3.22.235.0/24, 4.23.236.0/24 | +| **BGP - Neighbor ASN** | ASN | When configuring BGP, enter the ASN(s) of your neighbors that you want to establish. | +| **BGP - Neighbor IP address** | IPv4 address | When configuring BGP, enter the IP address(es) of neighbors that you want to establish. | diff --git a/windows/deployment/do/mcc-isp-client-routing.md b/windows/deployment/do/mcc-isp-client-routing.md index e8ff15ba53..30d4792a27 100644 --- a/windows/deployment/do/mcc-isp-client-routing.md +++ b/windows/deployment/do/mcc-isp-client-routing.md @@ -1,4 +1,4 @@ -# Client Routing (CIDR, BGP) +# Client Routing Before serving traffic to your customers, client routing configuration is needed. During the configuration of your cache node in Azure portal, you will be able to route your clients to your cache node. @@ -8,9 +8,9 @@ Once client routing and other settings are configured, your cache node will be a At this time, only IPv4 addresses are supported. IPv6 addresses are not supported. -### CIDR blocks +### Manual routing -CIDR blocks are comprised of IP prefixes (groups of IP addresses) that represent your customer base. You can manually upload a list of your CIDR blocks in Azure portal. +You can manually upload a list of your CIDR blocks in Azure portal to enable manual routing of your customers to your cache node. ### BGP routing diff --git a/windows/deployment/do/mcc-isp-configure-routing.md b/windows/deployment/do/mcc-isp-configure-routing.md index 6e928549e4..384d6d9d1a 100644 --- a/windows/deployment/do/mcc-isp-configure-routing.md +++ b/windows/deployment/do/mcc-isp-configure-routing.md @@ -27,11 +27,9 @@ All configuration routing takes place within the Azure Portal. There are two mai > [!NOTE] > With the BGP configuration, you're essentially setting up an iBGP neighbor in your public ASN. For example, when you initiate the BGP session from the router to the cache node, you would use your own ASN. -a. Make sure there aren't any firewall rules blocking this connection. -b. Verify that the BGP connection has been established and that you're advertising routes to the MCC. -c. Wait five minutes to refresh the cache node page in the Azure portal to see the BGP routes. +> [!NOTE] +> Make sure there aren't any firewall rules blocking this connection. -1. If there are errors: - - Inspect the installer logs, which are in the following path: `/etc/mccresourcecreation/` - - For more information, see [Troubleshoot your IoT Edge device](/azure/iot-edge/troubleshoot). +To verify that BGP has been configured properly and that Microsoft Connected Cache services are receiving the route advertisements, wait about five minutes before refreshing cache node settings page and view the BGP routes received. +If after five minutes, you don't see traffic, navigate to [Support and Troubleshooting](mcc-isp-support.md) for more information. diff --git a/windows/deployment/do/mcc-isp-monitor.md b/windows/deployment/do/mcc-isp-monitor.md index 010e84009f..85b3f2bbc1 100644 --- a/windows/deployment/do/mcc-isp-monitor.md +++ b/windows/deployment/do/mcc-isp-monitor.md @@ -3,21 +3,27 @@ ## Metrics Within Azure portal, there are a number of metrics that are available to monitor cache node health and performance. -### Available Metrics - - **Cache Efficiency**: Cache efficiency is defined as the total cache hit bytes divided by all bytes requested. The higher this value (0 - 100%), the more efficient the cache node is. - - - **Healthy nodes**: The number of cache nodes that are reporting as healthy - - **Unhealthy nodes**: The number of cache nodes that are reporting as unhealthy - - **Maximum in**: The maximum egress (in Gbps) of inbound traffic - - **Maximum out**: The maximum egress (in Gbps) of outbound traffic - - **Average in**: The average egress (in Gbps) of inbound traffic - - **Average out**: The average egress (in Gbps) of outbound traffic - -### Viewing your metrics +### Monitoring your metrics To view the metrics associated with your cache nodes, navigate to the **Overview** >> **Monitoring** tab within Azure portal. -[[ include screenshot of an example view]] +:::image type="content" source="images/mcc-isp-metrics.png" alt-text="Screenshot of the Azure portal displaying the metrics view in the Overview tab"::: You can choose to monitor the health and performance of all cache nodes or one by one by using the dropdown menu. The **Egress bits per second** graph shows your inbound and outbound traffic of your cache nodes over time. You can change the time range (1 hour, 12 hours, 1 day, 7 days, 14 days, and 30 days) by selecting the time range of choice on the top bar. If you are unable to view metrics for your cache node, it may be that your cache node is unhealthy, inactive, or hasn't been fully configured. + +### Available Metrics + +Within Azure portal, you are able to build your custom metrics using the following available metrics: + +| Metric name | Description | +| -- | ---- | +| **Cache Efficiency** | Cache efficiency is defined as the total cache hit bytes divided by all bytes requested. The higher this value (0 - 100%), the more efficient the cache node is. | +| **Healthy nodes** | The number of cache nodes that are reporting as healthy| +| **Unhealthy nodes**| The number of cache nodes that are reporting as unhealthy| +| **Maximum in**| The maximum egress (in Gbps) of inbound traffic| +| **Maximum out**| The maximum egress (in Gbps) of outbound traffic| +| **Average in**| The average egress (in Gbps) of inbound traffic| +| **Average out**| The average egress (in Gbps) of outbound traffic| + +To learn more about how to build your custom metrics, visit [Azure Monitor](https://docs.microsoft.com/en-us/azure/azure-monitor/essentials/data-platform-metrics) for details. \ No newline at end of file diff --git a/windows/deployment/do/mcc-isp-uninstall.md b/windows/deployment/do/mcc-isp-uninstall.md index 1b563f5fd7..772887715f 100644 --- a/windows/deployment/do/mcc-isp-uninstall.md +++ b/windows/deployment/do/mcc-isp-uninstall.md @@ -12,9 +12,6 @@ Within Azure portal, navigate to **Cache Nodes**, then select the cache node you ## Run the uninstall script to cleanly remove MCC from your server In the installer zip file, you'll find the file **uninstallmcc.sh**. This script uninstalls MCC and all the related components. Only run it if you're facing issues with MCC installation. -> [!WARNING] -> Be cautious before running this script. It will also erase existing IoT workflows in this VM. - The **uninstallmcc.sh** script removes the following components: - IoT Edge diff --git a/windows/deployment/do/mcc-isp-update.md b/windows/deployment/do/mcc-isp-update.md index 02a1de7874..6b2ddaccf3 100644 --- a/windows/deployment/do/mcc-isp-update.md +++ b/windows/deployment/do/mcc-isp-update.md @@ -2,6 +2,6 @@ Microsoft will release updates for MCC periodically to improve performance, functionality, and security. Updates will not require any action from the customer. Instead, when an update is available, your cache node will automatically update during low traffic hours with minimal to no impact to your end customers. -To view which version your cache nodes are currently on, [[*********]]. +To view which version your cache nodes are currently on, navigate to the **Cache nodes** tab to view the versions in the list view. -To view update release notes, visit our Tech Community page. \ No newline at end of file +To view update release notes, visit [Version History](mcc-version-history.md). \ No newline at end of file diff --git a/windows/deployment/do/mcc-isp-verify-cache-node.md b/windows/deployment/do/mcc-isp-verify-cache-node.md index 32088f271f..b855ca73d2 100644 --- a/windows/deployment/do/mcc-isp-verify-cache-node.md +++ b/windows/deployment/do/mcc-isp-verify-cache-node.md @@ -2,11 +2,11 @@ ### Verify functionality on Azure portal -Log into Azure portal and navigate to the Overview page. Select the **Monitoring** tab to verify the functionality of your server. If you see **All systems go** for your cache node, your server is successfully deployed and running. If you see **Error detected** for your cache node or other warning messages, select the "Diagnose and Solve" link to troubleshoot and resolve the issue. +Log into Azure portal and navigate to the Overview page. Select the **Monitoring** tab to verify the functionality of your server(s) by validating the number of healthy nodes shown. If you see any **Unhealthy nodes**, select the "Diagnose and Solve" link to troubleshoot and resolve the issue. ### Verify functionality on the server -It can take a few minutes for the container to deploy. +It can take a few minutes for the container to deploy after you've saved the configuration. To validate a properly functioning MCC, run the following command in the terminal of the cache server or any device in the network. Replace `` with the IP address of the cache server. diff --git a/windows/deployment/do/mcc-traffic-estimation.md b/windows/deployment/do/mcc-traffic-estimation.md index e3f36ae510..4fd6160ab6 100644 --- a/windows/deployment/do/mcc-traffic-estimation.md +++ b/windows/deployment/do/mcc-traffic-estimation.md @@ -1,6 +1,6 @@ # Traffic Estimation -During the sign up process, Microsoft will provide you with a traffic estimation based on your ASN(s). We make estimations based on our predictions on historical data about Microsoft content download volume. We will use these estimations to recommend the right hardware for you to deploy your cache node on. You can view these recommendations within the Azure portal. +During the sign up process, Microsoft will provide you with a traffic estimation based on your ASN(s). We make estimations based on our predictions on historical data about Microsoft content download volume. We will use these estimations to recommend hardware or VM configurations. You can view these recommendations within the Azure portal. Note that we make these estimations based on the Microsoft content types that Microsoft Connected Cache serves. To learn more about the types of content that are supported, see [Delivery Optimization and Microsoft Connected Cache content endpoints](). @@ -8,28 +8,30 @@ Note that we make these estimations based on the Microsoft content types that Mi To make sure you are maximizing the performance of your cache node, please note the following: -### Drive performance +### OS requirements -The maximum number of disks supported is 9. When configuring your drives, we recommend SSD drives as cache read speed of SSD is superior to HDD. In addition, using multiple disks is recommended to improve cache performance. - -RAID disk configurations are discouraged as cache performance will be impacted. If using RAID disk configurations, ensure striping. +The MCC module is optimized for Ubuntu 20.04 LTS. Install Ubuntu 20.04 LTS on a physical server or VM of your choice. ### NIC requirements - Multiple NICs on a single MCC instance are supported using a _link aggregated_ configuration. - 10 Gbps NIC is the minimum speed recommended, but any NIC is supported. -### Sizing recommendations +### Drive performance -The MCC module is optimized for Ubuntu 20.04 LTS. Install Ubuntu 20.04 LTS on a physical server or VM of your choice. The following recommended configuration can egress at a rate of 9 Gbps with a 10 Gbps NIC. +The maximum number of disks supported is 9. When configuring your drives, we recommend SSD drives as cache read speed of SSD is superior to HDD. In addition, using multiple disks is recommended to improve cache performance. -| Component | Minimum | Recommended | -| -- | --- | --- | -| OS | Ubuntu 20.04 LTS VM or physical server | Ubuntu 20.04 LTS VM or physical server (preferred) | -| NIC | 10 Gbps| at least 10 Gbps | -| Disk | SSD
1 drive
2 TB each |SSD
2-4 drives
at least 2 TB each | -| Memory | 8 GB | 32 GB or greater | -| Cores | 4 | 8 or more | +RAID disk configurations are discouraged as cache performance will be impacted. If using RAID disk configurations, ensure striping. + +### Hardware configuration example + +There are many hardware configurations that suit Microsoft Connected Cache. As an example, below is the hardware configuration of a customer who is able to egress 40 Gbps of traffic. + +**Dell PowerEdge R330** +- 2 x Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz , total 32core +- 48GB, Micron Technology 18ASF1G72PDZ-2G1A1, Speed: 2133 MT/s +- 4 - Transcend SSD230s 1TB SATA Drives +- Intel Corporation Ethernet 10G 2P X520 Adapter (Link Aggregated) ### Virtual Machines diff --git a/windows/deployment/do/mcc-version-history.md b/windows/deployment/do/mcc-version-history.md new file mode 100644 index 0000000000..e69de29bb2