Memuat Balancer sebagai Service (LBaaS)

Memuat Balancer sebagai Service (LBaaS)

Layanan Networking menawarkan dua implementasi load balancer melalui plug-in layanan neutron-lbaas:

  • LBaaS v1: diperkenalkan di Juno (usang di Liberty)

  • LBaaS v2: diperkenalkan di Kilo

Kedua implementasi menggunakan agen. Para agen menangani konfigurasi HAProxy dan mengelola daemon HAProxy. LBaaS v2 menambahkan konsep listener ke LBaaS v1 load balancer. LBaaS v2 memungkinkan Anda untuk mengkonfigurasi beberapa port listener pada single load balancer IP address.

Implementasi lain LBaaS v2, Octavia <http://docs.openstack.org/developer/octavia/> _, memiliki API terpisah dan proses pekerja terpisah dimana membangun load balancer dalam mesin virtual pada hypervisor yang dikelola oleh layanan Compute . Anda tidak perlu agen untuk Octavia.

Saat ini, tidak ada jalur migrasi ada antara load balancer v1 dan v2. Jika Anda memilih untuk beralih dari v1 ke v2, Anda harus menciptakan kembali semua load balancer, pool, dan health monitor.

LBaaS v1

LBaaS v1 sudah ditinggalkan dalam rilis Liberty. Link ini memberikan rincian lebih lanjut tentang bagaimana LBaaS v1 bekerja dan bagaimana mengkonfigurasinya:

LBaaS v2

LBaaS v2 memiliki beberapa konsep baru untuk memahami:

LBaaS v2 layout
Load balancer
The load balancer occupies a neutron network port and has an IP address assigned from a subnet.
Listener

Load balancer dapat mendengarkan permintaan pada beberapa port. Masing-masing dari mereka port ditentukan oleh listener.

Pool

Sebuah pool memegang daftar anggota yang melayani konten melalui load balancer.

Member

Anggota adalah server yang melayani traffic di belakang load balancer. Setiap anggota ditentukan oleh alamat IP dan port yang menggunakan untuk melayani traffic.

Health monitor

Anggota dapat offline dari waktu ke waktu dan monitor kesehatan mengalihkan traffic dari anggota yang tidak merespon dengan baik. monitor kesehatan yang berhubungan dengan pool.

LBaaS v2 memiliki beberapa implementasi melalui berbagai layanan plug-in. Dua implementasi yang paling umum digunakan baik sebagai layanan agen maupun layanan Octavia. Kedua implementasi menggunakan LBaaS v2 API <http://developer.openstack.org/api-ref-networking-v2-ext.html#lbaas-v2.0> _.

Configuring LBaaS v2 dengan agent

  1. Tambahkan LBaaS layanan v2 plug-in ke service_plugins konfigurasi direktif dalam /etc/neutron/neutron.conf. Daftar plug-in adalah dipisahkan dengan koma:

    service_plugins = [existing service plugins],neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
    
  2. Tambahkan provider layanan LBaaS v2 ke service_provider konfigurasi direktif dalam bagian [service_providers] `` dalam ``/etc/neutron/neutron.conf:

    service_provider = LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
    

    Jika Anda memiliki provider layanan yang ada untuk plug-in layanan jejaring lainnya, seperti VPNaaS atau FWaaS, tambahkan garis 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 interface virtual di /etc/neutron/lbaas_agent.ini:

    [DEFAULT]
    interface_driver = INTERFACE_DRIVER
    

    Ganti INTERFACE_DRIVER dengan driver interface dimana agen lapisan-2 di lingkungan Anda menggunakan. Misalnya, `` openvswitch`` untuk Open vSwitch atau linuxbridge untuk 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. The v1 dan v2 agen cannot jalan secara bersamaan.

  6. Mulai agen v2 LBaaS:

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

Konfigurasi LBaaS v2 dengan Octavia

Octavia memberikan kemampuan tambahan untuk load balancer, termasuk menggunakan driver menghitung untuk membangun instances yang beroperasi sebagai load balancer . The `Hands on Lab - Instal dan Konfigurasi OpenStack Octavia<https://www.openstack.org/summit/tokyo-2015/videos/presentation/rsvp-required-hands-on-lab-install-and-configure-openstack-octavia>`_ sesi pada KTT OpenStack di Tokyo memberikan gambaran tentang Octavia.

Dokumentasi DevStack menawarkan simple method to deploy Octavia dan menguji layanan dengan instances load balancer berlebihan. Jika Anda sudah memiliki Octavia diinstal dan dikonfigurasi dalam lingkungan Anda, Anda dapat mengkonfigurasi layanan Networking untuk menggunakan Octavia:

  1. Tambahkan LBaaS layanan v2 plug-in ke service_plugins konfigurasi direktif dalam /etc/neutron/neutron.conf. Daftar plug-in adalah 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.conf:

    service_provider = LOADBALANCERV2:Octavia:neutron_lbaas.drivers.octavia.driver.OctaviaDriver:default
    

    Pastikan bahwa provider layanan LBaaS v1 dan v2 dikeluarkan dari bagian [service_providers]. Mereka tidak digunakan dengan Octavia. Verify that all LBaaS agents are stopped.

  3. Restart layanan Networking untuk mengaktifkan konfigurasi baru. Anda sekarang siap untuk membuat dan mengelola load balancer dengan Octavia.

Menambahkan panel LBaaS ke Dashboard

Panel Dashboard untuk mengelola LBaaS v2 yang tersedia mulai dengan merilis Mitaka.

  1. Clone neutron-lbaas-dashboard repository dan memeriksa cabang rilis yang cocok dengan versi diinstal Dashboard:

    $ git clone https://git.openstack.org/openstack/neutron-lbaas-dashboard
    $ cd neutron-lbaas-dashboard
    $ git checkout OPENSTACK_RELEASE
    
  2. Menginstal plug-in panel Dashboard:

    $ python setup.py install
    
  3. Salin `` berkas _1481_project_ng_loadbalancersv2_panel.py`` dari `` neutron-lbaas-dashboard / direktori enabled`` ke 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 untuk `` True`` di dictionary OPENSTACK_NEUTRON_NETWORK.

  5. Jika Dashboard dikonfigurasi untuk kompres file statis untuk kinerja yang lebih baik (biasanya diatur melalui `` COMPRESS_OFFLINE`` di local_settings.py), optimalkan 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 Network drop-down menu dan pilih: guilabel: Beban Balancers.

operasi LBaaS v2

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

Membangun LBaaS v2 load balancer

  1. Mulailah dengan menciptakan load balancer 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 load balancer dan alamat IP dengan `` command 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.168.1.22                                   |
    | vip_port_id         | 9f8f8a75-a731-4a34-b622-864907e1d556           |
    | vip_subnet_id       | f1e7827d-1bfe-40b6-b8f0-2d9fd946f59b           |
    +---------------------+------------------------------------------------+
    
  3. Update grup keamanan untuk mengizinkan traffic untuk mencapai load balancer baru. Buat grup keamanan baru bersama dengan aturan masuknya untuk mengizinkan traffic ke load balancerbaru. Port neutron untuk load balancer ditampilkan sebagai `` vip_port_id`` di atas.

    Buat grup keamanan dan aturan untuk memungkinkan TCP port 80, TCP port 443, dan semua traffic 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 grup the load balancer’s network port menggunakan vip_port_id dari: command: command lbaas-loadbalancer-show:

    $ neutron port-update \
      --security-group lbaas \
      9f8f8a75-a731-4a34-b622-864907e1d556
    

    Load balancer ini aktif dan siap untuk melayani traffic di `` 192.168.1.22``.

  4. Pastikan bahwa load balancer merespon ping sebelum bergerak lebih lanjut:

    $ ping -c 4 192.168.1.22
    PING 192.168.1.22 (192.168.1.22) 56(84) bytes of data.
    64 bytes from 192.168.1.22: icmp_seq=1 ttl=62 time=0.410 ms
    64 bytes from 192.168.1.22: icmp_seq=2 ttl=62 time=0.407 ms
    64 bytes from 192.168.1.22: icmp_seq=3 ttl=62 time=0.396 ms
    64 bytes from 192.168.1.22: icmp_seq=4 ttl=62 time=0.397 ms
    
    --- 192.168.1.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
    

Menambahkan pendengar HTTP

  1. Dengan load balancer online, Anda dapat menambahkan listener untuk traffic HTTP plaintext pada port 80:

    $ neutron lbaas-listener-create \
      --name test-lb-http \
      --loadbalancer test-lb \
      --protocol HTTP \
      --protocol-port 80
    
  2. Anda dapat mulai membangun pool dan menambahkan anggota ke pool untuk melayani konten HTTP pada port 80. Untuk contoh ini, server web yang 192.168.1.16 dan 192.168.1.17:

    $ neutron lbaas-pool-create \
      --name test-lb-pool-http \
      --lb-algorithm ROUND_ROBIN \
      --listener test-lb-http \
      --protocol HTTP
    $ neutron lbaas-member-create \
      --subnet private-subnet \
      --address 192.168.1.16 \
      --protocol-port 80 \
      test-lb-pool-http
    $ neutron lbaas-member-create \
      --subnet private-subnet \
      --address 192.168.1.17 \
      --protocol-port 80 \
      test-lb-pool-http
    
  3. Anda dapat menggunakan `` curl`` untuk memverifikasi konektivitas melalui load balancer ke server web Anda:

    $ curl 192.168.1.22
    web2
    $ curl 192.168.1.22
    web1
    $ curl 192.168.1.22
    web2
    $ curl 192.168.1.22
    web1
    

    Dalam contoh ini, load balancer menggunakan algoritma round robin dan bergantian traffic antara server web pada backend.

  4. Anda dapat menambahkan monitor kesehatan sehingga server tidak responsif dikeluarkan dari pool:

    $ neutron lbaas-healthmonitor-create \
      --delay 5 \
      --max-retries 2 \
      --timeout 10 \
      --type HTTP \
      --pool test-lb-pool-http
    

    Dalam contoh ini, monitor kesehatan menghapus server dari pool jika gagal cek kesehatan di dua interval lima detik. Ketika server pulih dan mulai menanggapi pemeriksaan kesehatan lagi, itu akan ditambahkan ke pool sekali lagi.

Menambahkan listener HTTPS

Anda dapat menambahkan listener lain pada port 443 untuk traffic HTTPS. LBaaS v2 menawarkan SSL / TLS terminasi pada load balancer, tapi contoh ini mengambil pendekatan yang lebih sederhana dan memungkinkan koneksi terenkripsi untuk mengakhiri di setiap server anggota.

  1. Mulailah dengan membuat listener, merapatkan pool, 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 \
      --subnet private-subnet \
      --address 192.168.1.16 \
      --protocol-port 443 \
      test-lb-pool-https
    $ neutron lbaas-member-create \
      --subnet private-subnet \
      --address 192.168.1.17 \
      --protocol-port 443 \
      test-lb-pool-https
    
  2. Anda juga dapat menambahkan monitor kesehatan untuk HTTPS pool:

    $ neutron lbaas-healthmonitor-create \
      --delay 5 \
      --max-retries 2 \
      --timeout 10 \
      --type HTTPS \
      --pool test-lb-pool-https
    

    Load balancer saat menangani traffic pada port 80 dan 443.

Berasosiasi dengan floating IP address

Load balancer yang digunakan pada jaringan publik atau provider yang dapat diakses oleh klien eksternal tidak membutuhkan floating IP address yang ditetapkan. klien eksternal dapat langsung mengakses alamat IP virtual (VIP) dari load balancer.

Namun, load balancer dikerahkan ke jaringan private atau terisolasi membutuhkan floating IP address ditetapkan jika mereka harus dapat diakses oleh klien eksternal. Untuk menyelesaikan langkah ini, Anda harus memiliki router antara jaringan private dan publik dan floating IP address tersedia.

Anda dapat menggunakan command lbaas-loadbalancer-show dari awal bagian ini untuk menemukan vip_port_id. vip_port_id adalah ID dari port jaringan yang ditugaskan untuk load balancer. Anda dapat mengaitkan floating IP address bebas untuk load balancer menggunakan floatingip-associate:

$ neutron floatingip-associate FLOATINGIP_ID LOAD_BALANCER_PORT_ID

Menetapkan kuota untuk LBaaS v2

Kuota yang tersedia untuk membatasi jumlah load balancer dan pool load balancer. Secara default, kuota keduanya ditetapkan 10.

Anda dapat mengatur kuota menggunakan command :command: 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 tenant.

Mengambil statistik load balancer

Agen LBaaS v2 mengumpulkan empat jenis statistik untuk setiap load balancer setiap enam detik. User dapat query statistik ini dengan command 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 load balancer. Tiga statistik lainnya kumulatif sejak load balancer terakhir dimulai. Misalnya, jika restart load balancer 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.