このトピックでは、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) の ESSD (エンタープライズ SSD):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 をクリックします。サービスインスタンスのデプロイページで、プロンプトに従ってパラメーターを設定します。[サービスインスタンス名] と [リージョン] を設定し、パラメーターセット (Basic Edition、Standard Edition、または Advanced Edition) を選択し、[基本設定] セクションで [root アカウントのパスワード] を設定します。
ネットワーク設定を構成します。サービスインスタンスが作成されると、指定されたゾーンにエンドポイントが作成されます。[ネットワーク設定] セクションで、[ゾーン] を選択します。[ネットワーク設定] セクションで、[VPC]、[セキュリティグループ]、および [ゾーンと vSwitch] を設定します。下部にある [推奨カスタムドメイン名を使用] を選択できます。
-
パラメーターを設定した後、料金詳細を確認し、[次へ:注文の確認] をクリックします。このページには、[依存関係のチェック] の結果 (PrivateLink の依存関係は正常です) と [サービスインスタンス情報] の概要が表示されます。情報を確認し、[今すぐ作成] をクリックしてデプロイを完了します。
-
注文を確認し、利用規約に同意して、今すぐ作成 をクリックしてデプロイを開始します。
注文が送信されると、[送信済み] というメッセージが表示されます。[リストの表示] をクリックしてデプロイの進行状況を確認するか、[再作成] をクリックして別のサービスインスタンスを作成します。サービスインスタンスのステータスは [デプロイ中] と表示され、リアルタイムの進行状況がパーセンテージで示されます。
-
デプロイが完了するまで待ちます。サービスインスタンスの詳細ページの [概要] タブで、インスタンスのステータスが [デプロイ済み] に変わります。後続のステップで PrivateLink 接続を確立するために、EndpointServiceId と エンドポイント のアドレスを記録します。
-
サービスインスタンスを使用します。このサービスインスタンスは PrivateLink 接続機能をサポートしています。内部ネットワーク経由で PrivateLink 接続を使用してサービスインスタンスにアクセスできます。PrivateLink の詳細については、ベストプラクティスをご参照ください。次の手順に従って、内部ネットワーク経由でサービスインスタンスにアクセスします:
-
サービスインスタンスの詳細ページに移動します。[イントラネット] タブで、MySQL データベースへの接続に使用するカスタムドメイン名、IP アドレス、またはゾーンドメイン名を取得します。カスタムドメイン名は、サービスインスタンスの作成時に [推奨カスタムドメイン名を使用] を選択した場合にのみ表示されます。[基本情報] セクションには、エンドポイントのステータスが [利用可能]、接続ステータスが [接続済み] と表示されます。[ゾーンと NIC] テーブルには、各接続方法の具体的なアドレス値が一覧表示されます。
-
対応する vSwitch に ECS インスタンスを作成します。次に、MySQL クライアントをインストールします。
yum install mysql or apt install mysql-client -
ECS インスタンス上の MySQL クライアントを使用して、次のいずれかの方法で MySQL データベースに接続します:
-
カスタムドメイン名を使用する。
mysql -h xxx.computenest.aliyuncs.com -P 3306 -u admin -pxxx Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4203 Server version: 5.6.51 MySQL Community Server (GPL) -
IP アドレスを使用する。
mysql -h xxx.xxx.x.xxx -P 3306 -u admin -pxxx -
ゾーンドメイン名を使用する。
mysql -h ep-xxx-cn-hangzhou-k.epsrv-xxx.privatelink.aliyuncs.com -P 3306 -u admin -pxxx
-
-
サービスの詳細
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 Available Zone zh-cn: 可用区 # データベースへのログインに使用される root アカウントのパスワード。 Password: # このパラメーターをクエリすると、アスタリスク (*) のみが返されます。 NoEcho: true Type: String Description: en: 'Database root account passwor, 8-32 characters, including uppercase and lowercase letters, numbers and special symbols (including: !@#$%^&*-+=_).' zh-cn: 数据库root账户密码,长度8-32个字符,可包含大小字母、数字及特殊符号(包含:!@#$%^&*-+=_)。 Label: en: Root Account Password zh-cn: 数据库root账户密码 ConstraintDescription: en: '8-32 characters, including uppercase and lowercase letters, numbers and special symbols (including: !@#$%^&*-+=_).' 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: Instance Type 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: Instance Type zh-cn: Slb实例类型 AssociationProperty: ALIYUN::Slb::LoadBalance::LoadBalancerSpec AllowedValues: - slb.s1.small - slb.s3.small -
Resources: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: true -
Outputs:Compute Nest コンソールのサービスインスタンス詳細ページの [概要] タブに表示される情報を定義します。Outputs: EndpointServiceId: Description: en: EndpointService Id zh-cn: 终端节点服务Id Value: Fn::GetAtt: - VpcEndpointService - ServiceId Endpoint: Value: Fn::Join: - '' - - Ref: ALIYUN::StackName - .mysql.com MysqlUserName: Description: en: MySQL User Name zh-cn: MySQL登录用户名 Value: admin