Controller Node installieren und konfigurieren

Controller Node installieren und konfigurieren

Dieser Abschnitt beschreibt, wie der Compute-Dienst auf dem Controller-Node zu installieren und zu konfigurieren ist, der Codename lautet Nova.

Voraussetzungen

Bevor Sie den Compute-Dienst installieren und konfigurieren, müssen Sie Datenbanken, Diensteanmeldeinformationen und API-Endpunkte erstellen.

  1. Führen Sie diese Schritte zum Erstellen der Datenbanken aus:

    • Benutzen Sie den Datenbank-Client zur Verbindung zum Datenbank-Server als Benutzer root :

      $ mysql -u root -p
      
    • Erstellen Sie die Datenbanken nova_api, nova, und nova_cell0:

      MariaDB [(none)]> CREATE DATABASE nova_api;
      MariaDB [(none)]> CREATE DATABASE nova;
      MariaDB [(none)]> CREATE DATABASE nova_cell0;
      
    • Vergeben Sie die richtigen Zugriffsberechtigungen für die Datenbanken:

      MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
        IDENTIFIED BY 'NOVA_DBPASS';
      MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
        IDENTIFIED BY 'NOVA_DBPASS';
      
      MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
        IDENTIFIED BY 'NOVA_DBPASS';
      MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
        IDENTIFIED BY 'NOVA_DBPASS';
      
      MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
        IDENTIFIED BY 'NOVA_DBPASS';
      MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
        IDENTIFIED BY 'NOVA_DBPASS';
      

      Ersetzen Sie NOVA_DBPASS durch ein geeignetes Passwort.

    • Beenden Sie den Datenbank-Client.

  2. Sourcen Sie die admin Anmeldeinformationen, um Zugriff auf die Admin-Kommandos zu bekommen:

    $ . admin-openrc
    
  3. Erstellen Sie die Compute-Dienst Anmeldeinformationen:

    • Erstellen Sie den Benutzer nova:

      $ openstack user create --domain default --password-prompt nova
      
      User Password:
      Repeat User Password:
      +---------------------+----------------------------------+
      | Field               | Value                            |
      +---------------------+----------------------------------+
      | domain_id           | default                          |
      | enabled             | True                             |
      | id                  | 8a7dbf5279404537b1c7b86c033620fe |
      | name                | nova                             |
      | options             | {}                               |
      | password_expires_at | None                             |
      +---------------------+----------------------------------+
      
    • Fügen Sie die Rolle admin zum Benutzer nova hinzu:

      $ openstack role add --project service --user nova admin
      

      Bemerkung

      Das Kommando erzeugt keine Ausgabe.

    • Erstellen Sie die Dienstentität nova:

      $ openstack service create --name nova \
        --description "OpenStack Compute" compute
      
      +-------------+----------------------------------+
      | Field       | Value                            |
      +-------------+----------------------------------+
      | description | OpenStack Compute                |
      | enabled     | True                             |
      | id          | 060d59eac51b4594815603d75a00aba2 |
      | name        | nova                             |
      | type        | compute                          |
      +-------------+----------------------------------+
      
  4. Erstellen Sie die Compute-API Dienst-Endpunkte:

    $ openstack endpoint create --region RegionOne \
      compute public http://controller:8774/v2.1
    
    +--------------+-------------------------------------------+
    | Field        | Value                                     |
    +--------------+-------------------------------------------+
    | enabled      | True                                      |
    | id           | 3c1caa473bfe4390a11e7177894bcc7b          |
    | interface    | public                                    |
    | region       | RegionOne                                 |
    | region_id    | RegionOne                                 |
    | service_id   | 060d59eac51b4594815603d75a00aba2          |
    | service_name | nova                                      |
    | service_type | compute                                   |
    | url          | http://controller:8774/v2.1               |
    +--------------+-------------------------------------------+
    
    $ openstack endpoint create --region RegionOne \
      compute internal http://controller:8774/v2.1
    
    +--------------+-------------------------------------------+
    | Field        | Value                                     |
    +--------------+-------------------------------------------+
    | enabled      | True                                      |
    | id           | e3c918de680746a586eac1f2d9bc10ab          |
    | interface    | internal                                  |
    | region       | RegionOne                                 |
    | region_id    | RegionOne                                 |
    | service_id   | 060d59eac51b4594815603d75a00aba2          |
    | service_name | nova                                      |
    | service_type | compute                                   |
    | url          | http://controller:8774/v2.1               |
    +--------------+-------------------------------------------+
    
    $ openstack endpoint create --region RegionOne \
      compute admin http://controller:8774/v2.1
    
    +--------------+-------------------------------------------+
    | Field        | Value                                     |
    +--------------+-------------------------------------------+
    | enabled      | True                                      |
    | id           | 38f7af91666a47cfb97b4dc790b94424          |
    | interface    | admin                                     |
    | region       | RegionOne                                 |
    | region_id    | RegionOne                                 |
    | service_id   | 060d59eac51b4594815603d75a00aba2          |
    | service_name | nova                                      |
    | service_type | compute                                   |
    | url          | http://controller:8774/v2.1               |
    +--------------+-------------------------------------------+
    
  5. Erstellen Sie einen Benutzer für den Placement-Dienst mit dem von Ihnen verwendeten PLACEMENT_PASS:

    $ openstack user create --domain default --password-prompt placement
    
    User Password:
    Repeat User Password:
    +---------------------+----------------------------------+
    | Field               | Value                            |
    +---------------------+----------------------------------+
    | domain_id           | default                          |
    | enabled             | True                             |
    | id                  | fa742015a6494a949f67629884fc7ec8 |
    | name                | placement                        |
    | options             | {}                               |
    | password_expires_at | None                             |
    +---------------------+----------------------------------+
    
  6. Fügen Sie den Placement-Benutzer zum Diensteprojekt mit der Admin-Rolle hinzu:

    $ openstack role add --project service --user placement admin
    

    Bemerkung

    Das Kommando erzeugt keine Ausgabe.

  7. Erstellen Sie die Placement API im Dienstekatalog:

    $ openstack service create --name placement --description "Placement API" placement
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | Placement API                    |
    | enabled     | True                             |
    | id          | 2d1a27022e6e4185b86adac4444c495f |
    | name        | placement                        |
    | type        | placement                        |
    +-------------+----------------------------------+
    
  8. Erzeugen Sie die Placement API Dienst Endpunkte:

    $ openstack endpoint create --region RegionOne placement public http://controller:8778
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 2b1b2637908b4137a9c2e0470487cbc0 |
    | interface    | public                           |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 2d1a27022e6e4185b86adac4444c495f |
    | service_name | placement                        |
    | service_type | placement                        |
    | url          | http://controller:8778           |
    +--------------+----------------------------------+
    
    $ openstack endpoint create --region RegionOne placement internal http://controller:8778
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 02bcda9a150a4bd7993ff4879df971ab |
    | interface    | internal                         |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 2d1a27022e6e4185b86adac4444c495f |
    | service_name | placement                        |
    | service_type | placement                        |
    | url          | http://controller:8778           |
    +--------------+----------------------------------+
    
    $ openstack endpoint create --region RegionOne placement admin http://controller:8778
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 3d71177b9e0f406f98cbff198d74b182 |
    | interface    | admin                            |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 2d1a27022e6e4185b86adac4444c495f |
    | service_name | placement                        |
    | service_type | placement                        |
    | url          | http://controller:8778           |
    +--------------+----------------------------------+
    

Installieren und konfigurieren von Komponenten

Bemerkung

Die voreingestellten Konfigurationsdateien können je nach Distribution unterschiedlich aussehen. Es kann notwendig sein, diese Abschnitte und Optionen selbst hinzuzufügen anstatt bestehende anzupassen. Außerdem deuten Auslassungszeichen (...) in den Konfigurationsabschnitten Standardeinstellungen an, die beibehalten werden sollten.

  1. Installieren Sie die Pakete:

    # apt install nova-api nova-conductor nova-consoleauth \
      nova-consoleproxy nova-scheduler
    

    Bemerkung

    nova-api-metadata ist im nova-api Paket enthalten und kann über debconf ausgewählt werden.

    Bemerkung

    Ein einzelnes nova-consoleproxy Pakete stellt die nova-novncproxy, nova-spicehtml5proxy und nova-xvpvncproxy Pakete bereit. Um Pakete auszuwählen, bearbeiten Sie die /etc/default/nova-consoleproxy Datei oder verwenden Sie das debconf Interface. Sie können die Datei /etc/default/nova-consoleproxy auch manuell bearbeiten und die Konsolean-daemons stoppen und starten.

  1. Bearbeiten Sie die Datei /etc/nova/nova.conf und führen folgende Schritte durch:

    • Konfigurieren Sie den Datenbankzugriff in den Abschnitten [api_database] und [database]:

      [api_database]
      # ...
      connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
      
      [database]
      # ...
      connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
      

      Ersetzen Sie NOVA_DBPASS durch das Passwort, das Sie für die Compute-Datenbanken gewählt haben.

    • In der [DEFAULT] Sektion, konfigurieren Sie den RabbitMQ Nachrichtenwarteschlangen-Zugriff:

      [DEFAULT]
      # ...
      transport_url = rabbit://openstack:RABBIT_PASS@controller
      

      Ersetzen Sie RABBIT_PASS mit dem Passwort, welches Sie für den openstack Account in RabbitMQ gewählt haben.

    • Konfigurieren Sie den Zugriff auf den Identitätsdienst in den [api] und [keystone_authtoken] Sektionen:

      [api]
      # ...
      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 = nova
      password = NOVA_PASS
      

      Ersetzen Sie NOVA_PASS durch das Passwort, das Sie für den Benutzer nova im Identitätsdienst vergeben haben.

      Bemerkung

      Alle anderen Optionen in der Sektion [keystone_authtoken] müssen auskommentiert oder gelöscht werden.

    • Konfigurieren Sie in der Sektion [DEFAULT] die Option my_ip so, dass die IP-Adresse der Management-Schnittstelle des Controller Nodes genutzt wird.

      [DEFAULT]
      # ...
      my_ip = 10.0.0.11
      
  • Konfigurieren Sie den VNC Proxy in der [vnc] Sektion, so dass er die Management-IP-Adresse des Controllerknotens verwendet:

    [vnc]
    enabled = true
    # ...
    vncserver_listen = $my_ip
    vncserver_proxyclient_address = $my_ip
    
  • Deaktivieren Sie spice in der [spice] Sektion:

    [spice]
    enabled = false
    
  • Konfigurieren Sie den Ort der Abbilddienst API in der Sektion [glance]:

    [glance]
    # ...
    api_servers = http://controller:9292
    
  • Konfigurieren Sie die Placement API in der [placement] Sektion:

    [placement]
    # ...
    os_region_name = RegionOne
    project_domain_name = Default
    project_name = service
    auth_type = password
    user_domain_name = Default
    auth_url = http://controller:35357/v3
    username = placement
    password = PLACEMENT_PASS
    

    Ersetzen Sie PLACEMENT_PASS mit dem Passwort, dass Sie für den placement Benutzer im Identitätsdienst gewählt haben. Kommentieren Sie alle andern Optionen in der [placement] Sektion.

  1. Befüllen Sie die Nova-API-Datenbank:

    # su -s /bin/sh -c "nova-manage api_db sync" nova
    

    Bemerkung

    Ignorieren Sie in dieser Ausgabe sämliche Warnungen zur Ablaufwarnung.

  2. Registrieren Sie die Datenbank cell0:

    # su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
    
  3. Erzeugen Sie die Zelle cell1:

    # su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
    109e1d4b-536a-40d0-83c6-5f121b82b650
    
  4. Befüllen Sie die Nova-Datenbank:

    # su -s /bin/sh -c "nova-manage db sync" nova
    
  5. Überprüfen Sie, ob cell0 und cell1 richtig registriert sind:

    # nova-manage cell_v2 list_cells
    +-------+--------------------------------------+
    | Name  | UUID                                 |
    +-------+--------------------------------------+
    | cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
    | cell0 | 00000000-0000-0000-0000-000000000000 |
    +-------+--------------------------------------+
    

Installation abschließen

  • nova-spicehtml5proxy herunterfahren:

    # service nova-spicehtml5proxy stop
    
  • Wählen Sie novnc startup in /etc/default/nova-consoleproxy:

    NOVA_CONSOLE_PROXY_TYPE=novnc
    
  • Fügen Sie eine systemd Service-Datei für nova-novncproxy in /lib/systemd/system/nova-novncproxy.service hinzu:

    [Unit]
    Description=OpenStack Compute NoVNC proxy
    After=postgresql.service mysql.service keystone.service rabbitmq-server.service ntp.service
    
    Documentation=man:nova-novncproxy(1)
    
    [Service]
    User=nova
    Group=nova
    Type=simple
    WorkingDirectory=/var/lib/nova
    PermissionsStartOnly=true
    ExecStartPre=/bin/mkdir -p /var/lock/nova /var/log/nova /var/lib/nova
    ExecStartPre=/bin/chown nova:nova /var/lock/nova /var/lib/nova
    ExecStartPre=/bin/chown nova:adm /var/log/nova
    ExecStart=/etc/init.d/nova-novncproxy systemd-start
    Restart=on-failure
    LimitNOFILE=65535
    TimeoutStopSec=65
    
    [Install]
    WantedBy=multi-user.target
    
  • Start des noVNC Proxy:

    # systemctl daemon-reload
    # systemctl enable nova-novncproxy
    # service start nova-novncproxy
    
  • Neustart der anderen Compute-Dienste:

    # service nova-api restart
    # service nova-consoleauth restart
    # service nova-scheduler restart
    # service nova-conductor restart
    
  • Restart des Compute Servcies:

    # service nova-api restart
    # service nova-consoleauth restart
    # service nova-scheduler restart
    # service nova-conductor restart
    # service nova-novncproxy restart
    
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.