https://docs.oracle.com/ja-jp/iaas/Content/NetworkLoadBalancer/introducton.htm
-- 1. コンピュートインスタンス作成(OL9)
oci compute image list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--all \
--query 'data.{"operating-system":"operating-system","operating-system-version":"operating-system-version","display-name":"display-name"}' \
--output=table
oci compute image list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--all \
--query 'data[?"display-name"==`'Oracle-Linux-9.2-2023.12.08-0'`].id | [0]' \
--raw-output
oci compute shape list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--image-id ocid1.image.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--query 'sort_by(data, &"ocpus").{"shape":"shape","ocpus":"ocpus","memory-in-gbs":"memory-in-gbs"}' \
--output=table
cat <<-'EOF' > a.yaml
#cloud-config
timezone: Asia/Tokyo
locale: ja_JP.utf8
package_update: true
packages:
- httpd
runcmd:
- setenforce 0
- sed -i -e 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- systemctl stop firewalld
- systemctl disable firewalld
- systemctl start httpd
- systemctl enable httpd
- echo $(hostname) > /var/www/html/index.html
EOF
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" \
--user-data-file "./a.yaml"
oci compute instance launch \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-2 \
--subnet-id ocid1.subnet.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--assign-public-ip true \
--boot-volume-size-in-gbs 50 \
--display-name vm02 \
--fault-domain FAULT-DOMAIN-2 \
--image-id ocid1.image.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--shape VM.Standard.E2.1 \
--ssh-authorized-keys-file "$HOME/.ssh/id_rsa.pub" \
--user-data-file "./a.yaml"
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
oci compute instance terminate \
--instance-id ocid1.instance.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force
-- 2. ネットワーク・ロード・バランサ作成
oci nlb network-load-balancer list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--all
oci nlb network-load-balancer create \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--display-name nlb01 \
--subnet-id ocid1.subnet.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--is-preserve-source-destination false \
--is-private false \
--nlb-ip-version IPV4
oci nlb network-load-balancer list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--all \
--query 'data.items.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table
oci nlb network-load-balancer delete \
--network-load-balancer-id ocid1.networkloadbalancer.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force
-- 3. バックエンドセット作成
oci nlb backend-set list \
--network-load-balancer-id ocid1.networkloadbalancer.oc1.iad.000000000000000000000000000000000000000000000000000000000000
oci nlb backend-set create --generate-full-command-json-input
privateipのOCID取得
oci network private-ip list \
--subnet-id ocid1.subnet.oc1.iad.000000000000000000000000000000000000000000000000000000000000
oci nlb backend-set create \
--network-load-balancer-id ocid1.networkloadbalancer.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--name bs01 \
--health-checker '{
"interval-in-millis": 10000,
"port": 80,
"protocol": "HTTP",
"request-data": null,
"response-body-regex": "",
"response-data": null,
"retries": 3,
"return-code": 200,
"timeout-in-millis": 3000,
"url-path": "/"
}' \
--policy FIVE_TUPLE \
--backends '[
{
"ip-address": "10.0.2.15",
"target-id": "ocid1.privateip.oc1.iad.000000000000000000000000000000000000000000000000000000000000",
"name": "ocid1.privateip.oc1.iad.000000000000000000000000000000000000000000000000000000000000:80",
"is-backup": false,
"is-drain": false,
"is-offline": false,
"port": 80,
"weight": 1
},
{
"ip-address": "10.0.2.136",
"target-id": "ocid1.privateip.oc1.iad.000000000000000000000000000000000000000000000000000000000000",
"name": "ocid1.privateip.oc1.iad.000000000000000000000000000000000000000000000000000000000000:80",
"is-backup": false,
"is-drain": false,
"is-offline": false,
"port": 80,
"weight": 1
}
]' \
--ip-version IPV4 \
--is-preserve-source true
oci nlb backend-set delete \
--network-load-balancer-id ocid1.networkloadbalancer.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--backend-set-name bs01 \
--force
-- 4. リスナー作成
oci nlb listener list \
--network-load-balancer-id ocid1.networkloadbalancer.oc1.iad.000000000000000000000000000000000000000000000000000000000000
oci nlb listener create \
--network-load-balancer-id ocid1.networkloadbalancer.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--default-backend-set-name bs01 \
--name lis01 \
--port 80 \
--protocol TCP \
--ip-version IPV4
oci nlb listener delete \
--network-load-balancer-id ocid1.networkloadbalancer.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--listener-name lis01 \
--force
-- 5. 動作確認
while true; do
curl http://192.0.2.1
done