Конфигурирование протоколов

Агент использует разные протоколы для соединения с сервером RHEVH. Можно сконфигурировать любой из этих протоколов: SSH, TLS или TCP.

Об этой задаче

Компонент агент Linux KVM дистанционно соединяется с каждым гипервизиром, используя инструмент virsh, который управляет вашими виртуальными машинами QEMU-KVM и собирает показатели. API libvirt использует в среде агента несколько разных протоколов удаленного транспорта. Список поддерживаемых протоколов смотрите в разделе Страница Дистанционная поддержка.

Конфигурирование протокола SSH

Можно сконфигурировать протокол SSH для удаленного мониторинга хоста.

Об этой задаче

Допущение: Продукт агент Linux KVM установлен на хосте A. Вы хотите удаленно отслеживать гипервизор на хосте B.

Процедура

  1. Войдите на хост A, указав тот же ID пользователя, который запустил процесс агент Linux KVM (например, ID пользователя root).
    Совет: Убедитесь, что вы знаете ID на хосте B, который принимает соединение SSH, и ID пользователя root на хосте А.
  2. Сгенерируйте на хосте А ключи id_rsa и id_rsa.pub, используя утилиту ssh-keygen.
    Ключи сохраняются в следующем расположении: ~/.ssh: $ ssh-keygen -t rsa.
  3. Скопируйте авторизованные ключи с хоста B:

    $ scp Id on host B@name or IP address of host B:~/.ssh/authorized_keys ~/.ssh/authorized_keys_from_B

  4. Присоедините открытый ключ для хоста А в конец авторизованных ключей для хоста В:

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys_from_B

  5. Скопируйте авторизованные ключи обратно на хост B:

    $ scp ~/.ssh/authorized_keys_from_B Id on host B@name or IP address of host B:~/.ssh/authorizede_keys

    Напоминание: Если вы отслеживаете несколько хостов, то повторите шаги 3, 4 и 5 для каждого хоста.
  6. Удалите авторизованные ключи, которые вы скопировали на хост B:

    ~/.ssh/authorized_keys_from_B

  7. Добавьте в профиль ~/.bash_ текущего ID на хосте А следующую команду:

    $ eval `ssh-agent`

    Напоминание: Убедитесь, что вы используете обратный апостроф (`), расположенный под символом тильды (~) на клавиатурах US, а не простой апостроф (').
  8. Добавьте идентификатор на хост А, введя пароль, который вы использовали при создании ID:

    $ ssh-add ~/.ssh/id_rsa

  9. Введите следующую команду, если вы получили сообщение Could not open a connection to your authentication agent (Не удалось открыть соединение с агентом аутентификации):

    exec ssh-agent bash

    Совет: bash можно заменить на используемую оболочку, а затем еще раз ввести следующую команду:

    $ ssh-add ~/.ssh/id_rsa

  10. Протестируйте протокол SSH, чтобы убедиться, что он соединяется с хоста А с хостом В без ввода пароля SSH:
    Совет: Если вы отслеживаете несколько хостов, то введите следующую команду, чтобы протестировать соединение для каждого хоста:

    $ ssh Id on host B@name or IP address of host B

  11. Чтобы проверить соединение, введите следующую команду:

    virsh -c qemu+ssh://Id on host B@name or IP address of host B:port/system

    Если вы не изменяли порт SSH по умолчанию, то опустите раздел :port команды.

    Важное замечание: Если команда virsh выполняется успешно, то это значит, что агент Linux KVM устанавливает соединение с гипервизором.
  12. Перезапустите хост А перед перезапуском агент Linux KVM на хосте А. Для перезапуска нужно еще раз ввести команду ssh-add, каждый раз указывая пароль.
    Совет: Чтобы не вводить пароль повторно, используйте цепи ключей SSH.

Конфигурирование протокола TLS

Можно сконфигурировать протокол TLS для удаленного мониторинга хоста.

Об этой задаче

Допущение: Продукт агент Linux KVM установлен на хосте A. Вы хотите удаленно отслеживать гипервизор на хосте B.

Процедура

  1. Чтобы создать ключ и сертификат центра сертификации (certificate authority, CA) в гипервизоре, выполните следующие шаги:
    1. Войдите в хост B.
    2. Создайте временный каталог и перейдите в этот временный каталог:

      mkdir cert_files

      cd cert_files

    3. Создайте 2048-битный ключ RSA:

      openssl genrsa -out cakey.pem 2048

    4. Создайте самоподписанный сертификат для своего локального CA:

      openssl req -new -x509 -days 1095 -key cakey.pem -out \
      cacert.pem -sha256 -subj "/C=US/L=Austin/O=IBM/CN=my CA"

    5. Проверьте сертификат CA:

      openssl x509 -noout -text -in cacert.pem

  2. Чтобы создать ключи и сертификаты клиента и сервера в гипервизоре, выполните следующие шаги:
    1. Создайте ключи:

      openssl genrsa -out serverkey.pem 2048

      openssl genrsa -out clientkey.pem 2048

    2. Создайте требование подписи сертификата для сервера:
      Напоминание: Измените адрес kvmhost.company.org, который используется в требовании сертификата сервера, на полное имя домена хоста гипервизора.

      openssl req -new -key serverkey.pem -out serverkey.csr \
      -subj "/C=US/O=IBM/CN=kvmhost.company.org"

    3. Создайте требование подписи сертификата для клиента:

      openssl req -new -key clientkey.pem -out clientkey.csr \
      -subj "/C=US/O=IBM/OU=virtualization/CN=root"

    4. Создайте сертификаты клиента и сервера:

      openssl x509 -req -days 365 -in clientkey.csr -CA cacert.pem \
      -CAkey cakey.pem -set_serial 1 -out clientcert.pem

      openssl x509 -req -days 365 -in serverkey.csr -CA cacert.pem \
      -CAkey cakey.pem -set_serial 94345 -out servercert.pem

    5. Проверьте ключи:

      openssl rsa -noout -text -in clientkey.pem

      openssl rsa -noout -text -in serverkey.pem

    6. Проверьте сертификаты:

      openssl x509 -noout -text -in clientcert.pem

      openssl x509 -noout -text -in servercert.pem

  3. Чтобы распределить ключи и сертификаты на хост-сервер, выполните следующие шаги:
    1. Скопируйте файл сертификата CA, cacert.pem, в каталог /etc/pki/CA:

      cp cacert.pem /etc/pki/CA/cacert.pem

    2. Создайте каталог /etc/pki/libvirt и скопируйте файл сертификата сервера, servercert.pem, в каталог /etc/pki/libvirt. Убедитесь, что получить доступ к секретному ключу может только пользователь root.

      mkdir /etc/pki/libvirt

      cp servercert.pem /etc/pki/libvirt/.

      chmod -R o-rwx /etc/pki/libvirt

      Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно.
    3. Создайте каталог /etc/pki/libvirt/private и скопируйте файл ключей сервера, serverkey.pem, в каталог /etc/pki/libvirt/private. Убедитесь, что получить доступ к секретному ключу может только пользователь root.

      mkdir /etc/pki/libvirt/private

      cp serverkey.pem /etc/pki/libvirt/private/.

      chmod -R o-rwx /etc/pki/libvirt/private

      Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно.
    4. Проверьте, правильно ли размещены файлы:

      find /etc/pki/CA/*|xargs ls -l

      ls -lR /etc/pki/libvirt

      ls -lR /etc/pki/libvirt/private

      Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно.
  4. Чтобы распределить ключи и сертификаты на клиентах или на станциях управления, выполните следующие шаги:
    1. Войдите в хост A.
    2. Скопируйте сертификат CA, cacert.pem, с хоста в каталог /etc/pki/CA на хосте A, не изменяя имя файла.

      scp kvmhost.company.org:/tmp/cacert.pem /etc/pki/CA/

    3. Скопируйте файл сертификата клиента, clientcert.pem, в каталог /etc/pki/libvirt с хоста B. Используйте имена файлов по умолчанию и убедитесь, что получить доступ к секретному ключу может только пользователь root.

      mkdir /etc/pki/libvirt/

      scp kvmhost.company.org:/tmp/clientcert.pem /etc/pki/libvirt/.

      chmod -R o-rwx /etc/pki/libvirt

      Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно.
    4. Скопируйте ключ клиента, clientkey.pem, в каталог /etc/pki/libvirt/private с хоста. Используйте имена файлов по умолчанию и убедитесь, что получить доступ к секретному ключу может только пользователь root.

      mkdir /etc/pki/libvirt/private

      scp kvmhost.company.org:/tmp/clientkey.pem /etc/pki/libvirt/private/.

      chmod -R o-rwx /etc/pki/libvirt/private

      Напоминание: Если ключи или сертификаты названы неправильно или скопированы в неправильные каталоги, то авторизация завершится неудачно.
    5. Проверьте, правильно ли размещены файлы:

      ls -lR /etc/pki/libvirt

      ls -lR /etc/pki/libvirt/private

  5. Чтобы изменить конфигурацию демона libvirtd, выполните следующие шаги:
    1. Войдите в хост B.
    2. Создайте копии файлов /etc/sysconfig/libvirtd и /etc/libvirt/libvirtd.conf.
    3. Отредактируйте файл /etc/sysconfig/libvirtd и убедитесь, что параметр --listen передается демону libvirtd. Этот шаг гарантирует, что демон libvirtd будет принимать сетевые соединения.
    4. Отредактируйте файл /etc/libvirt/libvirtd.conf и сконфигурируйте набор допустимых тем, используя директиву tls_allowed_dn_list в файле libvirtd.conf.
      Важное замечание: Поля в теме должны быть расположены в том же порядке, какой вы использовали для создания сертификата.
    5. Перезапустите службу-демон libvirtd, чтобы изменения вступили в силу:

      /etc/init.d/libvirtd restart

  6. Чтобы изменить конфигурацию брандмауэра, получите доступ к конфигурации на уровне защиты и добавьте порт TCP с номером 16514 в качестве доверенного (надежного) порта.
  7. Чтобы убедиться, что дистанционное управление работает, введите на хосте A следующую команду:

    virsh -c qemu+tls://kvmhost.company.org/system list --all

Конфигурирование протокола TCP

Используйте протокол TCP только для тестирования.

Об этой задаче

Допущение: Продукт агент Linux KVM установлен на хосте A. Вы хотите удаленно отслеживать гипервизор на хосте B.

Процедура

  1. Войдите в хост B.
  2. Отредактируйте файл /etc/libvirt/libvirtd.conf и убедитесь, что параметр listen_tcp включен, а в качестве значения параметра tcp_port задано значение по умолчанию (16509).
  3. Отредактируйте файл /etc/libvirt/libvirtd.conf, задав для параметра auth_tcp значение none. Этот шаг указывает TCP, что не нужно аутентифицировать соединение.
  4. Перезапустите демон libvirt на хосте B в режиме приема, запустив его с использованием флага --listen или отредактировав файл /etc/sysconfig/libvirtd и раскомментировав строку LIBVIRTD_ARGS="--listen".
  5. Чтобы проверить соединение, введите следующую команду:

    virsh -c qemu+tcp://kvmhost.company.org:port/system

    Если вы не изменяли порт TCP по умолчанию, то опустите раздел :port команды.

    Важное замечание: Если команда virsh выполняется успешно, то это значит, что агент Linux KVM устанавливает соединение с гипервизором.

Дальнейшие действия

Сконфигурируйте агент, выполнив действия, которые описаны в разделе Конфигурирование соединения с сервером RHEVH.