[ English | Deutsch | Indonesia | русский | English (United Kingdom) ]

Mengelola jaringan

Pertimbangan operasional, seperti kepatuhan, dapat membuatnya perlu untuk mengelola jaringan. Misalnya, menambahkan jaringan penyedia baru ke cloud yang dikelola OpenStack-Ansible. Bagian berikut adalah tugas administratif paling umum yang digariskan untuk menyelesaikan tugas itu.

Untuk informasi lebih umum tentang pemecahan masalah jaringan Anda, lihat Network Troubleshooting chapter dalam Operations Guide.

Untuk informasi lebih mendalam tentang Networking, lihat Networking Guide.

Tambahkan jembatan penyedia (provider bridge) menggunakan antarmuka jaringan baru

Tambahkan setiap jaringan penyedia ke cloud Anda untuk diketahui OpenStack-Ansible dan sistem operasi sebelum Anda dapat menjalankan playbook yang diperlukan untuk menyelesaikan konfigurasi.

Konfigurasi OpenStack-Ansible

Semua jaringan penyedia perlu ditambahkan ke konfigurasi OpenStack-Ansible.

Edit file /etc/openstack_deploy/openstack_user_config.yml dan tambahkan blok baru di bawahnya bagian provider_networks:

Pengaturan container_bridge menentukan jembatan jaringan (network bridge) fisik yang digunakan untuk menghubungkan pasangan veth dari host fisik ke container. Di dalam container, pengaturan container_interface menentukan nama di mana jaringan fisik akan tersedia. Pengaturan container_interface tidak diperlukan saat agen Neutron digunakan pada bare metal. Pastikan kedua pengaturan didefinisikan secara unik di seluruh jaringan penyedia mereka dan antarmuka jaringan dikonfigurasi dengan benar di dalam sistem operasi Anda. group_binds menentukan ke mana jaringan ini harus dihubungkan (attached), ke container atau host fisik dan pada akhirnya tergantung pada tumpukan jaringan (network stack) yang digunakan. Misalnya, Linuxbridge versus OVS. Konfigurasi range mendefinisikan ID segmentasi fisik Neutron yang secara otomatis digunakan oleh pengguna akhir (end user) saat membuat jaringan melalui horizon utama dan API Neutron. Mirip dengan true untuk konfigurasi net_name yang mendefinisikan nama addressable di dalam konfigurasi Neutron. Konfigurasi ini juga harus unik di seluruh jaringan penyedia lainnya.

Untuk informasi lebih lanjut, lihat Configure the deployment dalam OpenStack-Ansible Deployment Guide.

Memperbarui node dengan konfigurasi baru

Jalankan playbook yang sesuai tergantung pada bagian group_binds.

Misalnya, jika Anda memperbarui jaringan yang membutuhkan perubahan di semua node dengan agen bridge linux, dengan asumsi Anda memiliki infra node bernama infra01, infra02, dan infra03, jalankan:

# openstack-ansible containers-deploy.yml --limit localhost,infra01,infra01-host_containers
# openstack-ansible containers-deploy.yml --limit localhost,infra02,infra02-host_containers
# openstack-ansible containers-deploy.yml --limit localhost,infra03,infra03-host_containers

Kemudian perbarui konfigurasi neutron.

# openstack-ansible os-neutron-install.yml --limit localhost,infra01,infra01-host_containers
# openstack-ansible os-neutron-install.yml --limit localhost,infra02,infra02-host_containers
# openstack-ansible os-neutron-install.yml --limit localhost,infra03,infra03-host_containers

Kemudian perbarui node komputasi Anda jika perlu.

Hapus jembatan penyedia (provider bridge) dari OpenStack

Mirip dengan menambahkan jaringan penyedia, proses penghapusan menggunakan prosedur yang sama tetapi dalam urutan terbalik. Port Neutron perlu dihapus, sebelum penghapusan konfigurasi OpenStack-Ansible.

  1. Batalkan penetapan semua IP mengambang neutron:

    Catatan

    Ekspor jaringan Neutron yang akan dihapus sebagai UUID tunggal.

    export NETWORK_UUID=<uuid>
    for p in $( neutron port-list -c id --device_owner compute:nova --network_id=${NETWORK_UUID}| awk '/([A-Fa-f0-9]+-){3}/ {print $2}' ); do
      floatid=$( neutron floatingip-list -c id --port_id=$p | awk '/([A-Fa-z0-9]+-){3}/ { print $2 }' )
      if [ -n "$floatid" ]; then
        echo "Disassociating floating IP $floatid from port $p"
        neutron floatingip-disassociate $floatid
      fi
    done
    
  2. Hapus semua port Neutron dari instance:

    export NETWORK_UUID=<uuid>
    for p in $( neutron port-list -c id -c device_id --device_owner compute:nova --network_id=${NETWORK_UUID}| awk '/([A-Fa-f0-9]+-){3}/ {print $2}' ); do
      echo "Removing Neutron compute port $p"
      neutron port-delete $p
    done
    
  3. Hapus port router Neutron dan agen DHCP:

    export NETWORK_UUID=<uuid>
    for line in $( neutron port-list -c id -c device_id --device_owner network:router_interface --network_id=${NETWORK_UUID}| awk '/([A-Fa-f0-9]+-){3}/ {print $2 "+" $4}' ); do
      p=$( echo "$line"| cut -d'+' -f1 ); r=$( echo "$line"| cut -d'+' -f2 )
      echo "Removing Neutron router port $p from $r"
      neutron router-interface-delete $r port=$p
    done
    
    for agent in $( neutron agent-list -c id --agent_type='DHCP Agent' --network_id=${NETWORK_UUID}| awk '/([A-Fa-f0-9]+-){3}/ {print $2}' ); do
      echo "Remove network $NETWORK_UUID from Neutron DHCP Agent $agent"
      neutron dhcp-agent-network-remove "${agent}" $NETWORK_UUID
    done
    
  4. Hapus jaringan Neutron:

    export NETWORK_UUID=<uuid>
    neutron net-delete $NETWORK_UUID
    
  5. Hapus jaringan penyedia dari konfigurasi provider_networks dari konfigurasi OpenStack-Ansible /etc/openstack_deploy/openstack_user_config.yml dan jalankan kembali playbook berikut:

    # openstack-ansible lxc-containers-create.yml --limit infra01:infra01-host_containers
    # openstack-ansible lxc-containers-create.yml --limit infra02:infra02-host_containers
    # openstack-ansible lxc-containers-create.yml --limit infra03:infra03-host_containers
    # openstack-ansible os-neutron-install.yml --tags neutron-config
    

Nyalakan kembali kontainer agen Jaringan

Dalam keadaan tertentu, konfigurasi atau masalah sementara, satu kontainer khusus atau semua kontainer neutron perlu di-restart.

Ini dapat diselesaikan dengan beberapa perintah:

  1. Contoh rebooting kontainer yang masih dapat diakses.

    Contoh ini akan mengeluarkan reboot ke kontainer yang bernama dengan neutron_agents_container_hostname_name dari dalam:

    # ansible -m shell neutron_agents_container_hostname_name -a 'reboot'
    
  2. Contoh reboot satu kontainer pada satu waktu, 60 detik terpisah:

    # ansible -m shell neutron_agents_container -a 'sleep 60; reboot' --forks 1
    
  3. Jika kontainer tidak merespons, dapat dimulai kembali dari host jaringan fisik:

    # ansible -m shell network_hosts -a 'for c in $(lxc-ls -1 |grep neutron_agents_container); do lxc-stop -n $c && lxc-start -d -n $c; done' --forks 1