https://oracle-japan.github.io/ocitutorials/intermediates/autoscaling/
https://docs.oracle.com/ja-jp/iaas/Content/Compute/Concepts/instancemanagement.htm
メトリックベースの自動スケーリング: パフォーマンス・メトリックがしきい値以上になると、自動スケーリング・アクションがトリガーされます。
スケジュールベースの自動スケーリング: 自動スケーリング・イベントは、ユーザーがスケジュールした特定の時間に実行されます。
-- 1. インスタンス作成(OL9)
oci compute instance launch \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--subnet-id ocid1.subnet.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--assign-public-ip true \
--boot-volume-size-in-gbs 50 \
--display-name vm01 \
--fault-domain FAULT-DOMAIN-1 \
--image-id ocid1.image.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--shape VM.Standard.E2.1 \
--ssh-authorized-keys-file "$HOME/.ssh/id_rsa.pub"
oci compute instance list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table
oci compute instance terminate \
--instance-id ocid1.instance.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force
-- 2. インスタンス構成の作成
oci compute-management instance-configuration create-from-instance \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--instance-id ocid1.instance.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--display-name ic01
oci compute-management instance-configuration list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table
oci compute-management instance-configuration get \
--instance-configuration-id ocid1.instanceconfiguration.oc1.iad.000000000000000000000000000000000000000000000000000000000000
oci compute-management instance-configuration delete \
--instance-configuration-id ocid1.instanceconfiguration.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force
-- 3. インスタンス・プールの作成
oci compute-management instance-pool create \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--instance-configuration-id ocid1.instanceconfiguration.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--placement-configurations '[
{
"availability-domain": "OEIw:US-ASHBURN-AD-1",
"fault-domains": null,
"primary-subnet-id": null,
"primary-vnic-subnets": {
"ipv6-address-ipv6-subnet-cidr-pair-details": null,
"is-assign-ipv6-ip": null,
"subnet-id": "ocid1.subnet.oc1.iad.000000000000000000000000000000000000000000000000000000000000"
},
"secondary-vnic-subnets": null
}
]' \
--size 0 \
--display-name ip01 \
--instance-display-name-formatter 'ip01insntace${launchCount}' \
--instance-hostname-formatter 'ip01insntace${launchCount}'
oci compute-management instance-pool list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table
oci compute-management instance-pool get \
--instance-pool-id ocid1.instancepool.oc1.iad.000000000000000000000000000000000000000000000000000000000000
oci compute-management instance-pool terminate \
--instance-pool-id ocid1.instancepool.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force
-- 4. 自動スケーリング構成の作成
oci autoscaling configuration create --generate-full-command-json-input
oci autoscaling configuration create \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--policies '[
{
"capacity": {
"initial": 1,
"max": 2,
"min": 1
},
"display-name": "asp01",
"is-enabled": true,
"policy-type": "threshold",
"rules": [
{
"action": {
"type": "CHANGE_COUNT_BY",
"value": -1
},
"display-name": "asp0101",
"metric": {
"metric-type": "CPU_UTILIZATION",
"threshold": {
"operator": "LT",
"value": 30
}
}
},
{
"action": {
"type": "CHANGE_COUNT_BY",
"value": 1
},
"display-name": "asp0102",
"metric": {
"metric-type": "CPU_UTILIZATION",
"threshold": {
"operator": "GT",
"value": 70
}
}
}
]
}
]' \
--resource '{
"id": "ocid1.instancepool.oc1.iad.000000000000000000000000000000000000000000000000000000000000",
"type": "instancePool"
}' \
--cool-down-in-seconds 300 \
--display-name asc01 \
--is-enabled true
oci autoscaling configuration list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table
oci autoscaling configuration get \
--auto-scaling-configuration-id ocid1.autoscalingconfiguration.oc1.iad.000000000000000000000000000000000000000000000000000000000000
oci autoscaling configuration delete \
--auto-scaling-configuration-id ocid1.autoscalingconfiguration.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force
-- 5. 動作確認
ssh -i $HOME/.ssh/id_rsa opc@192.0.2.1
sudo dnf repolist all | grep -i epel
sudo yum-config-manager --enable ol9_developer_EPEL
sudo dnf -y install stress
stress -c 2 &
top -c
pkill stress