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 anlaşılması gereken bir takım yeni konseptlere sahiptir:
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.
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
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.
/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
.
neutron-lbaas
veritabanı göçünü çalıştır:
neutron-db-manage --subproject neutron-lbaas upgrade head
LBaaS v1’i kurduysanız LBaaS v1 aracısını şimdi durdurun. V1 ve v2 ajanları aynı anda çalışamaz.
LBaaS v2 ajanını başlat:
neutron-lbaasv2-agent \
--config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/lbaas_agent.ini
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 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:
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
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.
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 v2 yönetim panosu, Mitaka sürümünden itibaren kullanılabilir.
`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
Dashboard panosu eklentisini kur:
$ python setup.py install
_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.
local_settings.py
dosyasını düzenleyerek ve OPENSTACK_NEUTRON_NETWORK
dizininde enable_lb
değerini `` True`` olarak ayarlayarak Dashboard’daki eklentiyi etkinleştirin.
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
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ğ açılır menüsünü tıklayın ve şu seçeneklerden birini seçin Yük Dengeleyiciler.
LBaaS v2 için bir ajan veya Octavia ile aynı neutron komutları kullanılır.
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
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 |
+---------------------+------------------------------------------------+
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
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.
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
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
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.
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 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.
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
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.
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
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.
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.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.