[ English | русский | 한국어 (대한민국) | Deutsch | Indonesia | English (United Kingdom) | français ]

Mengelola cloud Anda

Bab ini dimaksudkan untuk mendokumentasikan tugas operasi OpenStack yang merupakan bagian integral dari dukungan operasi dalam penyebaran OpenStack-Ansible.

Ini menjelaskan operasi seperti mengelola image, instance, atau jaringan.

[ English | русский | 한국어 (대한민국) | Deutsch | Indonesia | English (United Kingdom) | français ]

Mengelola images

Image mewakili sistem operasi, perangkat lunak, dan pengaturan apa pun yang diperlukan oleh instance, tergantung pada sasaran proyek. Buat image terlebih dahulu sebelum membuat instance apa pun.

Menambahkan images dapat dilakukan melalui Dasbor, atau command line. Pilihan lain yang tersedia adalah alat python-openstackclient, yang dapat diinstal pada node controller, atau di workstation.

Menambahkan image menggunakan Dasbor

Untuk menambahkan image menggunakan Dasbor, siapkan file biner image, yang harus dapat diakses melalui HTTP menggunakan URL yang valid dan langsung. Image dapat dikompresi menggunakan .zip atau .tar.gz.

Catatan

Mengunggah image menggunakan Dasbor akan tersedia untuk pengguna dengan hak istimewa administrator. Operator dapat mengatur hak akses pengguna.

  1. Log in ke Dasbor.

  2. Pilih tab Admin di panel navigasi dan klik images.

  3. Klik tombol Create Image. Kotak dialog Create Image akan muncul.

  4. Masukkan detail image, termasuk Image Location, yang mana lokasi URL image diperlukan.

  5. Klik tombol Create Image. Image yang baru dibuat mungkin memerlukan beberapa waktu sebelum benar-benar diunggah karena image tiba dalam antrean image.

Menambahkan image menggunakan command line

Kontainer utilitas menyediakan lingkungan CLI untuk konfigurasi dan manajemen tambahan.

  1. Akses kontainer utilitas:

    $ lxc-attach -n `lxc-ls -1 | grep utility | head -n 1`
    

Gunakan klien openstack dalam kontainer utilitas untuk mengelola semua glance images. See the openstack client official documentation on managing images.

[ English | русский | 한국어 (대한민국) | Deutsch | Indonesia | English (United Kingdom) | français ]

Mengelola instance

Bab ini menjelaskan cara membuat dan mengakses instance.

Membuat instance menggunakan Dasbor

Menggunakan image, buat instance baru melalui opsi Dasbor.

  1. Log in ke Dasbor, dan pilih proyek Compute dari daftar tarik-turun.

  2. Klik opsi Images.

  3. Cari image yang akan bertindak sebagai basis instance dari tabel Images.

  4. Klik Launch dari kolom Actions.

  5. Periksa dialog Launch Instances, dan temukan tab details. Masukkan nilai yang sesuai untuk instance.

    1. Dalam dialog Launch Instance, klik tab Access & Security. Pilih keypair. Setel grup keamanan sebagai "default".

    2. Klik Networking tab. Tab ini tidak akan tersedia jika jaringan OpenStack (neutron) belum diaktifkan. Jika jaringan diaktifkan, pilih jaringan tempat instance akan berada.

    3. Klik Volume Options tab. Tab ini hanya akan tersedia jika volume Block Storage ada untuk instance. Pilih Don't boot from a volume untuk saat ini.

      Untuk informasi lebih lanjut tentang melampirkan volume Block Storage ke instance untuk penyimpanan persisten, lihat bagian Managing volumes for persistent storage di bawah ini.

    4. Tambahkan skrip kustomisasi, jika diperlukan, dengan mengklik tab Post-Creation. Ini berjalan setelah instance telah dibuat. Beberapa instance mendukung data pengguna, seperti kata sandi root, atau pengguna admin. Masukkan informasi khusus untuk instance di sini jika diperlukan.

    5. Klik Advanced Options. Tentukan apakah instance menggunakan drive konfigurasi untuk menyimpan metadata dengan memilih jenis partisi disk.

  6. Klik Launch untuk membuat instance. Instance akan dimulai pada node komputasi. Halaman Instance akan terbuka dan mulai membuat instance baru. Halaman Instance yang terbuka akan mencantumkan nama, ukuran, status, dan tugas instance. Status daya dan alamat IP publik dan pribadi juga tercantum di sini.

    Prosesnya akan memakan waktu kurang dari satu menit untuk selesai. Pembuatan instance selesai ketika status terdaftar sebagai aktif. Segarkan halaman untuk melihat instance aktif baru.

    Launching an instance options

    Field Name

    Required

    Details

    Availability Zone

    Optional

    Zona ketersediaan tempat layanan image membuat instance. Jika tidak ada zona ketersediaan yang ditentukan, tidak akan ada instance yang ditemukan. Penyedia awan menetapkan zona ketersediaan ke nilai tertentu.

    Instance Name

    Required

    Nama instance baru, yang menjadi nama host awal server. Jika nama server diubah dalam API atau langsung diubah, nama Dasbor tetap tidak berubah

    Image

    Required

    Jenis format kontainer, salah satunya ami, ari, aki, bare, atau ovf

    Flavor

    Required

    Konfigurasi vCPU, Memory, dan Disk. Perhatikan bahwa flavor yang lebih besar dapat membutuhkan waktu lama untuk dibuat. Jika membuat instance untuk pertama kalinya dan menginginkan sesuatu yang kecil untuk diuji, pilih m1.small.

    Instance Count

    Required

    Jika membuat beberapa instance dengan konfigurasi ini, masukkan bilangan integer ke nomor yang diizinkan oleh kuota, yaitu 10 secara default.

    Instance Boot Source

    Required

    Tentukan apakah instance akan didasarkan pada image atau snapshot. Jika ini kali pertama membuat instance, belum akan ada snapshot yang tersedia.

    Image Name

    Required

    Instance akan boot dari image yang dipilih. Opsi ini akan terisi sebelumnya dengan instance yang dipilih dari tabel. Namun, pilih Boot from Snapshot di Instance Boot Source, dan itu akan menjadi default untuk Snapshot sebagai gantinya.

    Security Groups

    Optional

    Opsi ini memberikan grup keamanan ke instance. Grup keamanan default diaktifkan ketika tidak ada grup khusus yang ditentukan di sini. Grup Keamanan, mirip dengan firewall cloud, menentukan lalu lintas jaringan masuk yang diteruskan ke instance.

    Keypair

    Optional

    Tentukan pasangan kunci dengan opsi ini. Jika image menggunakan static key set (tidak disarankan), pasangan kunci tidak diperlukan.

    Selected Networks

    Optional

    Untuk menambahkan jaringan ke suatu instance, klik + dalam Networks field.

    Customisation Script

    Optional

    Tentukan skrip penyesuaian. Skrip ini berjalan setelah instance diluncurkan dan menjadi aktif.

Membuat instance menggunakan command line

Pada command line, pembuatan instance dikelola dengan perintah openstack server create. Sebelum meluncurkan sebuah instance, tentukan image dan flavor apa yang tersedia untuk membuat instance baru menggunakan perintah openstack image list dan openstack flavor list.

  1. Masuk ke kontainer utilitas apa pun.

  2. Berikan perintah openstack server create dengan nama untuk instance, bersama dengan nama image dan flavor untuk digunakan:

    $ openstack server create --image precise-image --flavor 2 --key-name example-key example-instance
    +-------------------------------------+--------------------------------------+
    |               Property              |                Value                 |
    +-------------------------------------+--------------------------------------+
    |          OS-DCF:diskConfig          |                MANUAL                |
    |         OS-EXT-SRV-ATTR:host        |                 None                 |
    | OS-EXT-SRV-ATTR:hypervisor_hostname |                 None                 |
    |    OS-EXT-SRV-ATTR:instance_name    |          instance-0000000d           |
    |        OS-EXT-STS:power_state       |                  0                   |
    |        OS-EXT-STS:task_state        |              scheduling              |
    |         OS-EXT-STS:vm_state         |               building               |
    |              accessIPv4             |                                      |
    |              accessIPv6             |                                      |
    |              adminPass              |             ATSEfRY9fZPx             |
    |             config_drive            |                                      |
    |               created               |         2012-08-02T15:43:46Z         |
    |                flavor               |               m1.small               |
    |                hostId               |                                      |
    |                  id                 | 5bf46a3b-084c-4ce1-b06f-e460e875075b |
    |                image                |             precise-image            |
    |               key_name              |              example-key             |
    |               metadata              |                  {}                  |
    |                 name                |           example-instance           |
    |               progress              |                  0                   |
    |                status               |                BUILD                 |
    |              tenant_id              |   b4769145977045e2a9279c842b09be6a   |
    |               updated               |         2012-08-02T15:43:46Z         |
    |               user_id               |   5f2f2c28bdc844f9845251290b524e80   |
    +-------------------------------------+--------------------------------------+
    
  3. Untuk memeriksa apakah instance telah berhasil dibuat, berikan perintah openstack server list:

    $ openstack server list
    +------------------+------------------+--------+-------------------+---------------+
    |        ID        |       Name       | Status |      Networks     |   Image Name  |
    +------------------+------------------+--------+-------------------+---------------+
    | [ID truncated]   | example-instance | ACTIVE |  public=192.0.2.0 | precise-image |
    +------------------+------------------+--------+-------------------+---------------+
    

Mengelola sebuah instance

  1. Masuk ke Dasbor. Pilih salah satu proyek, dan klik Instances.

  2. Pilih sebuah instance dari daftar instance yang tersedia.

  3. Periksa kolom Actions, dan klik opsi More . Pilih status instance.

Kolom Actions berisi opsi berikut:

  • Ubah ukuran atau rekondisi setiap instance

  • Lihat log konsol instance

  • Edit instance

  • Ubah grup keamanan

  • Jeda, lanjutkan, atau tangguhkan instance

  • Pengaturan ulang perangkat lunak atau keras instance

Catatan

Hentikan instance di bawah kolom Actions.

Managing volumes for persistent storage

Volume melampirkan ke instance, memungkinkan penyimpanan persisten. Penyimpanan volume menyediakan sumber memori untuk instance. Administrator dapat melampirkan volume ke instance yang sedang berjalan, atau memindahkan volume dari satu instance ke instance lainnya.

Instance Nova migrasi langsung

Nova mampu melakukan migrasi langsung dari satu host ke host yang berbeda untuk mendukung berbagai tugas operasional termasuk:

  • Pemeliharaan Host

  • Manajemen kapasitas host

  • Mengubah ukuran dan memindahkan instance ke perangkat keras yang lebih baik

Implikasi drive konfigurasi Nova

Bergantung pada versi OpenStack-Ansible yang digunakan, Nova dapat dikonfigurasi untuk memaksa attachment drive konfigurasi ke instance. Dalam hal ini, image CD-ROM ISO9660 akan tersedia untuk instance melalui titik mount /mnt. Ini dapat digunakan oleh alat, seperti cloud-init, untuk mendapatkan akses ke metadata instance. Ini adalah cara alternatif untuk mengakses Metadata bergaya Nova EC2.

Untuk memungkinkan migrasi langsung instance Nova, ini memaksa penyediaan drive config (CD-ROM) perlu dimatikan, atau format dari drive konfigurasi perlu diubah ke format disk seperti vfat, format yang baik Linux dan Instance Windows dapat mengakses.

Pekerjaan ini diperlukan untuk semua versi Libvirt sebelum 1.2.17.

Untuk mematikan penyediaan paksa dari drive config, tambahkan penggantinya berikut ke file /etc/openstack_deploy/user_variables.yml:

nova_force_config_drive: False

Untuk mengubah format drive konfigurasi, ke format gaya hard disk, gunakan konfigurasi berikut di dalam yang sama file /etc/openstack_deploy/user_variables.yml :

nova_nova_conf_overrides:
  DEFAULT:
    config_drive_format: vfat
    force_config_drive: false

Tunneling versus transportasi langsung

Dalam konfigurasi default, Nova menentukan URL transportasi yang benar untuk cara mentransfer data dari satu host ke yang lain. Tergantung pada nova_virt_type mengganti konfigurasi berikut yang digunakan:

  • kvm default ke qemu+tcp://%s/system

  • qemu default ke qemu+tcp://%s/system

  • xen defaults ke xenmigr://%s/system

Libvirt port TCP untuk mentransfer data untuk bermigrasi.

OpenStack-Ansible mengubah pengaturan default dan menggunakan koneksi SSH terenkripsi untuk mentransfer data instance.

live_migration_uri = "qemu+ssh://nova@%s/system?no_verify=1&keyfile={{ nova_system_home_folder }}/.ssh/id_rsa"

Konfigurasi lain dapat dikonfigurasi di dalam ke /etc/openstack_deploy/user_variables.yml:

nova_nova_conf_overrides:
  libvirt:
    live_migration_completion_timeout: 0
    live_migration_progress_timeout: 0
    live_migration_uri: "qemu+ssh://nova@%s/system?keyfile=/var/lib/nova/.ssh/id_rsa&no_verify=1"

Penyimpanan lokal versus bersama

Secara default, migrasi langsung mengasumsikan bahwa instance Nova Anda disimpan di penyimpanan bersama dan KVM/Libvirt hanya perlu menyinkronkan memori dan image dasar instance Nova ke host baru. Migrasi langsung di penyimpanan lokal akan gagal sebagai hasil dari asumsi tersebut. Migrasi dengan penyimpanan lokal dapat diselesaikan dengan mengizinkan migrasi disk instance dengan opsi --block-migrate.

Fitur Nova tambahan fitur seperti penyimpanan sementara atau swap berdampak pada kinerja dan kesuksesan migrasi langsung.

Volume terpasang Cinder juga membutuhkan versi Libvirt yang lebih besar atau sama dengan 1.2.17.

Melaksanakan migrasi

Migrasi langsung dapat diakses melalui klien nova.

nova live-migration [--block-migrate] [--force] <uuid> [<host>]

Examplarery live migration pada penyimpanan lokal:

nova live-migration --block-migrate <uuid of the instance> <nova host>

Memantau status

Setelah permintaan migrasi langsung diterima, status dapat dipantau dengan klien nova:

nova migration-list

+-----+------------+-----------+----------------+--------------+-----------+-----------+---------------+------------+------------+------------+------------+-----------------+
| Id | Source Node | Dest Node | Source Compute | Dest Compute | Dest Host | Status    | Instance UUID | Old Flavor | New Flavor | Created At | Updated At | Type            |
+----+-------------+-----------+----------------+--------------+-----------+-----------+---------------+------------+------------+------------+------------+-----------------+
| 6  | -           | -         | compute01      | compute02    | -         | preparing | f95ee17a-d09c | 7          | 7          | date       | date       | live-migration  |
+----+-------------+-----------+----------------+--------------+-----------+-----------+---------------+------------+------------+------------+------------+-----------------+

Untuk memfilter daftar, opsi --host atau --status dapat digunakan:

nova migration-list --status error

Dalam kasus di mana migrasi langsung gagal, baik sumber dan tujuan menghitung node perlu diperiksa untuk kesalahan. Biasanya cukup mencari UU UU hanya untuk menemukan kesalahan yang terkait dengan migrasi langsung.

Bentuk lain dari migrasi instance

Selain migrasi langsung, Nova menawarkan opsi untuk memigrasikan seluruh host dalam migrasi online (langsung) atau offline (dingin).

Perintah klien nova berikut disediakan:

  • host-evacuate-live

    Live bermigrasi semua instance dari host yang ditentukan ke host lain jika pemanfaatan sumber daya memungkinkan. Cara terbaik adalah menggunakan penyimpanan bersama seperti Ceph atau ZFS untuk evakuasi host.

  • host-servers-migrate

    Perintah ini mirip dengan meng-host evakuasi tetapi memindahkan semua instance dari host yang ditentukan saat mereka shutdown.

  • resize

    Mengubah (peningkatan) flavor instance Nova saat melakukan boot ulang dan juga memigrasikan (cold) instance ke host baru untuk mengakomodasi persyaratan sumber daya baru. Operasi ini dapat mempertimbangkan waktu, tergantung ukuran image disk.

[ English | русский | 한국어 (대한민국) | Deutsch | Indonesia | English (United Kingdom) | français ]

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