pada part8 ini kita akan membahas tentang neutron networking service memungkinkan kita untuk membuat dan memasang interface pada openstack ke jaringan lain, kita juga bisa membuat load balancer, vpn , firewall atatupun vrouter.
pada Neutron terdapat beberapa componen diantaranya adalah neutron-server, openstack networking plug-ins and agent dan messaging queue.
[Konsep Neutron]
Openstack Networking(Neutron) mengelola semua aspek jaringan pada virtual networking infrastructure (VNI) dan layer akses dari Pyshical Networking Infrastructure (PNI) di Openstack Environment. tidak hanya itu, project openstack networking memungkinkan untuk membuat virtual topologi yang advance yang mungkin mencakup layanan seperti firewall, load balancer dan virtual private network (VPN).
tidak hanya itu Networking juga menyediakan network, subnet dan router sebagai objek akstraksi. dan cangihnya setiap abstraksi memiliki kemampuan yang hampir sama dengan perangkat aslinya. dan yang cukup menarik bagi saya adalah pada openstack kita bisa menerapkan software defined networking semacam protocol openflow bisa digunakan sebagai controller untuk memanagement semua jaringan di openstack.
okee kita langsung coba saja, sebelum kita install neutron, kita harus membuat database terlebih dahulu.
Jalankan perintah dibawah ini pada controller node
[CONTROLLER NODE]
kita akan membuat database neutron
- login ke database dengan user root
1 2 3 4 5 6 7 8 9 10 11 |
root@controller:~# mysql -u root -p Enter password: password_root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 184 Server version: 10.0.27-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04 Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> |
- membuat database neutron
1 2 |
MariaDB [(none)]> CREATE DATABASE neutron; Query OK, 1 row affected (0.00 sec) |
- kemudian memberikan hak akses user neutron
1 2 3 4 5 |
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'password_neutron'; Query OK, 0 rows affected (0.06 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'password_neutron'; Query OK, 0 rows affected (0.00 sec) |
- seletah itu keluar dari maridb server. dan aktifkan admin-openrc
1 |
root@controller:~# . admin-openrc |
- Membuat User Neutron
1 2 3 4 5 6 7 8 9 10 11 12 |
root@controller:~# openstack user create --domain default --password-prompt neutron User Password: password_neutron Repeat User Password: password_neutron +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | f9b629cb3c6945d790b0b0305259016e | | name | neutron | | password_expires_at | None | +---------------------+----------------------------------+ |
- Menambahkan role admin ke user neutron
1 |
root@controller:~# openstack role add --project service --user neutron admin |
*pada bagian ini tidak menampilan output
- membuat entitas neutron service
1 2 3 4 5 6 7 8 9 10 |
root@controller:~# openstack service create --name neutron --description "Openstack Networking" network +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Openstack Networking | | enabled | True | | id | e47564abb60e4b659980b43141872f81 | | name | neutron | | type | network | +-------------+----------------------------------+ |
okee, setelah itu kita akan membuat API endpoint untuk neutron networking
- Membuat API endpoint untuk networking service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
root@controller:~# openstack endpoint create --region RegionOne network public http://controller:9696 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 16d51d98c0c04d41936523ffe2517490 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | e47564abb60e4b659980b43141872f81 | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+ root@controller:~# openstack endpoint create --region RegionOne network internal http://controller:9696 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 272b844eb5df4020b861c99315ad0cd4 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | e47564abb60e4b659980b43141872f81 | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+ root@controller:~# openstack endpoint create --region RegionOne network admin http://controller:9696 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | bf9cdaa4e0e446118c27210afa665a0b | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | e47564abb60e4b659980b43141872f81 | | service_name | neutron | | service_type | network | | url | http://controller:9696 | +--------------+----------------------------------+ |
setelah kita membuat endpoint API untuk networking service. sekarang saatnya kita akan memilih network apa yang akan kita gunakan. pada openstack newton ini ada 2 opsi yaitu
Pada Opsi 1 merupakan mendeploy arsitektur yang paling sederhana yang hanya mendukung pelampiran instance ke provide network dan tidak memiliki layana self-service (private) network,router atau floating ip , sehingga yang dapat mengelola jaringan secara penuh hanya admin atau user yang sudah diberi hak akses.
Pada Opsi 2 merupakan tambahan dari fitur opsi 1 dengan adanya layer 3 service yang mendukung attaching instance pada self-service network. pada opsi 2 ini sangat powerfull yaitu user demo atau user biasa dapat mengembangkan jaringannya dengan layanan self-service sehingga user bisa membuat vrouter, subnet, network secara mandiri dan dapat memanfaatkan floating ip untuk koneksi ke internet.
jaringan self-service biasanya mengunakan jaringan overlay, protocol jaringan yang digunakan pada jaringan overlay biasanya seperti VXLAN (Virtual Extensible LAN)
Opsi 2 juga mendukung opsi 1, jadi sudah pasti kita akan mengunakan opsi 2 😀
*SAYA MEMILIH OPTION 2 (SELF-SERVICE NETWORK)
okee, setelah kita memilih opsi 2 sebagai network service di openstack maka setelah itu kita akan menginstall kompenen yang dibutuhkan untuk mendeploy sebuah self service network.
- Install komponen neutron networking service
1 |
root@controller:~# apt install neutron-server neutron-plugin-ml2 neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent |
kemudian kita mengedit file /etc/neutron/neutron.conf
- Mengatur hak akses pada bagian [database]
1 2 3 |
[database] ...... connection = mysql+pymysql://neutron:password_neutron@controller/neutron |
- mengaktifkan modular plugin layer 2 (ML2) , router service dan overlapping ip address
1 2 3 4 5 |
[DEFAULT] ... core_plugin = ml2 service_plugins = router allow_overlapping_ips = True |
cari satu persatu, pastikan sesuai dengan konfig diatas
- mengatur RabbitMQ akses pada bagian [DEFAULT] dan [oslo_messaging_rabbit]
1 2 3 4 5 6 7 8 9 |
[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = controller rabbit_userid = openstack rabbit_password = password_rabbit |
perhatikan secara seksama, untuk konfig di neutron ini karena cukup banyak yang harus diconfig.
- Mengatur keystone identity service access pada bagian [DEFAULT] dan [keystone_authtoken]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[DEFAULT] ... auth_strategy = keystone [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = password_neutron |
pastikan copy config keystone_authtoken diatas, dan settingan di filenya masih di comment(#).
- mengkonfigurasi networking untuk notifikasi compute terhadap perubahan topologi jaringan , pada bagian [DEFAULT] dan [nova]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[DEFAULT] ... notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True [nova] ... auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = password_nova |
kemudian setelah itu, kita akan mengkonfigurasi modular plug-in layer 2 (ML2).
ML2 plugin mengunakan mekanisme linux-bridge untuk membangun infrastruktur network virtual layer 2 (bridging dan switching) sebagai instance.
edit file /etc/neutron/plugins/ml2/ml2_conf.ini
- Mengaktifkan flat,vlan dan vxlan pada bagian [ml2]
1 2 3 |
[ml2] ... type_drivers = flat,vlan,vxlan |
- mengaktifkan VXLAN self-service network pada bagian [ml2]
1 2 3 |
[ml2] ... tenant_network_types = vxlan |
- mengaktifkan mekanisme linux bridge dan layer 2 population pada bagian [ml2]
1 2 3 |
[ml2] ... mechanism_drivers = linuxbridge,l2population |
*linux bridge hanya support VXLAN overlay network
- mengaktifkan driver port ekstensi security pada bagian [ml2]
1 2 3 |
[ml2] ... extension_drivers = port_security |
- konfigurasi provider jaringan virtual sebagai flat network (jaringan datar) pada [ml2_type_flat]
1 2 3 |
[ml2_type_flat] ... flat_networks = provider |
- konfigurasi VXLAN network identifier range untuk self-service network pada [ml2_type_vxlan]
1 2 3 |
[ml2_type_vxlan] ... vni_ranges = 1:1000 |
jadi range untuk virtual network infrastructure pada vxlan adalah 1 sampai 1000 vlan
- konfigurasi ipset (untuk mengatur firewall) untuk mengatur efisensi aturan group security
1 2 3 |
[securitygroup] ... enable_ipset = True |
Setelah itu mengatur Linux Bridge Agent .
Linux Brdge Agent membangun layer 2(bridge & switching) virtual network infrastructure untuk instance dan menangani security group
edit file /etc/neutron/plugins/ml2/linuxbridge_agent.ini
- memetakan penyedia jaringan virtual ke penyedia interface jaringan fisik pada bagian [linux_bridge]
1 2 3 |
[linux_bridge] #physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME physical_interface_mappings = provider:ens160 |
pada PROVIDER_INTERFACE_NAME , dirubah dengan nama interface pada controller.
- mengaktifkan VXLAN overlay networks, ip address fisik untuk mengangani overlay network dan mengatifkan layer 2 population pada bagian [vxlan]
1 2 3 4 5 |
[vxlan] enable_vxlan = True #local_ip = OVERLAY_INTERFACE_IP_ADDRESS local_ip = 10.0.0.10 l2_population = True |
pada local_ip , masukan ip address management pada controller node.
- mengaktifkan security group dan konfigurasi linux bridge , driver iptable firewall pada [securitygroup]
1 2 3 4 |
[securitygroup] ... enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver |
kemudian setelah itu kita, mengkonfigurasi layer 3 agent. pada layer 3 agent ini menyediakan routing dan NAT untuk self-service jaringan virtual
edit file /etc/neutron/l3_agent.ini
- konfigurasi driver linux bridge interface dan external network bridge pada bagian [DEFAULT]
1 2 3 4 |
[DEFAULT] ... interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver external_network_bridge = |
pada external network bridge sengaja tidak memiliki nilai untuk mengaktifkan beberapa jarinagn eksternal pada jaringan tunggal.
kemudian setelah itu mengkonfigurasi DHCP agent untuk menyediakan layanan DHCP pada jaringan virtual.
edit file /etc/neutron/dhcp_agent.ini
- mengkonfigurasi driver linux bridge interface , driver dnsmasq DHCP, dan mengaktifkan isolate metadata sehingga peyedia jaringan dapat mengakses metadata melalui jaringan pada bagian [DEFAULT]
1 2 3 4 5 |
[DEFAULT] ... interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = True |
setelah itu kita mengatur metadata agent, dan edit file /etc/neutron/metadata_agent.ini
- konfigurasi parameter akses , mengaktifkan metadata proxy dan mengkonfigurasi secret pada bagian [DEFAULT]
1 2 3 4 5 |
[DEFAULT] ... nova_metadata_ip = controller #metadata_proxy_shared_secret = METADATA_SECRET metadata_proxy_shared_secret = rahasia |
rubah metadata proxy shared secret bisa diset secara bebas namun nantinya harus sama dengan metadata proxy yang di nova compute
kemdian konfigurasi compute pada jaringan. dan edit file /etc/nova/nova.conf
- konfigurasi parameter akses , mengaktifkan metadata proxy dan mengkonfigurasi secret pada bagian [neutron]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[neutron] ... url = http://controller:9696 auth_url = http://controller:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = password_neutron service_metadata_proxy = True #metadata_proxy_shared_secret = METADATA_SECRET metadata_proxy_shared_secret = rahasia |
pada bagian password isikan password user neutron dan untuk metadata proxy shared secret isikan sama dengan metadata proxy pada metadata agent.
wooow, banyak sekali ya 😀 , oke sekarang waktunya untuk migrasi database ke mariadb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
root@controller:~# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. Running upgrade for neutron ... INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade -> kilo, kilo_initial INFO [alembic.runtime.migration] Running upgrade kilo -> 354db87e3225, nsxv_vdr_metadata.py INFO [alembic.runtime.migration] Running upgrade 354db87e3225 -> 599c6a226151, neutrodb_ipam INFO [alembic.runtime.migration] Running upgrade 599c6a226151 -> 52c5312f6baf, Initial operations in support of address scopes INFO [alembic.runtime.migration] Running upgrade 52c5312f6baf -> 313373c0ffee, Flavor framework INFO [alembic.runtime.migration] Running upgrade 313373c0ffee -> 8675309a5c4f, network_rbac INFO [alembic.runtime.migration] Running upgrade 8675309a5c4f -> 45f955889773, quota_usage INFO [alembic.runtime.migration] Running upgrade 45f955889773 -> 26c371498592, subnetpool hash ..... OK |
pastikan proses migrasi upgrade tidak ada yang error. oke setelah itu kita restart servicenya
- Restart compute API service
1 2 |
root@controller:~# /etc/init.d/nova-api restart [ ok ] Restarting nova-api (via systemctl): nova-api.service. |
- Restart network service
1 2 3 4 5 6 7 8 |
root@controller:~# /etc/init.d/neutron-server restart [ ok ] Restarting neutron-server (via systemctl): neutron-server.service. root@controller:~# /etc/init.d/neutron-linuxbridge-agent restart [....] Restarting neutron-linuxbridge-agent (via systemctl): neutron-linuxbridge[ ok t.service. root@controller:~# /etc/init.d/neutron-dhcp-agent restart [ ok ] Restarting neutron-dhcp-agent (via systemctl): neutron-dhcp-agent.service. root@controller:~# /etc/init.d/neutron-metadata-agent restart [....] Restarting neutron-metadata-agent (via systemctl): neutron-metadata-agent[ ok ice. |
- pada network opsi 2 harus merestart layer 3 service
1 2 |
root@controller:~# /etc/init.d/neutron-l3-agent restart [ ok ] Restarting neutron-l3-agent (via systemctl): neutron-l3-agent.service. |
okee cukup sekian dulu proses installasi openstack part8, nanti kita akan lanjutkan pada part9 untuk setting neutron di compute node
wassalam
System Engineer
Komentar