Skip to content

Commit

Permalink
Merge pull request #7035 from wildmanonline/rc-v1.336.0
Browse files Browse the repository at this point in the history
[Release Candidate] v1.336.0
  • Loading branch information
wildmanonline authored Jul 8, 2024
2 parents c43b1f9 + a85bfb6 commit 3330394
Show file tree
Hide file tree
Showing 59 changed files with 131 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ To avoid an unexpected bill make sure to delete this Linode Compute Instance onc

1. Log in to the [Linode Cloud Manager](https://login.linode.com/login) and select the **Marketplace** link from the left navigation menu. This displays the Linode Create page with the Marketplace tab pre-selected.

You can read [An Overview of the Linode Cloud Manager](/docs/guides/an-overview-of-the-cloud-manager/) to learn more about features and services available in Linode’s Cloud Manager.
You can read [An Overview of the Linode Cloud Manager](/docs/products/tools/cloud-manager/guides/an-overview-of-the-cloud-manager/) to learn more about features and services available in Linode’s Cloud Manager.

1. Use the **Select an App** field to search for the Node.js Marketplace App and select it.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
slug: iot-firmware-upgrades-with-obj-and-cdn
title: "IoT Firmware Upgrades with Object Storage and Akamai CDN"
description: "This guide discusses using Object Storage and Akamai CDN to distribute IoT firmware upgrades."
authors: ["John Dutton"]
contributors: ["John Dutton"]
published: 2024-07-08
keywords: ['s3', 'object storage', 'iot', 'internet of things', 'firmware']
license: '[CC BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0)'
---

## Overview
As more and more consumer electronics join the Internet of Things (IoT), the need to deliver feature and security firmware updates to these devices becomes more critical for IoT device manufacturers. One of the main aspects of delivery manufacturers need to plan for is how much egress data these systems will use. At scale, the price of keeping both consumers and the business happy and secure can be enormous. Using Linode Object Storage on Akamai Connected Cloud as an origin for this data, and connecting that service to Akamai CDN, can provide a huge cost savings over other competing hyperscalers.

## Firmware Update Workflow
1. A manufacturer uploads a new firmware package to an Object Storage bucket.
1. A client requests new firmware.
1. Firmware is served to the client from the Object Storage bucket via Akamai CDN.

## Overcoming Challenges

### Challenge: Moving Away from Amazon EFS

An IoT manufacturer found themselves struggling to send OS and firmware updates to customer devices with AWS’ high egress costs. Amazon Elastic File Service (EFS) allows customers to upload and share files with EC2 instances without the need for upgrading or migrating storage volumes, all while preserving file system access to those files. However, this can come at a steep cost.

**Solution**: The open source project s3fs allows a virtual machine to mount any Object Storage bucket, so Linode Object Storage buckets can be mounted to the EC2 Volume using the s3fs utility. This allowed the IoT manufacturer's developers to remove their dependency on Amazon EFS while preserving network file system access and cutting costs.

### Challenge: Cut Egress Costs

Another challenge the IoT manufacturer encountered was supporting more IoT devices worldwide. This resulted in the scale of their firmware delivery service growing in both storage and delivery costs. The IoT manufacturer was looking for a service that could help them save money on egress and improve their bottom line.

**Solution**: Because Linode Object Storage on Akamai Connected Cloud has much lower egress rates than AWS’ offerings, and because it can be set as an origin for Akamai CDN, the IoT manufacturer was not only able to keep file system access to firmware objects, but decrease egress costs by 90%.

## Architecture

This solution creates a streamlined delivery pipeline that allows developers to update firmware quickly across a fleet of customer devices at a reduced cost.

![A reference architecture depicting IoT firmware upgrade functionality](iot-firmware-upgrade-reference-architecture.svg)

### Systems and Components

- **Linode Object Storage:** An S3 compatible Object Storage bucket

- **Linode VM:** A Dedicated 16GB Linode virtual machine

- **Akamai CDN:** A global CDN running on Akamai’s industry leading backbone

- **AWS Elastic Load Balancer (ELB):** This load balancer splits traffic between the firmware check module that verifies clients have the right request, as well as the EC2 group that the main Object Storage bucket is mounted to.

- **AWS Direct Connect:** A dedicated connection from the IoT manufacturer developers to the ELB

- **AWS EFS:** Elastic file storage that provides file system access to uploaded files

- **Amazon Relational Database (RDS):** A database used to verify firmware version information

### Steps

1. **Developers upload new firmware.** The IoT manufacturer developers use Direct Connect to easily send the firmware to an Elastic Load Balancer (ELB).

1. **Pass firmware to an EC2 instance.** The ELB transfers the new firmware to an EC2 instance, where it can be validated by a version check module.

1. **Transfer checked firmware to Object Storage.** Mounted to an EC2 Group using s3fs, a Linode Object Storage bucket is used to store the new firmware.

1. **Sync new firmware to backup bucket.** Using rclone, an open source application, on a Dedicated 16GB Linode, the new firmware is synced to a backup Object Storage bucket. Rclone intelligently only synchronizes new and changed firmware, reducing needless operations.

1. **System returns requested firmware to the IoT device.** Using Akamai CDN with its origin as the Object Storage bucket, the requested or required firmware is delivered to the IoT device.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.

This file was deleted.

Binary file not shown.
2 changes: 1 addition & 1 deletion docs/products/compute/compute-instances/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
title: Compute Instances
title_meta: "Compute Instance Product Documentation"
description: "Host your workloads on Linode's secure and reliable cloud infrastructure using Compute Instances, versatile Linux-based virtual machines."
published: 2023-01-18
modified: 2024-05-21
tab_group_main:
is_root: true
title: Overview
weight: 10
cascade:
date: 2023-01-18
product_description: "Linux virtual machines equipped with a tailored set of resources designed to run any cloud-based workload."
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: Developers
title_meta: "Developer Resources for Compute Instances"
description: "Easily manage Compute Instances with developer tools like the Linode API or CLI as well as third party tools and integrations."
published: 2023-01-18
tab_group_main:
weight: 50
aliases: ['/products/compute/shared-linodes/developers/','/products/compute/shared-cpu/developers/','/products/compute/gpu/developers/','/products/compute/dedicated-cpu/developers/','/products/compute/high-memory/developers/']
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: Get Started
title_meta: "Getting Started with Compute Instances"
description: "Learn how to quickly start using Compute Instances on the Linode Platform."
published: 2023-01-18
tab_group_main:
weight: 20
aliases: ['/products/compute/shared-linodes/get-started/','/products/compute/shared-cpu/get-started/','/products/compute/dedicated-cpu/get-started/','/products/compute/gpu/get-started/','/products/compute/high-memory/get-started/']
Expand Down
1 change: 1 addition & 0 deletions docs/products/compute/compute-instances/guides/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: Guides
title_meta: "Guides and Tutorials for Compute Instances"
description: "A collection of guides to help you start deploying Compute Instances and using them to host your web applications and Cloud workloads"
published: 2023-01-18
modified: 2024-06-20
tab_group_main:
weight: 30
Expand Down
4 changes: 2 additions & 2 deletions docs/products/compute/compute-instances/guides/ipv6/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "An Overview of IPv6 on Linode"
description: "This guide is a brief overview of IPv6 support on Linode, including how to find your IPv6 address, requesting additional IPs, and managing IPs via the Cloud Manager."
published: 2011-05-03
modified: 2022-11-29
modified: 2024-07-08
keywords: ["ipv6 networking", "IP configuration"]
aliases: ['/networking/an-overview-of-ipv6-on-linode/','/networking/how-to-enable-native-ipv6-on-linux/','/networking/native-ipv6-networking/','/networking/linode-network/an-overview-of-ipv6-on-linode/','/guides/an-overview-of-ipv6-on-linode/']
external_resources:
Expand Down Expand Up @@ -85,7 +85,7 @@ Configuring a `/64` or `/56` routed range requires you to [disable Network Helpe
{{< /note >}}

- `/64` **routed range** *(18,446,744,073,709,551,616 addresses)*: This is the most common range provided to our customers and sufficient for most applications that require additional IPv6 addresses.
- `/56` **routed range** *(4,722,366,482,869,645,213,696 addresses)*: These larger ranges are typically only required by specialized systems or networking applications. When requesting a `/56` range, please provided information regarding your use case.
- `/56` **routed range** *(4,722,366,482,869,645,213,696 addresses)*: These larger ranges are typically only required by specialized systems or networking applications.

### IPv6 Pools

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,20 @@
title: "Work with Placement Groups"
description: "Learn how to group your compute instances to best meet your delivery model."
published: 2024-06-20
modified: 2024-06-26
keywords: ["placement-group", "affinity", "compliance"]
---

When you deploy several compute instances in an Akamai data center ("region"), they're allocated to physical machines. This allocation varies based on several factors, including the compute instance plan and availability for that plan sizes. However, you may want your compute instances in specific physical locations, to best support your need. You may want them close together, even on the same host to speed up performance. Or, you may want to disperse them across several hosts to support high availability. Placement groups let you determine this physical location to meet either of these models.
When you deploy several compute instances in an Akamai data center ("region"), they're allocated to physical machines. This allocation varies based on several factors, including the compute instance plan and availability for that plan's sizes. However, you may want your compute instances in specific physical locations, to best support your need:

- You may want them close together, even on the same host to speed up performance.
- You may want to disperse them across several hosts to support high availability.

Placement groups let you determine this physical location to meet either of these models.

## Overview

The Placement Groups service gives you a convenient way to set up groups of your compute instances, using Cloud Manager, API operations, or our CLI. Create a new placement group in a supported region and add new or existing compute instances from that region to your group. With the new group created, we physically move your compute instances into it, based on your desired model.
The Placement Groups service gives you a convenient way to set up groups of your compute instances, using our various tools. Create a new placement group in a supported region and add new or existing compute instances from that region to your group. With the new group created, we physically move your compute instances into it, based on your desired model.

## Availability

Expand All @@ -25,23 +31,27 @@ Placement Groups is in limited availability. Throughout this phase, we expect to

## Affinity, enforcement, and compliance

To distribute your compute instances in a placement group, we use the industry-recognized affinity standard. Pick from one of two types to serve as your "preferred container" type for your placement group:
To distribute your compute instances in a placement group, we use the industry-recognized affinity standard. This standard supports two "preferred container" types:

- **Affinity**. Compute instances are physically close together, possibly on the same host. This preferred container type is best for applications that require performance over availability.

- **Affinity**. Your compute instances are physically close together, possibly on the same host. Set this as your preferred container if your application requirements value performance over availability.
- **Anti-affinity**. Compute instances are placed in separate fault domains, but they're still in the same region. This preferred container type better supports a high-availability model.

- **Anti-affinity**. Your compute instances are placed in separate fault domains, but they're still in the same region. Use this preferred container to better support a high-availability model.
{{< note >}}
During the limited availability phase, only the **Anti-affinity** preferred container type is supported.
{{< /note >}}

In addition to selecting the Affinity Type, you select how it's enforced when you add more Compute Instances to the placement group.
Placement groups also enforce the use of the preferred container type using one of two methods:

- **Strict (Best practice)**. You can't add more compute instances to your placement group if your preferred container lacks capacity or is unavailable. For example, let's assume you've set **Anti-affinity** as your affinity type. If you try to add a compute instance that's on the same host, or there's no capacity outside that host in the region, you get an error and can't add the compute instance. This helps you keep your placement group compliant, because you can only pick compute instances that fit your desired model.
- **Strict (Best practice)**. You can't add more compute instances to your placement group if the preferred container lacks capacity or is unavailable. For example, let's assume the preferred container type is **Anti-affinity**. If you try to add a compute instance that's on the same host, or there's no capacity outside that host in the region, you get an error and can't add the compute instance. This helps you keep your placement group compliant, because you can only pick compute instances that fit the preferred container type.

- **Flexible**. You can add more compute instances to your placement group even if they're outside your affinity type's preferred container. However, if you add one and it violates your affinity type, the placement group becomes non-compliant. Once the necessary capacity is available in the data center, we physically move the compute instance for you to fit your affinity type's preferred container and make it compliant again. This can work for you if you know you need to add more compute instances to your group in the future.
- **Flexible**. You can add more compute instances to your placement group even if they're outside the preferred container type. However, if you add one and it violates the preferred container type, the placement group becomes non-compliant. Once the necessary capacity is available in the region, we physically move the compute instance for you to fit your preferred container type and make it compliant again. This can work for you if you know you need to add more compute instances in the future.

### Fix Non-compliance

If a placement group becomes non-compliant, we're alerted and we'll bring it back into compliance as soon as possible. Non-compliance can only be fixed by Akamai staff. **_You can't fix it yourself_**.

By design, a Strict placement group can't be made non-compliant when simply creating it or managing its Compute Instances. In rare cases, non-compliance can occur if we need to fail-over or migrate your Compute Instances for maintenance. Because of this, fixing non-compliance for Strict placement groups is prioritized over Flexible groups.
By design, a Strict placement group can't be made non-compliant when simply creating it or managing its compute instances. In rare cases, non-compliance can occur if we need to fail-over or migrate your compute instances for maintenance. Fixing non-compliance for Strict placement groups is prioritized over Flexible groups.

## Create a placement group

Expand All @@ -66,7 +76,7 @@ Make sure you understand how placement groups work. Have a look at [Affinity, en

{{< note >}}
- During the limited availability phase, only **Anti-affinity** is available for Affinity Type.
- Once you create your placement group, you *can't change its Affinity Type Enforcement*.
- Once you create your placement group, you *can't change* its Affinity Type Enforcement.
{{< /note >}}

3. When you're ready, click **Create Placement Group**. A summary of your group is revealed.
Expand Down
1 change: 1 addition & 0 deletions docs/products/compute/compute-instances/resources/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
title: Resources
title_meta: "Resources for Compute Instances"
description: "Resources and other information related to Compute Instances, including videos, blog posts, community posts, customer stories, and press releases."
published: 2023-01-18
tab_group_main:
weight: 40
aliases: ['/products/compute/shared-linodes/resources/','/products/compute/shared-cpu/resources/','/products/compute/gpu/resources/','/products/compute/dedicated-cpu/resources/']
Expand Down
8 changes: 2 additions & 6 deletions docs/products/compute/kubernetes/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Linode Kubernetes Engine
title_meta: "Linode Kubernetes Engine (LKE) Product Documentation"
description: "Linode Kubernetes Engine is a managed Kubernetes service that offers automatic backup and recovery and third party integration with popular k8s-related tools."
published: 2020-06-02
modified: 2023-09-21
modified: 2024-07-05
linkTitle: Kubernetes
tab_group_main:
is_root: true
Expand Down Expand Up @@ -33,11 +33,7 @@ The basic control plane infrastructure on LKE clusters is provided at no additio
## Technical Specifications

- Equipped with a fully-managed control plane at no cost. While the control plane is fully-managed, the user is responsible for managing their deployment configuration and applications.
- Compute Instance plans supported: Dedicated CPU, Shared CPU, High Memory
- Nodes per node pool: 1-100 nodes
- Memory per node: 4GB - 512GB
- SSD Storage per node: 50GB - 7200GB
- Transfer per node: 4-20TB
- Compute Instance plans supported: Dedicated CPU*, Shared CPU, High Memory, and Premium CPU (excluding the 512 GB size for both Dedicated CPU and Premium CPU). See the [Pricing](https://www.linode.com/pricing/) page for the compute resources included in each plan.
- 40 Gbps inbound network bandwidth
- Free inbound network transfer
- Provisioning and management through the [Cloud Manager](https://cloud.linode.com/), [Linode CLI](https://www.linode.com/products/cli/), or programmatically through the [Linode API](https://www.linode.com/products/linode-api/)
2 changes: 1 addition & 1 deletion docs/products/platform/get-started/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Linode's [Cloud Manager](https://cloud.linode.com/) is the primary gateway to ou

- [Help & Support](https://cloud.linode.com/support): Search through our guides, find answers on the Community Site, or open a ticket to reach our 24/7 award-winning [Support Team](https://www.linode.com/support-experience/).

For a full overview of the Cloud Manager and its core features, see the [Overview of the Cloud Manager](/docs/guides/an-overview-of-the-cloud-manager/) guide.
For a full overview of the Cloud Manager and its core features, see the [Overview of the Cloud Manager](/docs/products/tools/cloud-manager/guides/an-overview-of-the-cloud-manager/) guide.

## Create Your First Compute Instance

Expand Down
Loading

0 comments on commit 3330394

Please sign in to comment.