このトピックでは、Compute Nest で MySQL ソフトウェアパッケージを使用して、PrivateLink 接続機能をサポートするシングルテナントのフルマネージドサービスインスタンスを作成する方法について説明します。この例では、MySQL ソフトウェアパッケージを使用して、Elastic Compute Service (ECS) インスタンスと Server Load Balancer (SLB) インスタンスに MySQL をデプロイします。
概要
この例では、MySQL データベースが ECS インスタンスと SLB インスタンスにデプロイされ、PrivateLink 接続機能がデフォルトで有効になっています。顧客がサービスインスタンスをデプロイすると、サービスプロバイダーのアカウント内にデプロイされた MySQL データベースに内部ネットワーク経由で直接アクセスできます。サンプルサービスの GitHub リポジトリは mysql-managed-demo です。
この例では、サービスは自動的に作成され、約 3 分かかります。サービスは、[審査待ち] 状態になった後に作成されます。サービスは、次の手順で作成されます。
GitHub リポジトリに保存されている MySQL ソフトウェアパッケージを、ファイルタイプの Compute Nest デプロイメントパッケージとして公開します。
サービスを作成し、ファイルタイプのデプロイメントパッケージに関連付けます。
次の表に、サービスによって提供されるパラメーターセットを示します。
パラメーターセット | SLB インスタンスタイプ | ECS インスタンスタイプ | vCPU とメモリ | システムディスク | パブリック帯域幅 |
Basic Edition | slb.s1.small | ecs.c6.large | コンピューティング最適化 c6: 2 vCPU と 4 GiB | パフォーマンスレベル 0 (PL0) 企業向け SSD (ESSD): 200 GiB | 固定帯域幅: 1 Mbit/s |
Standard Edition | slb.s1.small | ecs.c6.xlarge | コンピューティング最適化 c6: 4 vCPU と 8 GiB | PL0 ESSD: 200 GiB | 固定帯域幅: 1 Mbit/s |
Advanced Edition | slb.s3.small | ecs.c6.2xlarge | コンピューティング最適化 c6: 8 vCPU と 16 GiB | PL0 ESSD: 200 GiB | 固定帯域幅: 1 Mbit/s |
デプロイメントアーキテクチャ
ECS インスタンスと SLB インスタンスがサービスインスタンス用にデプロイされ、ECS インスタンスが属するセキュリティグループはポート 3306 へのアクセスを許可します。エンドポイントはサービスインスタンス用に構成されます。
サービスの作成に関する課金
テスト用のサンプルサービスの作成には課金されません。サービスインスタンスの料金の詳細については、このトピックの「サービスインスタンスの課金」セクションをご参照ください。
RAM ユーザーに必要なポリシー
サービスは、ECS インスタンスや VPC などのリソースにアクセスする必要があります。Resource Access Management (RAM) ユーザーとしてサービスインスタンスを作成する前に、関連リソースに対する権限を RAM ユーザーに付与する必要があります。RAM ユーザーに権限を付与する方法の詳細については、「RAM ユーザーに権限を付与する」をご参照ください。
次の表に、RAM ユーザーに必要なポリシーを示します。
ポリシー | 説明 |
AliyunECSFullAccess | ECS に対する完全な権限。 |
AliyunVPCFullAccess | VPC に対する完全な権限。 |
AliyunROSFullAccess | Resource Orchestration Service (ROS) に対する完全な権限。 |
AliyunComputeNestUserFullAccess | Compute Nest に対する顧客の完全な権限。 |
AliyunComputeNestSupplierFullAccess | Compute Nest に対するサービスプロバイダーの完全な権限。 |
AliyunPrivateLinkFullAccess | PrivateLink に対する完全な権限。 |
サービスインスタンスの課金
課金項目:
選択された vCPU とメモリの仕様
システムディスクのタイプと容量
パブリック帯域幅
PrivateLink 接続
課金方法:
従量課金 (時間単位)
サブスクリプション
サービスインスタンスの作成時に、サービスインスタンスの推定コストがリアルタイムで表示されます。PrivateLink 接続の料金は、サービスインスタンスが作成され、PrivateLink 接続が確立された後に請求されます。詳細については、「課金の概要」をご参照ください。
サービスインスタンスのデプロイ
デプロイメントパラメーター
セクション | パラメーター | 説明 |
基本設定 | root および admin アカウントのパスワード | データベースへのログインに使用される root または admin アカウントのパスワード。パスワードは 8~32 文字で、英字、数字、および次の特殊文字を含めることができます: ! @ # $ % ^ & * - + = _ |
ネットワーク設定 | VSwitch 利用可能ゾーン | サービスプロバイダーのアカウント内でリソースが作成されるゾーン。 |
ネットワーク設定 | VPC ID | PrivateLink 接続の確立に使用される VPC。 |
ネットワーク設定 | セキュリティグループ | PrivateLink 接続の確立に使用されるセキュリティグループ。 |
ネットワーク設定 | vSwitch とゾーン | PrivateLink 接続の確立に使用されるゾーンと vSwitch。 |
プロシージャ
サービスプロバイダーから提供されたサービスインスタンスのデプロイ URL をクリックします。サービスインスタンスのデプロイページで、プロンプトに従ってパラメーターを設定します。
[ネットワーク設定] セクションでパラメーターを設定します。サービスインスタンスが作成されると、指定されたゾーンにエンドポイントが作成されます。
[次へ: 注文の確認] をクリックします。
サービスインスタンス情報と推定価格を確認し、サービス契約を読んで同意し、[今すぐ作成] をクリックします。サービスインスタンスのデプロイが開始されます。
デプロイが完了するまで待ちます。
サービスインスタンスを使用します。サービスインスタンスは PrivateLink 接続機能をサポートしています。内部ネットワーク経由で PrivateLink 接続を使用してサービスインスタンスにアクセスできます。PrivateLink の詳細については、「ベストプラクティス」をご参照ください。次の手順を実行して、内部ネットワーク経由でサービスインスタンスにアクセスします。
サービスインスタンスの詳細ページに移動します。[イントラネット] タブで、MySQL データベースへの接続に使用されるカスタムドメイン名、IP アドレス、またはゾーンドメイン名を取得します。カスタムドメイン名は、[サービスインスタンスの作成] ページで [カスタムドメイン名] をオンにした場合にのみ表示されます。
対応する vSwitch に ECS インスタンスを作成します。次に、MySQL クライアントをインストールします。
yum install mysql または apt install mysql-clientECS インスタンス上の MySQL クライアントを使用して、次のいずれかの方法で MySQL データベースに接続します。
カスタムドメイン名を使用します。
IP アドレスを使用します。
ゾーンドメイン名を使用します。
サービスの詳細
MySQL Community Edition のインストールパッケージは GitHub リポジトリに保存されます。サービスの作成中に、インストールパッケージは Compute Nest デプロイメントパッケージとして公開され、インストールコマンドは ROS テンプレートに書き込まれます。ROS テンプレートが実行されると、MySQL データベースは自動的にインストールされます。Compute Nest は、{{ computenest::file::MySQL }} プレースホルダーをファイルタイプのデプロイメントパッケージの HTTP URL に置き換えます。
wget '{{ computenest::file::MySQL }}' -O mysql-community-release-el6-5.noarch.rpm
rpm -ivh mysql-community-release-el6-5.noarch.rpm
yum repolist all | grep mysql
yum install mysql-community-server -yファイル
ファイル | 説明 |
config.yaml | サービス作成用の設定ファイル。computenest-cli はこの設定ファイルに基づいてサービスを作成します。 |
parameters.yaml | VpcId や VSwitchId など、サービスプロバイダーが設定するネットワークパラメーターを指定するファイル。この例では、このファイルはシングルテナントのフルマネージドサービスをデプロイするために必要なパラメーターを指定します。 |
artifact/mysql-community-release-el6-5.noarch.rpm | MySQL Community Edition のインストールパッケージ。サービスの作成中に、インストールパッケージは Compute Nest デプロイメントパッケージとして公開されます。 |
icons/service_logo.jpg | サービスのデフォルトのロゴ。 |
templates/parameters.yaml | 顧客が設定するパラメーターを定義するファイル。顧客が設定するパラメーターを指定するファイル。顧客は、シングルテナントのフルマネージドサービスに対して、いくつかのパラメーターを設定するだけで済みます。 |
templates/template.yaml | ROS テンプレートファイル。ROS はテンプレートに基づいてすべてのリソースを自動的に作成します。 |
templates/template.yaml ファイルには、次の 3 つのセクションが含まれています。
Parameters: 課金方法、インスタンスタイプ、インスタンスのパスワード、ゾーンなど、顧客が設定する必要のあるパラメーターを定義します。ZoneId: Type: String AssociationProperty: ALIYUN::ECS::Instance:ZoneId Label: en: VSwitch 利用可能ゾーン zh-cn: 可用区 # データベースへのログインに使用される root アカウントのパスワード。 Password: # このパラメーターをクエリすると、アスタリスク (*) のみが返されます。 NoEcho: true Type: String Description: en: 'データベースの root アカウントのパスワード。8~32 文字で、大文字と小文字の英字、数字、および特殊文字 (!@#$%^&*-+=_) を含める必要があります。' zh-cn: データベースの root アカウントのパスワード。長さ 8~32 文字で、大文字と小文字、数字、特殊文字 (!@#$%^&*-+=_) を含めることができます。 Label: en: ルートアカウントのパスワード zh-cn: データベースの root アカウントのパスワード ConstraintDescription: en: '8~32 文字で、大文字と小文字の英字、数字、および特殊文字 (!@#$%^&*-+=_) を含める必要があります。' zh-cn: 8~32 文字で、大文字と小文字、数字、特殊文字 (!@#$%^&*-+=_) を含めることができます。 MinLength: '8' MaxLength: '32' AssociationProperty: ALIYUN::ECS::Instance::Password # VPC ID。 VpcId: AssociationProperty: ALIYUN::ECS::VPC::VPCId Type: String Label: en: VPC ID zh-cn: VPC インスタンス ID # vSwitch ID。 VSwitchId: AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId AssociationPropertyMetadata: VpcId: ${VpcId} ZoneId: ${ZoneId} Type: String Label: en: VSwitch ID zh-cn: スイッチインスタンス ID # ECS インスタンスタイプ。 EcsInstanceType: Type: String Label: en: インスタンスタイプ zh-cn: Ecs インスタンスタイプ AssociationProperty: ALIYUN::ECS::Instance::InstanceType AllowedValues: - ecs.c6.large - ecs.c6.xlarge - ecs.c6.2xlarge - ecs.c6.4xlarge SlbInstanceType: Type: String Label: en: インスタンスタイプ zh-cn: Slb インスタンスタイプ AssociationProperty: ALIYUN::Slb::LoadBalance::LoadBalancerSpec AllowedValues: - slb.s1.small - slb.s3.smallResources: VPC、vSwitch、ECS インスタンス、SLB インスタンス、PrivateLink 接続など、作成するリソースを定義します。EcsSecurityGroup: Type: 'ALIYUN::ECS::SecurityGroup' Properties: VpcId: Ref: VpcId SecurityGroupIngress: - Priority: 1 PortRange: 3306/3306 NicType: internet SourceCidrIp: 0.0.0.0/0 IpProtocol: tcp # ECS インスタンス。 EcsInstanceGroup: Type: ALIYUN::ECS::InstanceGroup Properties: # I/O 最適化インスタンス。 IoOptimized: optimized ZoneId: Ref: ZoneId DiskMappings: - Category: cloud_essd Device: /dev/xvdb Size: 200 SystemDiskSize: 40 # cloud-init によって実行されるコマンド。 # 実行ログは、/var/log/cloud-init.log /var/log/cloud-init-output.log ファイルで確認できます。 # スクリプトは /var/lib/cloud/instance/scripts/part-001 です。sh コマンドを実行してトラブルシューティングできます。 UserData: Fn::Sub: - | #!/bin/sh # ネットワークの準備が整うまでしばらくスリープします。 sleep 10 # その他のコマンドは省略されています。詳細については、templates/template.yaml をご参照ください。 # 従量課金方法が使用されます。 InstanceChargeType: PostPaid MaxAmount: 1 # システムディスクとして ESSD が使用されます。 SystemDiskCategory: cloud_essd # インスタンスの名前。 InstanceName: Ref: ALIYUN::StackName VpcId: Ref: VpcId SecurityGroupId: Ref: EcsSecurityGroup VSwitchId: Ref: VSwitchId # CentOS 7.9 イメージが使用されます。別のイメージを使用する場合は、UserData セクションのスクリプトがそれに応じて変更されていることを確認してください。 ImageId: "centos_7_9_x64_20G_alibase_20220727.vhd" InstanceType: Ref: EcsInstanceType # ホスト名。 HostName: Ref: ALIYUN::StackName # ECS インスタンスへのログインに使用されるパスワード。 Password: Ref: Password # インスタンスにパブリック IP アドレスを割り当てるかどうかを指定します。 AllocatePublicIP: true InternetMaxBandwidthOut: 1 Slb: Type: ALIYUN::SLB::LoadBalancer Properties: LoadBalancerName: Fn::Join: - '-' - - mysql - Ref: ALIYUN::StackName VpcId: Ref: VpcId VSwitchId: Ref: VSwitchId PayType: PayOnDemand AddressType: intranet LoadBalancerSpec: Ref: SlbInstanceType SupportPrivateLink: true SlbBackendServerAttachment: DependsOn: - EcsInstanceGroup Type: ALIYUN::SLB::BackendServerAttachment Properties: BackendServerList: Fn::GetAtt: - EcsInstanceGroup - InstanceIds LoadBalancerId: Ref: Slb BackendServerWeightList: - 100 - 0 SlbListener: DependsOn: Slb Type: ALIYUN::SLB::Listener Properties: Persistence: CookieTimeout: 60 StickySession: 'on' PersistenceTimeout: 180 XForwardedFor: 'off' StickySessionType: insert ListenerPort: 3306 Bandwidth: -1 HealthCheck: HttpCode: http_2xx,http_3xx,http_4xx,http_5xx HealthCheckType: tcp UnhealthyThreshold: 3 Timeout: 5 HealthyThreshold: 3 Port: 3306 URI: / Interval: 2 LoadBalancerId: Ref: Slb BackendServerPort: 3306 Protocol: tcp VpcEndpointService: DependsOn: Slb Type: ALIYUN::PrivateLink::VpcEndpointService Properties: ServiceDescription: isv service Resource: - ZoneId: Ref: ZoneId ResourceId: Ref: Slb ResourceType: slb AutoAcceptEnabled: trueOutputs: Compute Nest コンソールのサービスインスタンス詳細ページの [概要] タブに表示される情報を定義します。Outputs: EndpointServiceId: Description: en: エンドポイントサービス ID zh-cn: 端末ノードサービス ID Value: Fn::GetAtt: - VpcEndpointService - ServiceId Endpoint: Value: Fn::Join: - '' - - Ref: ALIYUN::StackName - .mysql.com MysqlUserName: Description: en: MySQL ユーザー名 zh-cn: MySQL ログインユーザー名 Value: admin