Servis olarak Yük Dengeleme (LBaaS)

Servis olarak Yük Dengeleme (LBaaS)

Ağ servisi, neutron-lbaas servis eklentisi ile “LBaaS v2” isimli yük dengeleme özelliği sunar.

LBaaS v2, dinleyicilerin konseptini LBaaS v1 yük dengeleyicilerine ekler. LBaaS v2, tek bir yük dengeleyici IP adresinde birden fazla dinleyici bağlantı noktasını yapılandırmanıza izin verir.

LBaaS v2’nin iki referans gerçekleştirimi var. Bunlardan biri, HAProxy ile ajan tabanlı bir uygulamadır. Ajanlar HAProxy yapılandırmasını ele alır ve HAProxy arka plan programını yönetir. Başka bir LBaaS v2 gerçekleştirimi, Octavia, ayrı bir API’ya ve Hesaplama hizmeti tarafından yönetilen sanal makinelerde yük dengeleyicileri oluşturan ayrı bir çalışan süreçlere sahiptir. Octavia için bir ajan gerekmiyor.

Not

LBaaS v1, Newton sürümünde kaldırıldı. Bu bağlantılar, LBaaS v1’in nasıl çalıştığını ve nasıl yapılandıracağıyla ilgili daha ayrıntılı bilgi sağlar:

Uyarı

Mevcutta, v1 ve v2 yük dengeleyicileri arasında hiç göç yolu bulunmuyor. V1’den v2’ye geçmeyi seçerseniz, tüm yük dengeleyicileri, havuzları ve sağlık monitörlerini yeniden oluşturmak zorundasınız.

LBaaS v2 Konseptleri

LBaaS v2 anlaşılması gereken bir takım yeni konseptlere sahiptir:

LBaaS v2 layout
Yük dengeleyici
Yük dengeleyici bir neutron ağ bağlantı noktasını kaplar ve bir alt ağdan atanmış bir IP adresine sahiptir.
Dinleyici
Yük dengeleyici, birden çok bağlantı noktasındaki istekleri dinleyebilir. Bu portlardan her biri bir dinleyici tarafından belirtilir.
Havuz
Bir havuz, yük dengeleyicisi aracılığıyla içerik sunan üye listelerini tutar.
Üye
Üyeler, bir yük dengeleyicisinin arkasında trafiğe neden olan sunuculardır. Her üye trafik sunmak için kullandığı IP adresi ve bağlantı noktası ile belirtilir.
Sağlık İzleme Sistemi
Üyeler zaman zaman çevrimdışı olabilirler ve sağlık monitörleri trafiği düzgün yanıt vermeyen üyelerden uzaklaştırır. Sağlık monitörleri havuzlarla ilişkilidir.

LBaaS v2, farklı hizmet eklentileri yoluyla birden fazla uygulama içerir. En yaygın kullanılan iki uygulama hem bir ajan hem de Octavia hizmetleri kullanır. Her iki uygulama da LBaaS v2 API kullanıyor.

Yapılandırmalar

LBaaS v2’yi bir ajan yapılandırma

  1. LBaaS v2 servis eklentisini /etc/neutron/neutron.conf``dosyasındaki ``service_plugins yapılandırma yönergesine ekleyin:

    service_plugins = [existing service plugins],neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
    
  2. LBaaS v2 servis sağlayıcıyı /etc/neutron/neutron_lbaas.conf dosyasındaki [service_providers] bölümünde service_provider yapılandırma yönergesine ekleyin:

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

    VPNaaS veya FWaaS gibi diğer ağ servisi eklentileri için var olan servis sağlayıcılarına sahipseniz, service_provider satırını yukarıda gösterilen [service_providers] bölüme ayrı bir satır olarak ekleyin. Bu yapılandırma yönergeleri tekrarlanabilir ve virgül ile ayrılmış değildir.

  3. /etc/neutron/lbaas_agent.ini içindeki sanal arabirimleri yöneten sürücüyü seçin:

    [DEFAULT]
    interface_driver = INTERFACE_DRIVER
    

    INTERFACE_DRIVER yerine, ortamınızdaki katman-2 ajanının kullandığı arabirim sürücüsünü değiştirin. Örneğin, Open vSwitch için openvswitch, Linux köprüsü için linuxbridge.

  4. neutron-lbaas veritabanı göçünü çalıştır:

    neutron-db-manage --subproject neutron-lbaas upgrade head
    
  5. LBaaS v1’i kurduysanız LBaaS v1 aracısını şimdi durdurun. V1 ve v2 ajanları aynı anda çalışamaz.

  6. LBaaS v2 ajanını başlat:

    neutron-lbaasv2-agent \
    --config-file /etc/neutron/neutron.conf \
    --config-file /etc/neutron/lbaas_agent.ini
    
  7. Yeni yapılandırmayı etkinleştirmek için Ağ hizmetini yeniden başlatın. Artık LBaaS v2 aracı ile yük dengeleyici oluşturmaya hazırsınız.

Octavia ile LBaaS v2 yapılandırma

Octavia yük dengeleyiciler için yük dengeleyici gibi işleyen sunucular oluşturmak için bir hesaplama sürücüsünü de içeren ek yetenekler sağlar. Tokyo’daki OpenStack Summit’teki Uygulamalı Lab - OpenStack Octavia Kurulumu ve Yapılandırması oturumu Octavia için bir özet sağlar.

DevStack belgeleme Octavia’yı yüklemek için basit bir yöntem sunar ve servisi birden fazla yük dengeleyici sunucuları ile test eder. Eğer ortamınızda Octavia zaten kurulu ise, Ağ servisini Octavia’yı kullanmak için yapılandırabilirsiniz:

  1. LBaaS v2 servis eklentisini /etc/neutron/neutron.conf``dosyasındaki ``service_plugins yapılandırma yönergesine ekleyin:

    service_plugins = [existing service plugins],neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
    
  2. Octavia servisini /etc/neutron/neutron_lbaas.conf dosyasındaki [service_providers] bölümde service_provider yapılandırma yönergesine ekle:

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

    LBaaS v1 ve v2 servis sağlayıcıları [service_providers] bölümünden kaldırıldığından emin olun. Octavia ile kullanılmaz. Tüm LBaaS ajanlarının durdurulduğunu doğrulayın.

  3. Yeni yapılandırmayı etkinleştirmek için Ağ hizmetini yeniden başlatın. Şimdi Octavia ile yük dengeleyici yaratmaya ve yönetmeye hazırsınız.

LBaaS panellerini Dashboard’a ekleyin

LBaaS v2 yönetim panosu, Mitaka sürümünden itibaren kullanılabilir.

  1. `neutron-lbaas-dashboard deposu <https://git.openstack.org/cgit/openstack/neutron-lbaas-dashboard/>`__nu kopyalayın ve kurulu Dashboard’un sürümü ile eşleşen sürüm dalını çekin:

    $ git clone https://git.openstack.org/openstack/neutron-lbaas-dashboard
    $ cd neutron-lbaas-dashboard
    $ git checkout OPENSTACK_RELEASE
    
  2. Dashboard panosu eklentisini kur:

    $ python setup.py install
    
  3. _1481_project_ng_loadbalancersv2_panel.py dosyasını neutron-lbaas-dashboard/enabled dizininden Dashboard openstack_dashboard/local/enabled dizinine kopyala.

    Bu adım, Dashboard’un kullanılabilir tüm panelleri numaralandırdığı zaman eklentiyi bulmasını sağlar.

  4. local_settings.py dosyasını düzenleyerek ve OPENSTACK_NEUTRON_NETWORK dizininde enable_lb değerini `` True`` olarak ayarlayarak Dashboard’daki eklentiyi etkinleştirin.

  5. Dashboard, statik dosyaları daha iyi performans için sıkıştırmak üzere yapılandırılmışsa (genellikle local_settings.py dosyasında COMPRESS_OFFLINE ile ayarlanır), statik dosyaları tekrar optimize edin:

    $ ./manage.py collectstatic
    $ ./manage.py compress
    
  6. Yeni paneli aktifleştirmek için Apache’yi yeniden başlatın:

    $ sudo service apache2 restart
    

Paneli bulmak için: Dashboard’da Proje tıklayın ve ardından açılır menüsünü tıklayın ve şu seçeneklerden birini seçin Yük Dengeleyiciler.

LBaaS v2 işlemleri

LBaaS v2 için bir ajan veya Octavia ile aynı neutron komutları kullanılır.

LBaaS v2 yük dengeleyici oluşturma

  1. Bir ağda bir yük dengeleyicisi oluşturarak başlayın. Bu örnekte, private ağ, iki web sunucusuna sahip izole bir ağdır:

    $ neutron lbaas-loadbalancer-create --name test-lb private-subnet
    
  2. Yük dengeleyici durumunu ve IP adresini şu komutu kullanarak görüntüleyebilirsiniz 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. Trafiğin yeni yük dengeleyicisine erişmesine izin vermek için güvenlik grubunu güncelleyin. Yeni yük dengeleyicisine trafik akışını sağlamak için giriş kurallarıyla birlikte yeni bir güvenlik grubu oluşturun. Yük dengeleyici için neutron bağlantı noktası yukarıda vip_port_id olarak gösterilir.

    TCP bağlantı noktası 80, TCP bağlantı noktası 443 ve tüm ICMP trafiğine izin vermek için güvenlik grubu ve kuralları oluştur:

    $ 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
    

    neutron lbaas-loadbalancer-show komutundan vip_port_id kullanarak güvenlik grubunu yük dengeleyicinin ağ bağlantı noktasına uygulayın:

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

HTTP dinleyici ekleme

  1. Yük dengeleyici çevrimiçi olduğunda, bağlantı noktası 80’de düz metin HTTP trafiği için bir dinleyici ekleyebilirsiniz:

    $ neutron lbaas-listener-create \
      --name test-lb-http \
      --loadbalancer test-lb \
      --protocol HTTP \
      --protocol-port 80
    

    Bu yük dengeleyici aktif ve trafiği 192.0.2.22 üzerinden vermeye hazır.

  2. Yük dengeleyicisinin ilerlemeden önce ping komutuna yanıt verdiğini doğrulayın:

    $ 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. Bir havuz inşa etmeye ve port 80’de HTTP içeriği sunmak için havuza üye eklemeye başlayabilirsiniz. Bu örnek için, web sunucuları 192.0.2.16 ve 192.0.2.17 dir:

    $ 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. Yük dengeleyicileri aracılığıyla web sunucularınıza olan bağlantıyı doğrulamak için curl komutunu kullanabilirsiniz:

    $ curl 192.0.2.22
    web2
    $ curl 192.0.2.22
    web1
    $ curl 192.0.2.22
    web2
    $ curl 192.0.2.22
    web1
    

    Bu örnekte, yük dengeleyici, round robin algoritması kullanır ve trafik, arka uçtaki web sunucuları arasında değişir.

  5. Yanıt vermeyen sunucular havuzdan kaldırılacak şekilde bir sağlık monitörü ekleyebilirsiniz:

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

    Bu örnekte, sağlık denetleyicisi, iki beş saniyelik aralıklarla bir sağlık denetiminde başarısız olursa sunucuyu havuzdan kaldırır. Sunucu onarılır ve sağlık kontrollerine tekrar yanıt vermeye başladığında, havuza bir kez daha eklenir.

HTTPS dinleyici ekleme

HTTPS trafiği için 443 bağlantı noktası üzerine başka bir dinleyici ekleyebilirsiniz. LBaaS v2, yük dengeleyicide SSL/TLS bitimi sunar, ama bu örnek benzer bir yaklaşım alır ve şifrelenmiş bağlantının her bir üye sunucuda sonlanmasına olanak sağlar.

  1. Bir dinleyici oluşturup bir havuz ekleyerek ve ardından üyeler ekleyerek başlayın:

    $ 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. HTTPS havuzu için sağlık durumu izleyicisi de ekleyebilirsiniz:

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

    Yük dengeleyici artık 80 ve 443 numaralı bağlantı noktalarında trafik işlemektedir.

Yüzen IP adresini ilişkilendirme

Harici istemciler tarafından erişilebilen bir genel veya sağlayıcı ağında dağıtılan yük dengeleyicileri atanan bir kayan IP adresine ihtiyaç duymaz. Harici istemciler, bu yük dengeleyicilerinin sanal IP adresine (VIP) doğrudan erişebilir.

Bununla birlikte, özel veya izole edilmiş ağlara yerleştirilen yük dengeleyicileri, harici istemciler tarafından erişilebilir olması gerekiyorsa, atanmış bir IP adresine ihtiyaç duyar. Bu adımı tamamlamak için özel ve genel ağlar arasında bir yönlendiriciniz ve mevcut bir kayan IP adresi olmalıdır.

vip_port_id``i bulmak için bu bölümün başından itibaren :command:`neutron lbaas-loadbalancer-show` komutunu kullanabilirsiniz. ``vip_port_id, yük dengeleyicisine atanan ağ bağlantı noktasının kimliğidir. Yük dengeleyicisine, serbest kayan bir IP adresini neutron floatingip-associate komutunu kullanarak ilişkilendirebilirsiniz:

$ neutron floatingip-associate FLOATINGIP_ID LOAD_BALANCER_PORT_ID

LBaaS v2 için kota ayarlama

Yük dengeleyici ve yük dengeleyici havuz sayısını sınırlamak için kota kullanılabilir. Varsayılan olarak, her iki kota da 10 olarak ayarlanır.

Kotaları neutron quota-update komutunu kullanarak ayarlayabilirsiniz:

$ neutron quota-update --tenant-id TENANT_UUID --loadbalancer 25
$ neutron quota-update --tenant-id TENANT_UUID --pool 50

-1 ayarı, kiracı için kotayı devre dışı bırakır.

Yük dengeleyici istatistiklerinin getirilmesi

LBaaS v2 ajanı, her altı saniyede, her yük dengeleyici için istatistiklerin dört türünü toplar. Kullanıcılar bu istatistikleri neutron lbaas-loadbalancer-stats komutu ile sorgulayabilir:

$ neutron lbaas-loadbalancer-stats test-lb
+--------------------+----------+
| Field              | Value    |
+--------------------+----------+
| active_connections | 0        |
| bytes_in           | 40264557 |
| bytes_out          | 71701666 |
| total_connections  | 384601   |
+--------------------+----------+

active_connections sayısı, ajan yük dengeleyicisini çağırdığı sırada aktif olan toplam bağlantı sayısını ifade etmektedir. Diğer üç istatistik, yük dengeleyici son başlatıldığından birikimlidir. Örneğin, yük dengeleyici bir sistem hatası veya yapılandırma değişikliği nedeniyle yeniden başlatılırsa, bu istatistikler sıfırlanır.

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.