背景情報
今日のデータ駆動型のビジネス環境において、Tair (Redis OSS-compatible)は、その優れたパフォーマンスと柔軟性のおかげで、多くの企業の重要なインフラストラクチャの中心的なコンポーネントになりました。 Tair (Redis OSS-compatible)は、キャッシュ、セッション管理、メッセージキューなど、データを大量に消費し、レイテンシを重視するさまざまなシナリオで広く使用されています。 ビジネスの継続性とユーザーエクスペリエンスの向上に大きく貢献します。 しかし、大規模なマーケティングキャンペーン、製品の発売、または高トラフィックを引き付ける他の計画されたイベントの間、標準的な帯域幅構成は、かなりの課題に直面する可能性がある。 このような重大な時期には、最小限の待ち時間でさえ、企業の市場への悪影響やユーザー保持の損失につながる可能性があります。
上記の問題を解決するために、CloudOps Orchestration Service (OOS) は、Tair (Redis OSS-compatible)インスタンスの一時的な帯域幅へのスケジュールアップグレードを可能にする機能を提供します。 OOSを使用して、帯域幅の一時的なアップグレードまたはEIPの一時的な帯域幅のアップグレードをスケジュールすることもできます。 この機能により、ビジネス負荷予測に基づいて、スケジュールされた帯域幅アップグレードを計画および実行できます。 これにより、重要な瞬間にアプリケーションのパフォーマンスと安定性が保証され、コストが最適化されます。
主な機能
スケジュールされたトリガー: 特定の日付と時間をプリセットして、ビジネス要件に基づいて帯域幅のアップグレードを自動的にトリガーできます。
自動復帰: 指定されたアップグレード期間が完了すると、帯域幅は自動的に元の値に戻ります。 これにより、オフピーク時のコスト無駄を効果的に防ぎます。
コスト最適化: 帯域幅はオンデマンドでのみアップグレードされるため、企業はサービス品質を維持しながら運用コストを大幅に削減できます。
合理化された操作: ユーザーフレンドリーなユーザーインターフェイス (UI) 設計により、わずか数ステップで帯域幅のアップグレードプロセスを完了できます。
シナリオ
Eコマースプラットフォームのプロモーション: 主要なプロモーションイベント中に帯域幅のアップグレードをスケジュールして、ユーザートラフィックの急増に対処します。
大規模なゲームアップデート: 新しいゲームバージョンのリリースまたはメジャーアップデート中に帯域幅をアップグレードして、プレイヤーがシームレスにダウンロードできるようにします。
休日のトラフィックスパイク: 休暇中に予想される訪問数の急増に対応するために、帯域幅の拡張を事前に計画します。
データ集約型タスク: 大規模なデータ移行や分析操作などのタスクの完了を促進するために、帯域幅を一時的に増やします。
手順
OOS コンソール にログインします。
左側のナビゲーションウィンドウで、[自動タスク]> [パブリックテンプレート] を選択します。 [パブリックテンプレート] ページで、検索ボックスに [ACS-Redis-ScheduleToUpgradeInstanceBandwidth] と入力します。 ACS-Redis-ScheduleToUpgradeInstanceBandwidthテンプレートを見つけて、[実行の作成] をクリックします。
[タスクの作成] ページで、[次のステップ: パラメーター設定] をクリックします。 [パラメーター設定] ステップで、[Timer Trigger configure] セクションで [TimerTrigger] パラメーターを設定します。
TimerTriggerパラメーターは、[今すぐ実行] 、[指定された時刻に1回実行] 、または [定期的に実行] に設定できます。 [今すぐ実行] を選択した場合、スケジュールされた帯域幅アップグレードタスクは作成後すぐに実行されます。 [指定した時間に1回実行] を選択した場合、スケジュールされた帯域幅アップグレードタスクは、指定した時点で1回だけ実行されます。 [定期的に実行] を選択した場合、スケジュールされた帯域幅アップグレードタスクは、スケジュールされた時間に基づいて定期的に実行されます。 たとえば、スケジュールされた帯域幅アップグレードタスクを1時間ごとに実行するように指定できます。
[インスタンスの選択] セクションで、Tair (Redis OSS-compatible)インスタンスが存在するリージョンを指定します。 TargetInstanceの次のいずれかのオプションを選択して、管理する1つ以上のTair (Redis OSS-compatible)インスタンスを検索します。手動でインスタンスを選択し、インスタンスタグを指定し、リソースグループを指定し、CSVファイルをアップロードし、すべてを選択します。 帯域幅およびDurationHourパラメーターを設定します。 最小帯域幅アップグレード期間は1時間です。 [コントロールオプション] セクションで、Tair (Redis OSS-compatible)インスタンスにアクセスできるロールを選択し、[次のステップ: OK] をクリックします。 次に、次のステップで [作成] をクリックします。 これまで、Tair (Redis OSS-compatible)インスタンスの帯域幅アップグレードスケジュールタスクが作成されました。 指定された時間が経過すると、システムはTair (Redis OSS-compatible)インスタンスの帯域幅を自動的にアップグレードします。 アップグレード期間が完了すると、帯域幅は自動的に元の値に戻ります。
付録
実行フローチャート
実行プロセス全体を次の図に示します。
次の図は、Tair (Redis OSS-compatible)インスタンスの帯域幅をアップグレードするプロセスを示しています。
テンプレート
次のセクションでは、この例で使用するACS-Redis-ScheduleToUpgradeInstanceBandwidthテンプレートの内容について説明します。
FormatVersion: OOS-2019-06-01
Description:
en: Scheduled upgrade of the temporary bandwidth of a Redis instance
name-en: ACS-Redis-ScheduleToUpgradeInstanceBandwidth
Parameters:
RegionId:
Type: String
Label:
en: RegionId
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
Targets:
Type: Json
Label:
en: TargetInstance
AssociationProperty: Targets
AssociationPropertyMetadata:
ResourceType: ALIYUN::Redis::Instance
RegionId: regionId
TimerTrigger:
Type: Json
Label:
en: TimerTrigger
AssociationProperty: ALIYUN::OOS::Component::TimerTrigger
AssociationPropertyMetadata:
MinuteInterval: 30
Bandwidth:
Type: Number
Label:
en: Bandwidth
Description:
en: Unit:MB/s. The maximum incoming bandwidth is 6 times the default bandwidth of this instance specification, but the upper limit is 192MB/s. For example, the default bandwidth of an instance is 10 MB/s, and the value range of this parameter is 0~60.
MinValue: 1
MaxValue: 192
DurationHour:
Label:
en: DurationHour
Description:
en: Unit:Hour. The bandwidth upgrade should last at least 1 hours
Type: Number
MinValue: 1
Default: 1
RateControl:
Label:
en: RateControl
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 0
Concurrency: 10
OOSAssumeRole:
Label:
en: OOSAssumeRole
Type: String
Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: TimerTrigger
Action: ACS::TimerTrigger
Description:
en: Triggers a task as scheduled by specifying type and expression
Properties:
Type:
Fn::Select:
- type
- '{{ TimerTrigger }}'
Expression:
Fn::Select:
- expression
- '{{ TimerTrigger }}'
EndDate:
Fn::Select:
- endDate
- '{{ TimerTrigger }}'
TimeZone:
Fn::Select:
- timeZone
- '{{ TimerTrigger }}'
- Name: GetInstance
Description:
en: Get the redis instances
Action: ACS::SelectTargets
Properties:
ResourceType: ALIYUN::Redis::Instance
RegionId: '{{ RegionId }}'
Filters:
- '{{ Targets }}'
Outputs:
InstanceIds:
Type: List
ValueSelector: Instances.Instance[].InstanceId
- Name: UpgradeRedisInstanceBandwidth
Action: ACS::Redis::UpgradeRedisInstanceBandwidth
Description:
en: Modify redis instance bandwidth
Properties:
RegionId: '{{ RegionId }}'
InstanceId: '{{ ACS::TaskLoopItem }}'
Bandwidth: '{{ Bandwidth }}'
DurationHour: '{{ DurationHour }}'
Loop:
RateControl: '{{ RateControl }}'
Items: '{{ GetInstance.InstanceIds }}'
Metadata:
ALIYUN::OOS::Interface:
ParameterGroups:
- Parameters:
- TimerTrigger
Label:
default:
en: Timer Trigger Configure
- Parameters:
- RegionId
- Targets
- Bandwidth
- DurationHour
Label:
default:
en: Select Instances
- Parameters:
- RateControl
- OOSAssumeRole
Label:
default:
en: Control Options
次のセクションでは、Action: ACS::Redis::UpgradeRedisInstanceBandwidthの内容について説明します。
FormatVersion: OOS-2019-06-01
Description:
en: Upgrade of the temporary bandwidth of a Redis instance
name-en: ACS::Redis::UpgradeRedisInstanceBandwidth
Parameters:
RegionId:
Type: String
Label:
en: RegionId
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
InstanceId:
Type: String
Label:
en: InstanceId
Bandwidth:
Type: Number
Label:
en: Bandwidth
Description:
en: Unit:MB/s. The maximum incoming bandwidth is 6 times the default bandwidth of this instance specification, but the upper limit is 192MB/s. For example, the default bandwidth of an instance is 10 MB/s, and the value range of this parameter is 0~60.
MinValue: 1
MaxValue: 192
DurationHour:
Label:
en: DurationHour
Description:
en: Unit:Hour. The bandwidth upgrade should last at least 1 hours
Type: Number
MinValue: 1
Default: 1
Tasks:
- Name: UpgradeRedisInstanceBandwidth
Action: ACS::ExecuteApi
Description:
en: Upgrade redis instance bandwidth
Properties:
Service: r-kvstore
API: EnableAdditionalBandwidth
Parameters:
RegionId: '{{ RegionId }}'
InstanceId: '{{ InstanceId }}'
Bandwidth: '{{ Bandwidth }}'
AutoPay: true
- Name: DurationHour
Action: ACS::Sleep
Description:
en: Bandwidth upgrade duration
Properties:
Duration: '{{ DurationHour }}H'
- Name: RecoverRedisInstanceBandwidth
Action: ACS::ExecuteAPI
Description:
en: Recover redis instance bandwidth
Properties:
Service: r-kvstore
API: EnableAdditionalBandwidth
Parameters:
RegionId: '{{ RegionId }}'
InstanceId: '{{ InstanceId }}'
Bandwidth: 0
AutoPay: true