{OCI ロード・バランサ}ネットワーク・ロード・バランサ

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