Layanan Networking menawarkan fitur penyeimbang beban (load balancer) disebut “LBaaS v2” melalui plug-in layanan neutron-lbaas
.
LBaaS v2 menambahkan konsep pendengar ke penyeimbang beban LBaaS v1. LBaaS v2 memungkinkan Anda untuk mengkonfigurasi beberapa port pendengar pada alamat IP penyeimbang beban tunggal.
Ada dua implementasi referensi dari LBaaS v2. Yang satu adalah implementasi berdasarkan agen dengan HAProxy. Para agen menangani konfigurasi HAProxy dan mengelola daemon HAProxy. Implementasi LBaaS v2 lain, Octavia, memiliki API terpisah dan proses pekerja terpisah yang membangun penyeimbang beban dalam mesin virtual pada hypervisors yang dikelola oleh layanan Compute. Anda tidak perlu agen untuk Octavia.
Catatan
LBaaS v1 telah dihapus dalam rilis Newton. Link ini memberikan rincian lebih lanjut tentang bagaimana LBaaS v1 bekerja dan bagaimana mengkonfigurasinya:
Peringatan
Saat ini, tidak ada jalur migrasi berada antara penyeimbang beban v1 dan v2. Jika Anda memilih untuk beralih dari v1 ke v2, Anda harus menciptakan semua penyeimbang beban, kolam, dan monitor kesehatan.
LBaaS v2 memiliki beberapa konsep baru untuk memahami:
LBaaS v2 memiliki beberapa implementasi melalui berbagai service plug-ins. Dua implementasi yang paling umum menggunakan layanan agen ataupun layanan Octavia. Kedua implementasi menggunakan LBaaS v2 API.
Tambahkan plug-in layanan LBaaS v2 ke perintah konfigurasi service_plugins
dalam /etc/neutron/neutron.conf
. Daftar plug-in dipisahkan dengan koma:
service_plugins = [existing service plugins],neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
Tambahkan penyedia layanan LBaaS v2 ke direktif konfigurasi service_provider
dalam bagian [service_providers]
dalam /etc/neutron/neutron_lbaas.conf
:
service_provider = LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
Jika Anda memiliki penyedia layanan yang ada untuk plug-in layanan jejaring lainnya, seperti VPNaaS atau FWaaS, tambahkan baris service_provider
yang ditunjukkan di atas dalam bagian ``[service_providers] `` sebagai baris terpisah. Perintah konfigurasi ini berulang dan tidak dipisahkan koma.
Pilih driver yang mengelola antarmuka virtual dalam /etc/neutron/lbaas_agent.ini
:
[DEFAULT]
interface_driver = INTERFACE_DRIVER
Ganti INTERFACE_DRIVER
dengan driver antarmuka dimana agen layer-2 di lingkungan Anda menggunakannya. Sebagai contoh, openvswitch
untuk Open vSwitch atau linuxbridge
for Linux bridge.
Jalankan migrasi database neutron-lbaas
:
neutron-db-manage --subproject neutron-lbaas upgrade head
Jika Anda telah mengerahkan LBaaS v1, stop the LBaaS v1 agent now. Agen v1 dan v2 cannot berjalan secara bersamaan.
Mulai agen LBaaS v2:
neutron-lbaasv2-agent \
--config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/lbaas_agent.ini
Restart layanan jaringan untuk mengaktifkan konfigurasi baru. Anda sekarang siap untuk membuat penyeimbang beban dengan agen v2 LBaaS.
Octavia memberikan kemampuan tambahan untuk penyeimbang beban, meliputi penggunaan driver komputasi untuk membangun instance yang beroperasi sebagai penyeimbang beban. Sesi Hands on Lab - Install and Configure OpenStack Octavia pada KTT OpenStack di Tokyo memberikan gambaran tentang Octavia.
Dokumentasi DevStack menawarkan simple method to deploy Octavia dan menguji layanan dengan instance penyeimbang beban redundant (berlebihan). Jika Anda sudah memiliki Octavia terinstal dan dikonfigurasi dalam lingkungan Anda, Anda dapat mengkonfigurasi layanan jaringan untuk menggunakan Octavia:
Tambahkan plug-in layanan LBaaS v2 ke perintah konfigurasi service_plugins
dalam /etc/neutron/neutron.conf
. Daftar plug-in dipisahkan dengan koma:
service_plugins = [existing service plugins],neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
Tambahkan provider layanan Octavia ke konfigurasi direktif service_provider
dalam bagian [service_providers]
dalam /etc/neutron/neutron_lbaas.conf
:
service_provider = LOADBALANCERV2:Octavia:neutron_lbaas.drivers.octavia.driver.OctaviaDriver:default
Pastikan bahwa LBaaS v1 dan penyedia layanan v2 dikeluarkan dari bagian [service_providers]
. Mereka tidak digunakan dengan Octavia. Verify that all LBaaS agents are stopped.
Restart layanan jaringan untuk mengaktifkan konfigurasi baru. Anda sekarang siap untuk membuat dan mengelola penyeimbang beban dengan Octavia.
Panel Dashboard untuk mengelola LBaaS v2 tersedia mulai dari rilis Mitaka.
Lakukan cloning neutron-lbaas-dashboard repository dan periksa cabang rilis yang cocok dengan versi Dashboard terpasang:
$ git clone https://git.openstack.org/openstack/neutron-lbaas-dashboard
$ cd neutron-lbaas-dashboard
$ git checkout OPENSTACK_RELEASE
Instal plug-in panel Dashboard:
$ python setup.py install
Salin file _1481_project_ng_loadbalancersv2_panel.py
dari direktori neutron-lbaas-dashboard/enabled
ke dalam direktori Dashboard openstack_dashboard/local/enabled
.
Langkah ini memastikan bahwa Dashboard dapat menemukan plug-in ketika menjumlahkan semua panel yang tersedia.
Aktifkan plug-in di Dashboard dengan mengedit file local_settings.py
dan pengaturan enable_lb
ke True
dalam direktori OPENSTACK_NEUTRON_NETWORK
.
Jika Dashboard dikonfigurasi untuk kompres file statis untuk kinerja yang lebih baik (biasanya diatur melalui COMPRESS_OFFLINE
dalam local_settings.py
), lakukan optimalisasi file statis lagi:
$ ./manage.py collectstatic
$ ./manage.py compress
Restart Apache untuk mengaktifkan panel baru:
$ sudo service apache2 restart
Untuk menemukan panel, klik pada Project di Dashboard, lalu klik drop-down menu Network dan pilih Load Balancers.
Perintah neutron yang sama digunakan untuk LBaaS v2 dengan agen atau dengan Octavia.
Mulailah dengan pembuatan penyeimbang beban pada jaringan. Dalam contoh ini, jaringan private
merupakan jaringan terisolasi dengan dua instance web server:
$ neutron lbaas-loadbalancer-create --name test-lb private-subnet
Anda dapat melihat status penyeimbang beban dan alamat IP dengan perintah neutron lbaas-loadbalancer-show:
$ neutron lbaas-loadbalancer-show test-lb
+---------------------+------------------------------------------------+
| Field | Value |
+---------------------+------------------------------------------------+
| admin_state_up | True |
| description | |
| id | 7780f9dd-e5dd-43a9-af81-0d2d1bd9c386 |
| listeners | {"id": "23442d6a-4d82-40ee-8d08-243750dbc191"} |
| | {"id": "7e0d084d-6d67-47e6-9f77-0115e6cf9ba8"} |
| name | test-lb |
| operating_status | ONLINE |
| provider | haproxy |
| provisioning_status | ACTIVE |
| tenant_id | fbfce4cb346c4f9097a977c54904cafd |
| vip_address | 192.0.2.22 |
| vip_port_id | 9f8f8a75-a731-4a34-b622-864907e1d556 |
| vip_subnet_id | f1e7827d-1bfe-40b6-b8f0-2d9fd946f59b |
+---------------------+------------------------------------------------+
Update grup keamanan untuk mengizinkan lalu lintas untuk mencapai penyeimbang beban baru. Buat grup keamanan baru bersama dengan aturan masuknya untuk mengizinkan lalu lintas ke penyeimbang beban baru. Port neutron untuk penyeimbang beban ditampilkan sebagai vip_port_id
di atas.
Buat grup keamanan dan aturan untuk memungkinkan TCP port 80, TCP port 443, dan semua lalu lintas ICMP:
$ neutron security-group-create lbaas
$ neutron security-group-rule-create \
--direction ingress \
--protocol tcp \
--port-range-min 80 \
--port-range-max 80 \
--remote-ip-prefix 0.0.0.0/0 \
lbaas
$ neutron security-group-rule-create \
--direction ingress \
--protocol tcp \
--port-range-min 443 \
--port-range-max 443 \
--remote-ip-prefix 0.0.0.0/0 \
lbaas
$ neutron security-group-rule-create \
--direction ingress \
--protocol icmp \
lbaas
Terapkan kelompok keamanan untuk port jaringan penyeimbang beban menggunakan `` vip_port_id`` dari perintah neutron lbaas-loadbalancer-show:
$ neutron port-update \
--security-group lbaas \
9f8f8a75-a731-4a34-b622-864907e1d556
Dengan load balancer online, Anda dapat menambahkan pendengar untuk lalu lintas HTTP plaintext pada port 80:
$ neutron lbaas-listener-create \
--name test-lb-http \
--loadbalancer test-lb \
--protocol HTTP \
--protocol-port 80
This load balancer is active and ready to serve traffic on 192.0.2.22
.
Pastikan bahwa penyeimbang beban merespon ping sebelum bergerak lebih lanjut:
$ ping -c 4 192.0.2.22
PING 192.0.2.22 (192.0.2.22) 56(84) bytes of data.
64 bytes from 192.0.2.22: icmp_seq=1 ttl=62 time=0.410 ms
64 bytes from 192.0.2.22: icmp_seq=2 ttl=62 time=0.407 ms
64 bytes from 192.0.2.22: icmp_seq=3 ttl=62 time=0.396 ms
64 bytes from 192.0.2.22: icmp_seq=4 ttl=62 time=0.397 ms
--- 192.0.2.22 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.396/0.402/0.410/0.020 ms
You can begin building a pool and adding members to the pool to serve HTTP
content on port 80. For this example, the web servers are 192.0.2.16
and 192.0.2.17
:
$ neutron lbaas-pool-create \
--name test-lb-pool-http \
--lb-algorithm ROUND_ROBIN \
--listener test-lb-http \
--protocol HTTP
$ neutron lbaas-member-create \
--name test-lb-http-member-1 \
--subnet private-subnet \
--address 192.0.2.16 \
--protocol-port 80 \
test-lb-pool-http
$ neutron lbaas-member-create \
--name test-lb-http-member-2 \
--subnet private-subnet \
--address 192.0.2.17 \
--protocol-port 80 \
test-lb-pool-http
Anda dapat menggunakan curl
untuk memverifikasi konektivitas melalui load balancers ke server web Anda:
$ curl 192.0.2.22
web2
$ curl 192.0.2.22
web1
$ curl 192.0.2.22
web2
$ curl 192.0.2.22
web1
Dalam contoh ini, beban penyeimbang menggunakan algoritma round robin dan pergantian lalu lintas antara server web pada backend.
Anda dapat menambahkan monitor kesehatan sehingga server yang tidak responsif dapat dikeluarkan dari kolam:
$ neutron lbaas-healthmonitor-create \
--name test-lb-http-monitor \
--delay 5 \
--max-retries 2 \
--timeout 10 \
--type HTTP \
--pool test-lb-pool-http
Dalam contoh ini, monitor kesehatan menghapus server dari kolam jika gagal cek kesehatan di dua interval lima detik. Ketika server pulih dan mulai menanggapi pemeriksaan kesehatan lagi, itu akan ditambahkan ke kolam sekali lagi.
Anda dapat menambahkan pendengar lain pada port 443 untuk lalu lintas HTTPS. LBaaS v2 menawarkan terminasi SSL/TLS pada penyeimbang beban, tapi contoh ini mengambil pendekatan yang lebih sederhana dan memungkinkan koneksi terenkripsi untuk mengakhiri di setiap server anggota.
Mulailah dengan membuat pendengar, melekatkan kolam, dan kemudian menambahkan anggota:
$ neutron lbaas-listener-create \
--name test-lb-https \
--loadbalancer test-lb \
--protocol HTTPS \
--protocol-port 443
$ neutron lbaas-pool-create \
--name test-lb-pool-https \
--lb-algorithm LEAST_CONNECTIONS \
--listener test-lb-https \
--protocol HTTPS
$ neutron lbaas-member-create \
--name test-lb-https-member-1 \
--subnet private-subnet \
--address 192.0.2.16 \
--protocol-port 443 \
test-lb-pool-https
$ neutron lbaas-member-create \
--name test-lb-https-member-2 \
--subnet private-subnet \
--address 192.0.2.17 \
--protocol-port 443 \
test-lb-pool-https
Anda juga dapat menambahkan monitor kesehatan untuk HTTPS pool:
$ neutron lbaas-healthmonitor-create \
--name test-lb-https-monitor \
--delay 5 \
--max-retries 2 \
--timeout 10 \
--type HTTPS \
--pool test-lb-pool-https
Penyeimbang beban sekarang menangani lalu lintas pada port 80 dan 443.
Balancers beban yang digunakan pada jaringan publik atau penyedia yang dapat diakses oleh klien eksternal tidak membutuhkan alamat IP mengambang yang ditetapkan. Klien eksternal dapat langsung mengakses virtual IP address (VIP) dari load balancer mereka
Namun, balancers beban yang dikerahkan ke jaringan private atau jaringan terisolasi membutuhkan alamat IP mengambang yang ditetapkan jika mereka harus dapat diakses oleh klien eksternal. Untuk menyelesaikan langkah ini, Anda harus memiliki router antara jaringan private dan publik dan alamat IP mengambang yang tersedia.
Anda dapat menggunakan perintah neutron lbaas-loadbalancer-show dari awal bagian ini untuk menemukan vip_port_id
. vip_port_id
adalah ID dari port jaringan yang ditugaskan untuk penyeimbang beban. Anda dapat mengaitkan alamat IP mengambang bebas untuk penyeimbang beban menggunakan neutron floatingip-associate:
$ neutron floatingip-associate FLOATINGIP_ID LOAD_BALANCER_PORT_ID
Kuota tersedia untuk membatasi jumlah penyeimbang beban dan kolam penyeimbang beban. Secara default, kedua kuota itu ditetapkan 10.
Anda dapat mengatur kuota menggunakan perintah neutron quota-update
$ neutron quota-update --tenant-id TENANT_UUID --loadbalancer 25
$ neutron quota-update --tenant-id TENANT_UUID --pool 50
Pengaturan -1
menonaktifkan kuota untuk penyewa (tenant).
Agen LBaaS v2 mengumpulkan empat jenis statistik untuk setiap load balancer setiap enam detik. Pengguna dapat query statistik ini dengan perintah neutron lbaas-loadbalancer-stats:
$ neutron lbaas-loadbalancer-stats test-lb
+--------------------+----------+
| Field | Value |
+--------------------+----------+
| active_connections | 0 |
| bytes_in | 40264557 |
| bytes_out | 71701666 |
| total_connections | 384601 |
+--------------------+----------+
Count active_connections
adalah jumlah koneksi yang aktif pada saat agen disurvei penyeimbang beban. Tiga statistik lainnya adalah kumulatif sejak penyeimbang beban yang terakhir dimulai. Misalnya, jika penyeimbang beban restart karena kesalahan sistem atau perubahan konfigurasi, statistik ini akan disetel ulang.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.