Önceki bölümlerde, fraktal uygulamayı oluşturan tüm düğümler aynı ağa bağlıydı.

Bu bölüm Ağ API’sine giriş yapar. Bu bize uygulamaya erişen dışarı açık trafikle API ve işçi bileşenler arasındaki trafiği ayıracak ağ topolojileri inşa etmemizi sağlayacak. Ayrıca dayanıklılık için yük dengelemeye giriş yapacağız ve veritabanı, web sunucu, dosya sunucu ve işçi bileşenler arasında iletişim için güvenli bir arka uç ağı oluşturacağız.

Uyarı

Bu kısım bulut sağlayıcınızın OpenStack Ağ API’sini (neutron) uyguladığını varsayar. Geleneksel ağı (nova-network) uygulayan bulutların kullanıcıları ağa Hesaplama API’si aracılığıyla erişebileceklerdir. Horizon kontrol panosuna giriş yapın ve :guilabel:`Proje->Erişim & Güvenlik->API Erişimi`ne gidin. Ağ API’si için bir servis uç noktası görürseniz bulutunuz muhtemelen Ağ API’sini çalıştırıyordur. Hala şüpheliyseniz daha fazla bilgi için bulut sağlayıcınızla görüşün.

Uyarı

Libcloud OpenStack Ağ API’sini desteklemez.

CLI ile çalışmak

SDK’lar OpenStack Ağ API’sini tamamen desteklemediğinden, bu kısım komut satırı istemcilerini kullanır.

‘Openstack’ komut satırı istemcisini kurmak için bu kılavuzu kullanın: https://docs.openstack.org/cli-reference/common/cli_install_openstack_command_line_clients.html#install-the-clients

Bulutunuz için gerekli değişkenleri bir ‘openrc’ dosyasında ayarlamak için bu kılavuzu kullanın: https://docs.openstack.org/cli-reference/common/cli_set_environment_variables_using_openstack_rc.html

Bir openrc.sh dosyanız olduğundan emin olun, onu kaynak edin ve openstack istemcinizin çalıştığını kontrol edin:

$ cat openrc.sh
export OS_USERNAME=your_auth_username
export OS_PASSWORD=your_auth_password
export OS_TENANT_NAME=your_project_name
export OS_AUTH_URL=http://controller:5000/v2.0
export OS_REGION_NAME=your_region_name

$ source openrc.sh

$ openstack --version
3.3.0

Ağ dilimlendirme

Geleneksel veri merkezlerinde, ağ dilimleri belirli türde ağ trafiği için adanmıştır.

İnşa ettiğimiz fraktal uygulaması bu türlerde ağ trafiği içerir:

  • dışarı dönük web trafiği

  • API trafiği

  • dahili işçi trafiği

Başarım sebepleriyle, her aşama için bir ağa sahip olmak mantıklıdır, böylecek bir aşamadaki trafik diğer türde trafiklerde “kalabalık” yaparak uygulamanın başarısız olmasına sebep olmaz. Ek olarak farklı ağlara sahip olmak uygulamanın parçalarına erişimi kontrol etmeyi yönetmesi kolay hale getirir, uygulamanın genel güvenliğini artırır.

Bu kısım öncesinde, Fraktal uygulama için ağ düzeni şu çizime benzer olurdu:

Bu ağ düzeninde, uygulamanızı içinde inşa ettiğiniz OpenStack bulutunun ekteki yönergeleri takip edecek şekilde bulut sağlayıcınız veya sizin tarafınızdan daha önceden oluşturulan bir açık ağı ve kiracı yönlendiricisi bulunduğunu varsayıyoruz.

Bu kısımda tartışılan birçok ağ kavramı yukarıdaki çizimde zaten mevcuttur. Bir kiracı yönlendiricisi işçi düğümler için yönlendirme ve harici erişim sağlar, ve değişken IP adresleri Fraktal uygulama kümesindeki her bir düğüm ile ilişkilendirilerek harici erişimi gerçekleştirir.

Bu kısmın sonunda, OpenStack Ağ API’sini işçi düğümlerin eklendiği 10.0.1.0/24 ağını oluşturmak için için kullanarak ağ topolojisine ufak değişiklikler yaparsınız. 10.0.3.0/24 API ağını Fraktal API sunucularını eklemek için kullanırsınız. Web sunucularının kendi 10.0.2.0/24 ağları vardır, bu ağ açık ağdan değişken IP adresleri ayrıldığından dünya çapında fraktal meraklıları tarafından erişilebilirdir.

Kiracı ağlara giriş

OpenStack Ağ API’si ile, dışarıya dönük Fraktal uygulama API’sini işçi arka uçtan ayıran bir ağ topolojisi oluşturmak için olan iş akışı şu şekildedir:

  • Web sunucu düğümleri için bir ağ ve alt ağ oluştur.

  • İşçi düğümler için bir ağ ve alt ağ oluşturun. Bu özel veri ağıdır.

  • Özel veri ağı için bir yönlendirici oluşturun.

  • Değişken ip’ler ayırın ve web sunucusu düğümlerine atayın.

Ağlar oluşturun

Çoğu bulut sağlayıcı size erişebileceğiniz bir açık ağ yapar. Bu açık ağa bir yönlendirici ekleyerek sunucularımıza internet erişimi sağlayacağız. Bu yönlendiriciyi iç ağlarımıza da ekledikten sonra internet erişimine ihtiyaç duyan sunucularımız için açık ağdan değişken IP’ler ayıracağız.

Kiracımızın erişimi olan ağları listeleyerek bir açık ağımız olduğunu onaylayın. Açık ağ açık olarak adlandırılmamış olabilir- ‘harici’, ‘net04_ext’ veya başka bir şey olabilir- önemli olan mevcut olması ve internet erişiminde kullanılabilir olmasıdır.

$ openstack network list
+--------------------------------------+------------------+--------------------------------------------------+
| ID                                   | Name             | Subnets                                          |
+--------------------------------------+------------------+--------------------------------------------------+
| 27e6fa33-fd39-475e-b048-6ac924972a03 | public           | b12293c9-a1f4-49e3-952f-136a5dd24980             |
+--------------------------------------+------------------+--------------------------------------------------+

Ardından işçiler için bir ağ ve alt ağ oluşturun.

$ openstack network create worker_network
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2016-11-06T22:28:45Z                 |
| description               |                                      |
| headers                   |                                      |
| id                        | 4d25ff64-eec3-4ab6-9029-f6d4b5a3e127 |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| mtu                       | 1450                                 |
| name                      | worker_network                       |
| port_security_enabled     | True                                 |
| project_id                | a59a543373bc4b12b74f07355ad1cabe     |
| provider:network_type     | vxlan                                |
| provider:physical_network | None                                 |
| provider:segmentation_id  | 54                                   |
| revision_number           | 3                                    |
| router:external           | Internal                             |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      | []                                   |
| updated_at                | 2016-11-06T22:28:45Z                 |
+---------------------------+--------------------------------------+


$ openstack subnet create worker_subnet --network worker_network --subnet-range 10.0.1.0/24
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| allocation_pools  | 10.0.1.2-10.0.1.254                  |
| cidr              | 10.0.1.0/24                          |
| created_at        | 2016-11-06T22:34:47Z                 |
| description       |                                      |
| dns_nameservers   |                                      |
| enable_dhcp       | True                                 |
| gateway_ip        | 10.0.1.1                             |
| headers           |                                      |
| host_routes       |                                      |
| id                | 383309b3-184d-4060-a151-a73dcb0606db |
| ip_version        | 4                                    |
| ipv6_address_mode | None                                 |
| ipv6_ra_mode      | None                                 |
| name              | worker_subnet                        |
| network_id        | 4d25ff64-eec3-4ab6-9029-f6d4b5a3e127 |
| project_id        | a59a543373bc4b12b74f07355ad1cabe     |
| revision_number   | 2                                    |
| service_types     |                                      |
| subnetpool_id     | None                                 |
| updated_at        | 2016-11-06T22:34:47Z                 |
+-------------------+--------------------------------------+

Şimdi, web sunucuları için bir ağ ve alt ağ oluşturun.

$ openstack network create webserver_network
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2016-11-06T22:36:19Z                 |
| description               |                                      |
| headers                   |                                      |
| id                        | 2410c262-6c27-4e99-8c31-045b60499a01 |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| mtu                       | 1450                                 |
| name                      | webserver_network                    |
| port_security_enabled     | True                                 |
| project_id                | a59a543373bc4b12b74f07355ad1cabe     |
| provider:network_type     | vxlan                                |
| provider:physical_network | None                                 |
| provider:segmentation_id  | 96                                   |
| revision_number           | 3                                    |
| router:external           | Internal                             |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      | []                                   |
| updated_at                | 2016-11-06T22:36:19Z                 |
+---------------------------+--------------------------------------+

$ openstack subnet create webserver_subnet --network webserver_network --subnet-range 10.0.2.0/24
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| allocation_pools  | 10.0.2.2-10.0.2.254                  |
| cidr              | 10.0.2.0/24                          |
| created_at        | 2016-11-06T22:37:47Z                 |
| description       |                                      |
| dns_nameservers   |                                      |
| enable_dhcp       | True                                 |
| gateway_ip        | 10.0.2.1                             |
| headers           |                                      |
| host_routes       |                                      |
| id                | 5878afa5-8f1d-4de5-8018-530044a49934 |
| ip_version        | 4                                    |
| ipv6_address_mode | None                                 |
| ipv6_ra_mode      | None                                 |
| name              | webserver_subnet                     |
| network_id        | 2410c262-6c27-4e99-8c31-045b60499a01 |
| project_id        | a59a543373bc4b12b74f07355ad1cabe     |
| revision_number   | 2                                    |
| service_types     |                                      |
| subnetpool_id     | None                                 |
| updated_at        | 2016-11-06T22:37:47Z                 |
+-------------------+--------------------------------------+

Ardından, API sunucuları için bir ağ ve alt ağ oluşturun.

$ openstack network create api_network
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2016-11-06T22:38:51Z                 |
| description               |                                      |
| headers                   |                                      |
| id                        | 8657f3a3-6e7d-40a1-a979-1a8c54d5e434 |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| mtu                       | 1450                                 |
| name                      | api_network                          |
| port_security_enabled     | True                                 |
| project_id                | a59a543373bc4b12b74f07355ad1cabe     |
| provider:network_type     | vxlan                                |
| provider:physical_network | None                                 |
| provider:segmentation_id  | 64                                   |
| revision_number           | 3                                    |
| router:external           | Internal                             |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      | []                                   |
| updated_at                | 2016-11-06T22:38:51Z                 |
+---------------------------+--------------------------------------+

$ openstack subnet create api_subnet --network api_network --subnet-range 10.0.3.0/24
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| allocation_pools  | 10.0.3.2-10.0.3.254                  |
| cidr              | 10.0.3.0/24                          |
| created_at        | 2016-11-06T22:40:15Z                 |
| description       |                                      |
| dns_nameservers   |                                      |
| enable_dhcp       | True                                 |
| gateway_ip        | 10.0.3.1                             |
| headers           |                                      |
| host_routes       |                                      |
| id                | 614e7801-eb35-45c6-8e49-da5bdc9161f5 |
| ip_version        | 4                                    |
| ipv6_address_mode | None                                 |
| ipv6_ra_mode      | None                                 |
| name              | api_subnet                           |
| network_id        | 8657f3a3-6e7d-40a1-a979-1a8c54d5e434 |
| project_id        | a59a543373bc4b12b74f07355ad1cabe     |
| revision_number   | 2                                    |
| service_types     |                                      |
| subnetpool_id     | None                                 |
| updated_at        | 2016-11-06T22:40:15Z                 |
+-------------------+--------------------------------------+

Artık ağları oluşturduğunuza göre, devam edin ve web sunucuları için iki değişken IP oluşturun. ‘public’ kısmını bulut sağlayıcınız tarafından sağlanan açık/harici ağ ismiyle değiştirdiğinizden emin olun.

$ openstack floating ip create public
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| created_at          | 2016-11-06T22:47:30Z                 |
| description         |                                      |
| fixed_ip_address    | None                                 |
| floating_ip_address | 172.24.4.2                           |
| floating_network_id | 27e6fa33-fd39-475e-b048-6ac924972a03 |
| headers             |                                      |
| id                  | 820385df-36a7-415d-955c-6ff662fdb796 |
| port_id             | None                                 |
| project_id          | a59a543373bc4b12b74f07355ad1cabe     |
| revision_number     | 1                                    |
| router_id           | None                                 |
| status              | DOWN                                 |
| updated_at          | 2016-11-06T22:47:30Z                 |
+---------------------+--------------------------------------+


$ openstack floating ip create public
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| created_at          | 2016-11-06T22:48:45Z                 |
| description         |                                      |
| fixed_ip_address    | None                                 |
| floating_ip_address | 172.24.4.12                          |
| floating_network_id | 27e6fa33-fd39-475e-b048-6ac924972a03 |
| headers             |                                      |
| id                  | 3d9f1591-a31e-4684-8346-f4bb33a176b0 |
| port_id             | None                                 |
| project_id          | a59a543373bc4b12b74f07355ad1cabe     |
| revision_number     | 1                                    |
| router_id           | None                                 |
| status              | DOWN                                 |
| updated_at          | 2016-11-06T22:48:45Z                 |
+---------------------+--------------------------------------+

Not

Dünyada IPv4 adresi kalmamak üzere. Eğer “Ağda kullanılabilir başka IP adresi yok” hatası alırsanız, bulut yöneticinizle iletişime geçin. IPv6 ile ilgili konuşmak da isteyebilirsiniz :)

İnternete bağlanmak

Çoğu sunucu internete erişim gerektirir. Fraktallar uygulamanızdaki sunucular da buna dahildir! Kullandığınız çeşitli ağlar arasında trafik geçişi için yönlendiriciler ekleyin.

$ openstack router create project_router
+-------------------------+--------------------------------------+
| Field                   | Value                                |
+-------------------------+--------------------------------------+
| admin_state_up          | UP                                   |
| availability_zone_hints |                                      |
| availability_zones      |                                      |
| created_at              | 2016-11-06T22:49:59Z                 |
| description             |                                      |
| distributed             | False                                |
| external_gateway_info   | null                                 |
| flavor_id               | None                                 |
| ha                      | False                                |
| headers                 |                                      |
| id                      | e11eba23-961c-43d7-8da0-561abdad880c |
| name                    | project_router                       |
| project_id              | a59a543373bc4b12b74f07355ad1cabe     |
| revision_number         | 2                                    |
| routes                  |                                      |
| status                  | ACTIVE                               |
| updated_at              | 2016-11-06T22:49:59Z                 |
+-------------------------+--------------------------------------+

Yönlendiriciniz için bir harici geçit belirterek OpenStack’e internet erişimi için hangi ağı kullanacağını söyleyin.

$ openstack router set project_router --external-gateway public
Set gateway for router project_router

$ openstack router show project_router
+-------------------------+-------------------------------------------------------------------------+
| Field                   | Value                                                                   |
+-------------------------+-------------------------------------------------------------------------+
| admin_state_up          | UP                                                                      |
| availability_zone_hints |                                                                         |
| availability_zones      | nova                                                                    |
| created_at              | 2016-11-06T22:49:59Z                                                    |
| description             |                                                                         |
| distributed             | False                                                                   |
| external_gateway_info   | {"network_id": "27e6fa33-fd39-475e-b048-6ac924972a03", "enable_snat":   |
|                         | true, "external_fixed_ips": [{"subnet_id":                              |
|                         | "d02006a5-3d10-41f1-a349-6024af41cda0", "ip_address": "172.24.4.13"},   |
|                         | {"subnet_id": "b12293c9-a1f4-49e3-952f-136a5dd24980", "ip_address":     |
|                         | "2001:db8::9"}]}                                                        |
| flavor_id               | None                                                                    |
| ha                      | False                                                                   |
| id                      | e11eba23-961c-43d7-8da0-561abdad880c                                    |
| name                    | project_router                                                          |
| project_id              | a59a543373bc4b12b74f07355ad1cabe                                        |
| revision_number         | 5                                                                       |
| routes                  |                                                                         |
| status                  | ACTIVE                                                                  |
| updated_at              | 2016-11-06T22:53:04Z                                                    |
+-------------------------+-------------------------------------------------------------------------+

Şimdi yönlendiricinizi işçi, API ve web sunucu alt ağlarına ekleyin.

$ openstack router add subnet project_router worker_subnet

$ openstack router add subnet project_router api_subnet

$ openstack router add subnet project_router webserver_subnet

Bir işçinin önyüklenmesi

Artık ağ altyapısını hazırladığınıza göre, devam edip üzerinde bir sunucu önyükleyebilirsiniz. Bulutunuz için uygun nitelik ve imaj değerlerini kullandığınızdan emin olun - hazır değilseniz bkz Başlangıç.

$ nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64-disk --nic net-id=953224c6-c510-45c5-8a29-37deffd3d78e worker1
+--------------------------------------+-----------------------------------------------------------------+
| Property                             | Value                                                           |
+--------------------------------------+-----------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                          |
| OS-EXT-AZ:availability_zone          | nova                                                            |
| OS-EXT-STS:power_state               | 0                                                               |
| OS-EXT-STS:task_state                | scheduling                                                      |
| OS-EXT-STS:vm_state                  | building                                                        |
| OS-SRV-USG:launched_at               | -                                                               |
| OS-SRV-USG:terminated_at             | -                                                               |
| accessIPv4                           |                                                                 |
| accessIPv6                           |                                                                 |
| adminPass                            | 9vU8KSY4oDht                                                    |
| config_drive                         |                                                                 |
| created                              | 2015-03-30T05:26:04Z                                            |
| flavor                               | m1.tiny (1)                                                     |
| hostId                               |                                                                 |
| id                                   | 9e188a47-a246-463e-b445-027d6e2966e0                            |
| image                                | cirros-0.3.3-x86_64-disk (ad605ff9-4593-4048-900b-846d6401c193) |
| key_name                             | -                                                               |
| metadata                             | {}                                                              |
| name                                 | worker1                                                         |
| os-extended-volumes:volumes_attached | []                                                              |
| progress                             | 0                                                               |
| security_groups                      | default                                                         |
| status                               | BUILD                                                           |
| tenant_id                            | f77bf3369741408e89d8f6fe090d29d2                                |
| updated                              | 2015-03-30T05:26:04Z                                            |
| user_id                              | a61292a5691d4c6c831b7a8f07921261                                |
+--------------------------------------+-----------------------------------------------------------------+

Yük dengeleme

Fraktal işçi düğümlerini kendi ağlarına ayırdıktan sonra, sonraki mantıklı adım Fraktal API servisini bir yük dengeleyiciye taşıyarak birden fazla API işçisinin istekleri ele almasını sağlamaktır. Bir yük dengeleyici kullanarak, API servisi işçi düğümleri gibi ölçeklenebilir.

Neutron LbaaS API’si

OpenStack Ağ API’si Fraktal uygulama web servisini ölçeklemekte kullanılabilecek yük dengeleyiciler oluşturmayı destekler. Aşağıdaki örnekte, Hesaplama API’si ile iki hesaplama sunucusu oluştururuz, ardından iki hesaplama sunucusu tarafından verilen web servisine erişmek için bir sanal IP (VIP) kullanacak yük dengeleyiciyi ilklendiririz. Sonuçta şu ağ topolojisi elde edilir:

libcloud desteği eklendi 0.14: https://developer.rackspace.com/blog/libcloud-0-dot-14-released/

Zaten yerinde olan şeylere bakarak başlayın.

$ openstack network list
+--------------------------------------+-------------------+---------------------------------------+
| ID                                   | Name              | Subnets                               |
+--------------------------------------+-------------------+---------------------------------------+
| 2410c262-6c27-4e99-8c31-045b60499a01 | webserver_network | 5878afa5-8f1d-4de5-8018-530044a49934  |
| 27e6fa33-fd39-475e-b048-6ac924972a03 | public            | b12293c9-a1f4-49e3-952f-136a5dd24980, |
|                                      |                   | d02006a5-3d10-41f1-a349-6024af41cda0  |
+--------------------------------------+-------------------+---------------------------------------+

Devam edin ve iki sunucu oluşturun.

$ nova boot --flavor 1 --image 53ff0943-99ba-42d2-a10d-f66656372f87 --min-count 2 test
+--------------------------------------+-----------------------------------------------------------------+
| Property                             | Value                                                           |
+--------------------------------------+-----------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                          |
| OS-EXT-AZ:availability_zone          | nova                                                            |
| OS-EXT-STS:power_state               | 0                                                               |
| OS-EXT-STS:task_state                | scheduling                                                      |
| OS-EXT-STS:vm_state                  | building                                                        |
| OS-SRV-USG:launched_at               | -                                                               |
| OS-SRV-USG:terminated_at             | -                                                               |
| accessIPv4                           |                                                                 |
| accessIPv6                           |                                                                 |
| adminPass                            | z84zWFCcpppH                                                    |
| config_drive                         |                                                                 |
| created                              | 2015-04-02T02:45:09Z                                            |
| flavor                               | m1.tiny (1)                                                     |
| hostId                               |                                                                 |
| id                                   | 8d579f4a-116d-46b9-8db3-aa55b76f76d8                            |
| image                                | cirros-0.3.3-x86_64-disk (53ff0943-99ba-42d2-a10d-f66656372f87) |
| key_name                             | -                                                               |
| metadata                             | {}                                                              |
| name                                 | test-1                                                          |
| os-extended-volumes:volumes_attached | []                                                              |
| progress                             | 0                                                               |
| security_groups                      | default                                                         |
| status                               | BUILD                                                           |
| tenant_id                            | 0cb06b70ef67424b8add447415449722                                |
| updated                              | 2015-04-02T02:45:09Z                                            |
| user_id                              | d95381d331034e049727e2413efde39f                                |
+--------------------------------------+-----------------------------------------------------------------+

Eklendiklerini onaylayın:

$ nova list
+--------------------------------------+--------+--------+------------+-------------+------------------+
| ID                                   | Name   | Status | Task State | Power State | Networks         |
+--------------------------------------+--------+--------+------------+-------------+------------------+
| 8d579f4a-116d-46b9-8db3-aa55b76f76d8 | test-1 | ACTIVE | -          | Running     | private=10.0.2.4 |
| 8fadf892-b6e9-44f4-b132-47c6762ffa2c | test-2 | ACTIVE | -          | Running     | private=10.0.2.3 |
+--------------------------------------+--------+--------+------------+-------------+------------------+

Hangi bağlantı noktalarının kullanılabilir olduklarına bakın:

$ openstack port list
+--------------------------------------+------+-------------------+--------------------------------------------+
| ID                                   | Name | MAC Address       | Fixed IP Addresses                         |
+--------------------------------------+------+-------------------+--------------------------------------------+
| 11b38c90-f55e-41a7-b68b-0d434d66bfa2 |      | fa:16:3e:21:95:a1 | ip_address='10.0.0.1', subnet_id='e7f75523 |
|                                      |      |                   | -ae4b-4611-85a3-07efa2e1ba0f'              |
| 523331cf-5636-4298-a14c-f545bb32abcf |      | fa:16:3e:f8:a1:81 | ip_address='10.0.0.2', subnet_id='e7f75523 |
|                                      |      |                   | -ae4b-4611-85a3-07efa2e1ba0f'              |
|                                      |      |                   | ip_address='2001:db8:8000:0:f816:3eff:fef8 |
|                                      |      |                   | :a181', subnet_id='f8628fd8-8d61-43e2-9dc8 |
|                                      |      |                   | -a03d25443b7d'                             |
| cbba0f37-c1a0-4fc8-8722-68e42de7df16 |      | fa:16:3e:39:a6:18 | ip_address='2001:db8:8000::1', subnet_id=' |
|                                      |      |                   | f8628fd8-8d61-43e2-9dc8-a03d25443b7d'      |
+--------------------------------------+------+-------------------+--------------------------------------------+

Ardından, ek değişken IP’ler oluşturun. Göstermeleri gereken sabit IP adreslerini ve kullanmaları gereken bağlantı noktalarını belirtin:

$ openstack floating ip create public --fixed-ip-address 10.0.0.2 --port 523331cf-5636-4298-a14c-f545bb32abcf
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| created_at          | 2016-11-06T23:23:29Z                 |
| description         |                                      |
| fixed_ip_address    | 10.0.0.2                             |
| floating_ip_address | 172.24.4.2                           |
| floating_network_id | 27e6fa33-fd39-475e-b048-6ac924972a03 |
| headers             |                                      |
| id                  | 0ed15644-4290-4adf-91d4-5713eea895e5 |
| port_id             | 523331cf-5636-4298-a14c-f545bb32abcf |
| project_id          | 3d2db0593c8045a392fd18385b401b5b     |
| revision_number     | 1                                    |
| router_id           | 309d1402-a373-4022-9ab8-6824aad1a415 |
| status              | DOWN                                 |
| updated_at          | 2016-11-06T23:23:29Z                 |
+---------------------+--------------------------------------+

$ openstack floating ip create public --fixed-ip-address 10.0.2.4 --port 462c92c6-941c-48ab-8cca-3c7a7308f580
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| created_at          | 2016-11-06T23:25:26Z                 |
| description         |                                      |
| fixed_ip_address    | 10.0.0.1                             |
| floating_ip_address | 172.24.4.8                           |
| floating_network_id | 27e6fa33-fd39-475e-b048-6ac924972a03 |
| headers             |                                      |
| id                  | 68082405-82f2-4072-b5c3-7047df527a8a |
| port_id             | 11b38c90-f55e-41a7-b68b-0d434d66bfa2 |
| project_id          | 3d2db0593c8045a392fd18385b401b5b     |
| revision_number     | 1                                    |
| router_id           | 309d1402-a373-4022-9ab8-6824aad1a415 |
| status              | DOWN                                 |
| updated_at          | 2016-11-06T23:25:26Z                 |
+---------------------+--------------------------------------+

Değişken IP’leri gösteren, yük dengeleme bağlantı noktası için üyeler oluşturmak için hazırsınız:

$ neutron lb-member-create --address 203.0.113.21 --protocol-port 80 mypool
Created a new member:
+--------------------+--------------------------------------+
| Field              | Value                                |
+--------------------+--------------------------------------+
| address            | 203.0.113.21                         |
| admin_state_up     | True                                 |
| id                 | 679966a9-f719-4df0-86cf-3a24d0433b38 |
| pool_id            | 600496f0-196c-431c-ae35-a0af9bb01d32 |
| protocol_port      | 80                                   |
| status             | PENDING_CREATE                       |
| status_description |                                      |
| tenant_id          | 0cb06b70ef67424b8add447415449722     |
| weight             | 1                                    |
+--------------------+--------------------------------------+

$ neutron lb-member-create --address 203.0.113.22 --protocol-port 80 mypool
Created a new member:
+--------------------+--------------------------------------+
| Field              | Value                                |
+--------------------+--------------------------------------+
| address            | 203.0.113.22                         |
| admin_state_up     | True                                 |
| id                 | f3ba0605-4926-4498-b86d-51002892e93a |
| pool_id            | 600496f0-196c-431c-ae35-a0af9bb01d32 |
| protocol_port      | 80                                   |
| status             | PENDING_CREATE                       |
| status_description |                                      |
| tenant_id          | 0cb06b70ef67424b8add447415449722     |
| weight             | 1                                    |
+--------------------+--------------------------------------+

Üye listesinde görüyor olmalısınız:

$ neutron lb-member-list
+--------------------------------------+--------------+---------------+--------+----------------+--------+
| id                                   | address      | protocol_port | weight | admin_state_up | status |
+--------------------------------------+--------------+---------------+--------+----------------+--------+
| 679966a9-f719-4df0-86cf-3a24d0433b38 | 203.0.113.21 |            80 |      1 | True           | ACTIVE |
| f3ba0605-4926-4498-b86d-51002892e93a | 203.0.113.22 |            80 |      1 | True           | ACTIVE |
+--------------------------------------+--------------+---------------+--------+----------------+--------+

Şimdi yük dengeleme havuzu üyelerinin etkin ve isteklere cevap verebilir durumda olduklarından emin olmak için sağlık izleyici oluşturun. Havuzun bir üyesi ölürse veya cevap vermemeye başlarsa, üye havuzdan çıkarılarak istemci isteklerinin etkin üyelere yönlendirilmesi sağlanır.

$ neutron lb-healthmonitor-create --delay 3 --type HTTP --max-retries 3 --timeout 3
Created a new health_monitor:
+----------------+--------------------------------------+
| Field          | Value                                |
+----------------+--------------------------------------+
| admin_state_up | True                                 |
| delay          | 3                                    |
| expected_codes | 200                                  |
| http_method    | GET                                  |
| id             | 663345e6-2853-43b2-9ccb-a623d5912345 |
| max_retries    | 3                                    |
| pools          |                                      |
| tenant_id      | 0cb06b70ef67424b8add447415449722     |
| timeout        | 3                                    |
| type           | HTTP                                 |
| url_path       | /                                    |
+----------------+--------------------------------------+
$ neutron lb-healthmonitor-associate 663345e6-2853-43b2-9ccb-a623d5912345 mypool
Associated health monitor 663345e6-2853-43b2-9ccb-a623d5912345

Şimdi havuzun çeşitli üyeleri arasında trafik yönlendirmek için kullanılacak bir sanal IP oluşturun:

$ neutron lb-vip-create --name myvip --protocol-port 80 --protocol HTTP --subnet-id 47fd3ff1-ead6-4d23-9ce6-2e66a3dae425 mypool
Created a new vip:
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| address             | 203.0.113.63                         |
| admin_state_up      | True                                 |
| connection_limit    | -1                                   |
| description         |                                      |
| id                  | f0bcb66e-5eeb-447b-985e-faeb67540c2f |
| name                | myvip                                |
| pool_id             | 600496f0-196c-431c-ae35-a0af9bb01d32 |
| port_id             | bc732f81-2640-4622-b624-993a5ae185c5 |
| protocol            | HTTP                                 |
| protocol_port       | 80                                   |
| session_persistence |                                      |
| status              | PENDING_CREATE                       |
| status_description  |                                      |
| subnet_id           | 47fd3ff1-ead6-4d23-9ce6-2e66a3dae425 |
| tenant_id           | 0cb06b70ef67424b8add447415449722     |
+---------------------+--------------------------------------+

Ve yerinde olduğunu onaylayın:

$ neutron lb-vip-list
+--------------------------------------+-------+--------------+----------+----------------+--------+
| id                                   | name  | address      | protocol | admin_state_up | status |
+--------------------------------------+-------+--------------+----------+----------------+--------+
| f0bcb66e-5eeb-447b-985e-faeb67540c2f | myvip | 203.0.113.63 | HTTP     | True           | ACTIVE |
+--------------------------------------+-------+--------------+----------+----------------+--------+

Şimdi büyük resme bakın.

Sonuç

Yük dengeleyicinin eklenmesiyle Fraktal uygulamasının ağ topolojisi artık uygulamanın modüler doğasını yansıtır durumda.

Sonraki adımlar

Artık Ağ API’si ile çalışırken kendinizden emin olmalısınız. Kapsamadığımız çağrıları görmek için SDK’nızın birim belgelendirmesine göz atın veya şu öğretici adımlardan birini deneyin:

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.