Load Balancer as a Service (LBaaS)

Load Balancer as a Service (LBaaS)

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 Concepts

LBaaS v2 memiliki beberapa konsep baru untuk memahami:

LBaaS v2 layout
Penyeimbang beban (load balancer)
Penyeimbang beban menempati port jaringan neutron dan memiliki alamat IP yang ditetapkan dari subnet.
Listener
Penyeimbang beban dapat mendengarkan permintaan pada beberapa port. Masing-masing dari port itu ditentukan oleh pendengar (listener).
Pool
Sebuah kolam memegang daftar anggota yang melayani konten melalui penyeimbang beban.
Member
Anggota adalah server yang melayani lalu lintas di belakang penyeimbang beban. Setiap anggota ditentukan oleh alamat IP dan port yang menggunakannya untuk melayani lalu lintas.
Health monitor
Anggota dapat offline dari waktu ke waktu dan monitor kesehatan dapat mengalihkan lalu lintas dari anggota yang tidak merespon dengan baik. Monitor kesehatan dihubungankan dengan kolam.

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.

Configurations

Konfigurasi LBaaS v2 dengan agen

  1. 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
    
  2. 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.

  3. 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.

  4. Jalankan migrasi database neutron-lbaas:

    neutron-db-manage --subproject neutron-lbaas upgrade head
    
  5. Jika Anda telah mengerahkan LBaaS v1, stop the LBaaS v1 agent now. Agen v1 dan v2 cannot berjalan secara bersamaan.

  6. Mulai agen LBaaS v2:

    neutron-lbaasv2-agent \
    --config-file /etc/neutron/neutron.conf \
    --config-file /etc/neutron/lbaas_agent.ini
    
  7. Restart layanan jaringan untuk mengaktifkan konfigurasi baru. Anda sekarang siap untuk membuat penyeimbang beban dengan agen v2 LBaaS.

Konfigurasi LBaaS v2 dengan Octavia

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:

  1. 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
    
  2. 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.

  3. Restart layanan jaringan untuk mengaktifkan konfigurasi baru. Anda sekarang siap untuk membuat dan mengelola penyeimbang beban dengan Octavia.

Tambahkan panel LBaaS ke Dashboard

Panel Dashboard untuk mengelola LBaaS v2 tersedia mulai dari rilis Mitaka.

  1. 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
    
  2. Instal plug-in panel Dashboard:

    $ python setup.py install
    
  3. 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.

  4. Aktifkan plug-in di Dashboard dengan mengedit file local_settings.py dan pengaturan enable_lb ke True dalam direktori OPENSTACK_NEUTRON_NETWORK.

  5. 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
    
  6. 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.

operasi LBaaS v2

Perintah neutron yang sama digunakan untuk LBaaS v2 dengan agen atau dengan Octavia.

Membangun penyeimbang beban LBaaS v2

  1. 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
    
  2. 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           |
    +---------------------+------------------------------------------------+
    
  3. 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
    

Tambahkan pendengar HTTP

  1. 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.

  2. 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
    
  3. 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
    
  4. 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.

  5. 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.

Menambahkan pendengar HTTPS

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.

  1. 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
    
  2. 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.

Mengaitkannya alamat IP mengambang

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

Penetapan kuota untuk LBaaS v2

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).

Pengambilan statistik penyeimbang beban

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.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.