Prasyarat
- OpenStack Core Service
- Openstack Octavia
- python-octaviaclient (CLI Client)
pip install python-octaviaclient
Panduan
- Buat Instance
# Buat cloud-config file
cat<<EOF > user-data.yaml
#cloud-config
chpasswd:
list: |
ubuntu:rahasia
expire: false
runcmd:
- echo \$(hostname) > index.html
- python3 -m http.server 80
EOF
# Buat instance
openstack server create \
--user-data user-data.yaml \
--image ubuntu-focal \
--flavor m1.small \
--boot-from-volume 5 \
--network intnet \
--key-name deployer \
--min 3 \
--max 3 \
web-basic
- Buat Load Balancer
openstack loadbalancer create --name testlb --vip-network-id extnet
# Tunggu sampai status menunjukkan status ACTIVE
openstack loadbalancer show testlb
- Buat load balancer listener
Listener adalah port yang akan digunakan oleh load balancer sebagai port untuk melayani request
atau yang biasa disebut dengan frontend
pada konfigurasi HAProxy
openstack loadbalancer listener create --name testlistener --protocol HTTP --protocol-port 80 testlb
- Buat pool
pool berisikan informasi tentang algoritma, listener, dan protokol apa yang ingin digunakan
openstack loadbalancer pool create --name testpool --lb-algorithm ROUND_ROBIN --listener testlistener --protocol HTTP
- Buat health monitor Health monitor digunakan untuk memantau status anggota pool
openstack loadbalancer healthmonitor create --delay 5 --max-retries 4 --timeout 10 --type HTTP --url-path / testpool
- Buat member pada load balancer
member berisikan layanan yang akan di-load balance atau yang biasa disebut dengan backend
pada konfigurasi HAProxy
openstack loadbalancer member create --subnet-id intnet-subnet --address $WEB_BASIC_1_ADDR --protocol-port 80 testpool
openstack loadbalancer member create --subnet-id intnet-subnet --address $WEB_BASIC_2_ADDR --protocol-port 80 testpool
openstack loadbalancer member create --subnet-id intnet-subnet --address $WEB_BASIC_3_ADDR --protocol-port 80 testpool
# Contoh:
# openstack loadbalancer member create --subnet-id intnet-subnet --address 192.168.10.10 --protocol-port 80 testpool
Contoh
- Menggunakan
for
for i in {1..10}; do curl IP_ADDRESS; done
- Menggunakan
while
. Tekan Ctrl + C untuk menghentikan
while sleep 1; do curl IP_ADDRESS; done