Jaringan

Jaringan

Pada bab sebelumnya, semua node yang terdiri dari aplikasi fraktal dilekatkan pada jaringan yang sama.

Bab ini memperkenalkan Networking API. Ini akan memungkinkan kita untuk membangun topologi jaringan yang memisahkan lalu lintas umum yang mengakses aplikasi dari lalu lintas antara komponen API dan pekerja. Kami juga memperkenalkan load balancing untuk ketahanan, dan menciptakan jaringan back-end yang aman untuk komunikasi antara database, server web, penyimpanan file, dan komponen pekerja.

Peringatan

Bagian ini mengasumsikan bahwa penyedia awan Anda telah menerapkan OpenStack Networking API (neutron). Pengguna awan yang telah menerapkan jaringan legacy (lawas) (nova-network) akan memiliki akses ke jaringan melalui Compute API. Masuk ke dashboard Horizon dan arahkan ke: guilabel: Project-> Access & Security-> API Access. Jika Anda melihat titik akhir layanan untuk API Jaringan, awan Anda kemungkinan besar menjalankan API Jaringan. Jika Anda masih ragu, mintalah informasi tentang penyedia awan Anda.

Peringatan

Libcloud tidak mendukung OpenStack Networking API.

Bekerja dengan CLI

Karena SDK tidak sepenuhnya mendukung OpenStack Networking API, bagian ini menggunakan klien command-lin.

Gunakan panduan ini untuk menginstal klien command-line 'openstack': https://docs.openstack.org/cli-reference/common/cli_install_openstack_command_line_clients.html#install-the-clients

Gunakan panduan ini untuk menyiapkan variabel yang diperlukan untuk awan Anda di file 'openrc': https://docs.openstack.org/cli-reference/common/cli_set_environment_variables_using_openstack_rc.html

Pastikan Anda memiliki file openrc.sh, sumber, dan kemudian periksa apakah klien openstack Anda bekerja:

$ 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

Segmentasi jaringan

Di pusat data tradisional, segmen jaringan didedikasikan untuk jenis lalu lintas jaringan tertentu.

Aplikasi fraktal yang kami bangun berisi jenis lalu lintas jaringan ini:

  • lalu lintas web public-facing

  • Lalu lintas API

  • lalu lintas pekerja internal

Untuk alasan kinerja, masuk akal untuk memiliki jaringan untuk setiap tingkat, sehingga lalu lintas dari satu tingkat tidak "mengacaukan" jenis lalu lintas lainnya dan menyebabkan aplikasi gagal. Selain itu, memiliki jaringan yang terpisah membuat akses pengendali ke bagian aplikasi lebih mudah dikelola, meningkatkan keamanan keseluruhan aplikasi.

Sebelum bagian ini, tata letak jaringan untuk aplikasi Fraktal akan serupa dengan diagram berikut:

Dalam tata letak jaringan ini, kami berasumsi bahwa awan OpenStack tempat Anda membangun aplikasi Anda memiliki jaringan publik dan tenant router (router penyewa) yang sebelumnya dibuat oleh penyedia awan Anda atau oleh Anda sendiri, mengikuti petunjuk di lampiran.

Banyak konsep jaringan yang dibahas di bagian ini sudah ada pada diagram di atas. Router penyewa menyediakan routing dan akses eksternal untuk node pekerja, dan alamat IP mengambang (floating) dikaitkan dengan setiap node di cluster aplikasi Fractal untuk memudahkan akses eksternal.

Pada akhir bagian ini, Anda membuat sedikit perubahan pada topologi jaringan dengan menggunakan OpenStack Networking API untuk membuat jaringan 10.0.1.0/24 tempat (worker node) simpul pekerja mengkaitkan. Anda menggunakan jaringan API 10.0.3.0/24 untuk mengkaitkan server API Fraktal. Instance server web memiliki jaringan 10.0.2.0/24 sendiri, yang dapat diakses oleh aficionados (penggemar) fraktal di seluruh dunia, dengan mengalokasikan IP mengambang (floating) dari jaringan publik.

Pengantar jaringan tenant (penyewa)

Dengan OpenStack Networking API, workflow (jalur kerja) untuk membuat topologi jaringan yang memisahkan API aplikasi Fractals yang dihadapi publik (public-facing) dari worker back end adalah sebagai berikut:

  • Buat jaringan dan subnet untuk node server web.

  • Buat jaringan dan subnet untuk node pekerja. Ini adalah jaringan data private.

  • Buat router untuk jaringan data private.

  • Alokasikan floating ip dan tetapkan ke node server web.

Buat jaringan

Sebagian besar penyedia layanan cloud membuat jaringan publik dapat diakses oleh Anda. Kami akan memasang router ke jaringan publik ini untuk memberikan akses Internet ke instance kami. Setelah memasang router ini ke jaringan internal kami, kami akan mengalokasikan IP floating dari jaringan publik untuk instance yang perlu diakses dari Internet.

Konfirmasikan bahwa kami memiliki jaringan publik dengan mencantumkan jaringan yang dapat diakses oleh penyewa kami. Jaringan publik tidak harus diberi nama publik - bisa jadi 'external', 'net04_ext' atau yang lainnya - yang terpenting ada dan bisa digunakan untuk menjangkau Internet.

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

Selanjutnya, buat jaringan dan subnet untuk para pekerja.

$ 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                 |
+-------------------+--------------------------------------+

Sekarang, buat jaringan dan subnet untuk server web.

$ 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                 |
+-------------------+--------------------------------------+

Selanjutnya, buat jaringan dan subnet untuk server API.

$ 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                 |
+-------------------+--------------------------------------+

Sekarang setelah Anda mendapatkan jaringan yang dibuat, lanjutkan dan buat dua Floating IP, untuk server web. Pastikan Anda mengganti 'public' dengan nama jaringan public/external yang ditawarkan oleh penyedia awan Anda.

$ 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                 |
+---------------------+--------------------------------------+

Catatan

Dunia kehabisan alamat IPv4. Jika Anda mengalami kesalahan "No more IP addresses available on network", hubungi administrator awan Anda. Anda mungkin juga ingin bertanya tentang IPv6 :)

Menghubungkan ke Internet

Sebagian besar instance memerlukan akses ke Internet. Instance di aplikasi Fraktal Anda tidak terkecuali! Tambahkan router untuk melewati lalu lintas antara berbagai jaringan yang Anda gunakan.

$ 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                 |
+-------------------------+--------------------------------------+

Tentukan gateway eksternal untuk router Anda untuk memberitahu OpenStack yang jaringannya akan digunakan untuk akses Internet.

$ 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                                                    |
+-------------------------+-------------------------------------------------------------------------+

Sekarang, pasang router Anda ke subnet pekerja, API, dan web server.

$ openstack router add subnet project_router worker_subnet

$ openstack router add subnet project_router api_subnet

$ openstack router add subnet project_router webserver_subnet

Booting pekerja

Sekarang setelah Anda mempersiapkan infrastruktur jaringan, Anda bisa terus maju dan melakukan booting sebuah instance di dalamnya. Pastikan Anda menggunakan nilai flavor dan image yang sesuai untuk awan Anda - lihat :doc: getting_started jika Anda belum melakukannya.

$ 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                                |
+--------------------------------------+-----------------------------------------------------------------+

Penyeimbang beban (load balancing)

Setelah memisahkan node pekerja Fractal ke jaringan mereka sendiri, langkah logis berikutnya adalah memindahkan layanan Fractal API ke penyeimbang beban, sehingga beberapa pekerja API dapat menangani permintaan. Dengan menggunakan penyeimbang beban, layanan API dapat disesuaikan dengan node pekerja.

Neutron LbaaS API

OpenStack Networking API memberikan dukungan untuk membuat loadbalancer, yang dapat digunakan untuk mengukur layanan web aplikasi Fraktal. Pada contoh berikut, kita membuat dua instance komputasi melalui Compute API, lalu instantiate penyeimbang beban yang akan menggunakan virtual IP (VIP) untuk mengakses layanan web yang ditawarkan oleh dua node komputasi. Hasil akhirnya adalah topologi jaringan berikut:

libcloud support added 0.14: https://developer.rackspace.com/blog/libcloud-0-dot-14-released/

Mulailah dengan melihat apa yang sudah ada.

$ 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  |
+--------------------------------------+-------------------+---------------------------------------+

Silakan membuat dua instance.

$ 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                                |
+--------------------------------------+-----------------------------------------------------------------+

Konfirmasikan bahwa mereka telah ditambahkan:

$ 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 |
+--------------------------------------+--------+--------+------------+-------------+------------------+

Lihatlah port mana yang tersedia:

$ 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'      |
+--------------------------------------+------+-------------------+--------------------------------------------+

Selanjutnya, buat floating IP tambahan. Tentukan alamat IP tetap yang harus mereka tunjuk dan port yang harus mereka gunakan:

$ 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                 |
+---------------------+--------------------------------------+

Anda siap untuk membuat anggota untuk load balancer pool, yang merujuk pada floating IP:

$ 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                                    |
+--------------------+--------------------------------------+

Anda harus bisa melihatnya di daftar anggota:

$ 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 |
+--------------------------------------+--------------+---------------+--------+----------------+--------+

Sekarang, buatlah monitor kesehatan yang akan memastikan bahwa anggota load balancer pool aktif dan mampu merespons permintaan. Jika anggota di pool mati atau tidak responsif, anggota tersebut dikeluarkan dari pool sehingga permintaan klien diarahkan ke anggota aktif lainnya.

$ 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

Sekarang buat IP virtual yang akan digunakan untuk mengarahkan lalu lintas antar berbagai anggota pool:

$ 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     |
+---------------------+--------------------------------------+

Dan konfirmasikan sudah ada di tempat:

$ 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 |
+--------------------------------------+-------+--------------+----------+----------------+--------+

Sekarang, lihatlah gambaran besarnya.

Hasil final

Dengan penambahan penyeimbang beban, topologi jaringan aplikasi Fractal sekarang mencerminkan sifat modular dari aplikasi itu sendiri.

Langkah selanjutnya

Anda sekarang harus cukup yakin bekerja dengan Network API. Untuk melihat panggilan yang tidak kami cover, lihat dokumentasi volume SDK Anda, atau coba salah satu langkah tutorial berikut:

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.