С 1991 года на компьютерном рынке России
e-mail

т.: 676 0965, 676 0396
Москва, Сосинская ул. 43,
м. Волгоградский проспект
Реализация облачного хранилища с OpenStack Swift.

ГЛАВА 3


Установка OpenStack Swift.

В предыдущая глава должна была дать вам хорошее представление об архитектуре OpenStack Swift. Теперь, давайте углубимся в детали установки OpenStack Swift. Эта глава предназначена для ИТ-администраторов, которые хотят установить OpenStack Swift. Обсуждаемая здесь версия- выпуск OpenStack Havana. (Прим. пер. на декабрь 2014 современной является редакция Juno /дорожная карта/). Установка Swift имеет несколько шагов и требует тщательного планирования перед началом процесса. Простая установка состоит из установки всех компонентов Swift на один узел, в то время как сложная установка состоит из установки Swift на нескольких серверных узлах прокси, а также на серверных узлах хранения. Количество узлов хранения может исчисляться в порядком тысяч и располагаться в нескольких зонах и регионах. В зависимости от вашей установки, вы должны определиться с количеством серверных узлов прокси и серверных узлов систем хранения, которое вы собираетесь настраивать. В этой главе демонстрирует процесс ручной установки; опытные пользователи могут использовать утилиты, такие как Puppet или Chef, чтобы упростить процесс.

Данная главе проведет вас через установку кластера OpenStack Swift, который содержит один прокси сервер и пять серверов систем хранения. Как объяснялось в главе 2, Архитектура OpenStack Swift, серверы хранения содержат учетные записи, контейнеры и серверы объектов.

Планирование аппаратных средств

В этом разделе описываются различные аппаратные компоненты вовлеченные в установку (для полного обсуждения этой темы см. Глава 6, Выбор соответствующих аппаратных средств). Поскольку Swift имеет дело с системой хранения объектов, диски будет основной частью планирования аппаратного обеспечения. Размер и количество требующихся дисков должны быть рассчитаны с учетом ваших требований. Сетевые ресурсы также являются важным компонентом, в котором нужно планировать такие факторы, как общественная/ частная сеть и отдельная сеть для связи между серверами хранения. Предполагается, по крайней мере, пропускная способность сети 1 Гбит/с, в то время как рекомендуется 10 Гбит/с.

Устанавливаемые нами в качестве прокси- серверов и серверов систем хранения серверы являются двухсокетными четырехядерными машинами с 12ГБ ОЗУ.

В нашей установке мы имеем в общей сложности 15 х 2 ТБ дисков для системы хранения Swift; это дает нам общий размер 30 ТБ. Тем не менее, при встроенной репликации (со значением числа реплик по умолчанию 3), Swift поддерживает три копии одних и тех же данных, а следовательно, эффективная емкость для хранения файлов/объектов составляет 10 ТБ. Этот объем еще больше снижается из-за того, что используется менее чем 100 процентов. Ниже на рисунке показаны узлы нашей конфигурации кластера Swift:

Установка системы хранения объектов OpenStack Swift Установка системы хранения объектов OpenStack Swift

Установка сервера и настройка сети

Все серверы установлены с операционной системой Ubuntu (версия 12.04)

Вы должны настроить следующие три сети:

  • Общественная сеть: К этой сети подключается прокси-сервер. Эта сеть обеспечивает общественный доступ к конечным точкам API внутри прокси-сервера.
  • Сеть системы хранения: Это частная сеть не доступна для внешнего мира. К этой сети будет подключаться все серверы хранения и сервер прокси. В рамках этой сети происходит коммуникация между сервером прокси и серверами хранения и передача информации между серверами хранения. В нашей конфигурации IP-адреса в этой сети назначены следующие адреса: 172.168.10.0/172.168.10.99.
  • Сеть репликации: Это также частная сеть, которая не доступна для внешнего мира. Она предназначена для трафика репликаций, и к этой сети подключаются только серверы хранения. В этой сети происходит все связанное с репликациями взаимодействие между серверами хранения. В нашей конфигурации в этой сети назначены следующие IP-адреса: 172.168.9.0/172.168.9.99.

Шаги предварительной установки

Для того, чтобы различным серверам было легче взаимодействовать, отредактируйте файл /etc/hosts, и добавьте имена хостов каждому серверу в нем.
(Прим.пер.: для редактирования, например, можно воспользоваться текстовым /не графическим, что особенно удобно при удаленном редактировании/ редактором mcedit, который устанавливается, как не трудно догадаться, при помощи запроса apt-get install mcedit.
При недостатке прав не забывайте предворять исполнение команды вызовом sudo,
например, sudo apt-get install mcedit
)
Эта работа проводится на всех узлах. Следующее изображение показывает пример содержимого файла /etc/hosts узла прокси-сервера:
  127.0.0.1            localhost
192.168.2.244     swift-proxy
192.168.10.51     s-swift-proxy
192.168.10.52     swift-storage-1
192.168.10.53     swift-storage-2
192.168.10.54     swift-storage-3
192.168.10.55     swift-storage-4
192.168.10.56     swift-storage-5
 

Установите службу NTP на узлах сервера прокси и серверов хранения. Это поможет всем узлы в синхронизации своих служб эффективно без каких-либо временных задержек. Шаги предварительной установки должны быть выполнены следующим образом:

  1. Настройте узел сервера прокси, чтобы он был справочным сервером для узлов серверов хранения при установке ими своего времени с узла прокси-сервера:
      #   apt-get install ntp  
  2. Добавьте следующую строку в /etc/ntp.conf для настройки NTP на узле сервера прокси:
    server ntp.ubuntu.com
  3. Для настройки NTP на узлах серверов хранения добавьте следующую строку в /etc/ntp.conf:
    server s-swift-proxy
    Закомментируйте оставшиеся строки с адресами сервером такими как 0.ubuntu.pool.ntp.org, 1.ubuntu.pool.ntp.org, 2.ubuntu.pool.ntp.org и 3.ubuntu.pool.ntp.org.
  4. Перезапустите службу NTP на каждом сервере следующей командой:
      #   service ntp restart  

Загрузка и установка Swift

Архив Ubuntu Cloud является специальным репозиторием, который предоставляет пользователям возможность установки новых версий OpenStack.

Шаги для выполнения загрузки и установки Swift заключаются в следующем:

  1. Включите возможность установки новой версии OpenStack и установите последнюю версию Swift на каждом узле с помощью следующих команд:
      #   apt-get install python-software-properties
    #   add-apt-repository cloud-archive:havana
    (Прим. пер.: по состоянию на декабрь 2014 juno вместо havana /дорожная карта/)
     
  2. Теперь обновите ОС с помощью следующей команды:
      #   apt-get update && apt-get dist-upgrade
    (Прим. пер.: или,
    sudo apt-get update && sudo apt-get dist-upgrade
    )
     
  3. На всех узлах Swift мы установим обязательные программное обеспечение и службы с использованием следующей команды:
      #   apt-get install swift rsync memcached python-netifaces python-xattr python-memcache  
  4. Далее мы создаем каталог Swift в /etc и предоставляем пользователю доступ к этой папке с использованием следующих команд:
      #   mkdir -p /etc/swift
    #   chown -R swift:swift /etc/swift
     
  5. Создайте файл /etc/swift/swift.conf и добавьте в раздел swift-hash переменную с названием swift_hash_path_suffix. Затем мы создаем уникальную хэш-строку с использованием Python –c (Прим. пер.: и затем) from uuid import uuid4; print uuid4() или openssl (Прим. пер.: и затем) rand –hex 10, и назначаем ее этой переменной как показано в следующей команде:
      [swift-hash]
    #   random unique string that can never change (DO NOT LOSE)
    #   уникальная строка со случайным значением,
    #     которая может никогда не меняться (НЕ ПОТЕРЯЙТЕ)
    swift_hash_path_suffix = sLSDQfffedFUHIjjakM
     
  6. Мы затем добавим другую переменную с именем swift_hash_path_prefix в раздел swift_hash и присвоим ей другую хэш-строку, созданную с использованием метода, описанного в предыдущем шаге. Эти строки будут использованы в процессе хеширования для определения отображений в кольце. Файл swift.conf должен быть одинаковым на всех узлах кластера.

Установка узлов серверов хранения

В этом разделе поясняются дополнительные действия для настройки узла сервера хранения.

Установка служб

На каждом узле сервера хранения, установите пакеты учетных записей swift, контейнеров swift, объектов swift и xfsprogs (файловая система XFS) с помощью следующей команды:
  #   apt-get install swift-account swift-container swift-object xfsprogs  

Форматирование и монтирование дисков

На каждом узле сервера хранения, мы должны определить жесткие диски, которые будут использоваться для хранения данных. Затем мы отформатируем жесткие диски и установим их в каталог, который Swift будет использовать для хранения данных. Мы не будем создавать какие-либо уровни RAID или какие-либо подразделы на этих жестких дисках, потому что они не являются необходимыми для Swift. Они будут использоваться в качестве целых дисков. Операционная система будет установлена на отдельных дисках, которые будут RAID-настроенными.

Во-первых, определите жесткие диски, которые вы собираетесь использовать для хранения и отформатируйте их. В нашем сервере хранения, мы определили sdb, sdc, и sdd, которые будут использоваться для системы хранения.

Мы выполним следующие четыре операции на sdb. Эти четыре операции должны также затем быть повторены на дисках sdc и sdd:

  1. Сделаем разметку sdb и создадим файловую систему с использованием следующей команды:
      #   fdisk /dev/sdb
    #   mkfs.xfs /dev/sdb1
    (Прим.пер.: в утилите fdisk рекомендуем использовать параметры по умолчанию,
    например, создать один primary раздел на весь диск [ID=83, Linux];
    при форматировании, возможно, понадобится ключ -f: mkfs.xfs /dev/sdb1 -f)
     
  2. Затем, давайте создадим каталог в /srv/node, который будет использоваться для монтирования файловой системы. Дайте права пользователю swift, чтобы он мог получить доступ к этому каталогу. Эти операции могут быть выполнены с помощью следующих команд:
      #   mkdir /srv/node/sdb1
    #   chown -R swift:swift /srv/node/sdb1
     
  3. Мы создаем запись fstab для раздела sdb1 на жестком диске sdb как показано ниже. Это позволит автоматическое монтирование sdb1 /srv/node/sdb1 в при каждой загрузке. Добавьте следующую командную строку в файл /etc/fstab:
      #   /dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0  
  4. Смонтируйте sdb1 в /srv/node/sdb1 с использованием следующей команды:
      #   mount /srv/node/sdb1  

RSYNC и RSYNCD

Для того, чтобы Swift выполнял репликацию данных, мы должны установить Rsync и rsyncd.conf, выполнив следующие действия:

  1. Создайте файл rsyncd.conf в каталоге /etc со следующим содержанием:
      #   vi /etc/rsyncd.conf  
          uid = swift  
        gid = swift  
        log file = /var/log/rsyncd.log  
        pid file = /var/log/rsyncd.pid  
        address = 172.168.9.52  
        [account]  
        max connections = 2  
        path = /srv/node  
        read only = false  
        lock file = /var/lock/account.lock  
        [container]  
        max connections = 2  
        path = /srv/node  
        read only = false  
        lock file = /var/lock/container.lock  
        [object]  
        max connections = 2  
        path = /srv/node  
        read only = false  
        lock file = /var/lock/object.lock  
     
    172.168.9.52 является IP адресом, который расположен в сети репликаций для данного сервера хранения. Используйте подходящие IP адреса сети репликации для соответствующих серверов хранения.
  2. Затем мы отредактируем файл /etc/default/rsync и установим значение RSYNC_ENABLE в true следующей командой:
      RSYNC_ENABLE=true  
  3. После этого мы перезапустим службу rsync с использованием следующей команды:
      #   service rsync start  
  4. Далее мы создаем каталог кэша swift recon с использованием приводимой ниже команды и затем устанавливаем его разрешения:
      #   mkdir -p /var/swift/recon  
    Установка прав выполняется следующей командой
      #   chown -R swift:swift /var/swift/recon  
    Повторите эти шаги на каждом сервере хранения.

Установка прокси- сервера

В этом разделе описываются действия по настройке параметров узла прокси-сервера, которые выглядят так:

  1. Установите следующие службы только на узле прокси-сервера:
      #   apt-get install swift-proxy memcached python-keystoneclient python-swiftclient python-webob  
    [ Openssl уже был установлен как часть установки операционной системы для поддержки HTTPS. ]
  2. Мы собираемся использовать сервис OpenStack Keystone для аутентификации. Таким образом, мы должны создать файл proxy-server.conf и добавить следующее содержание в него:
      #   vi /etc/swift/proxy-server.conf
    (Прим.пер.: лично мне, больше нравится использование mcedit вместо vi)
     
          [DEFAULT]
        bind_port=8888
        user=swift
        [pipeline:main]
        pipeline = healthcheck cache authtoken keystoneauth proxy-server
        [app:proxy-server]
        use = egg:swift#proxy
        allow_account_management = true
        account_autocreate = true
        [filter:keystoneauth]
        use = egg:swift#keystoneauth
        operator_roles = Member,admin,swiftoperator
        [filter:authtoken]
        past.filter_factory = keystoneclient.middleware.auth_token:filter_factory  
        # Delaying the auth decision is required to support token-less
        # usage for anonymous referrers ('.r:*').
        # Задержка решения аутентификации требуется для поддержки без маркера  
        # Используется для анонимных обращений ('.r:*').
        delay_auth_decision = true
        # cache directory for signing certificate
        # кэш- каталог для сертификатов подписей
        signing_dir = /home/swift/keystone-signing
        # auth_* setting refer to the Keystone server
        # установки auth_* отсылающие на сервер Keystone
        auth_protocol = http
        # the hostname of the proxy server
        auth_host = swift_proxy
        auth_port = 35357
        # the same admin_token as provided in ketstone.conf
        # admin_token тот же, что и предоставляемый в ketstone.conf
        admin_token = Random Token
        # the service tenant and swift userid and password created in Keystone  
        # владелец службы, а также userid и password swift созданные в Keystone  
        admin_tenant_name = admin
        admin_user = admin
        admin_password = vadadms123
        [filter:cache]
        use = egg:swift#memcache
        [filter:cath_errors]
        use = egg:swift#catch_errors
     
  3. Файл proxy-server.conf должен быть отредактирован с тем, чтобы содержать правильные auth_host, admin_token, admin_tenant_name, admin_user и admin_password (обратитесь к следующему разделу настройки keystone, чтобы увидеть, как настроить правильные учетные данные).
  4. Далее, мы создаем каталог keystone- подписей и даем права пользователю swift, используя следующие команды:
      #   mkdir /home/swift/keystone-signing
    #   chown -R swift:swift /home/swift/keystone-signing
     

Установка кольца

Как обсуждалось в главе 2, Архитектура OpenStack Swift, кольцо (также называемое кольцевым формирователем, или просто файлом построения) содержит информацию для отображения информации пользовательского запроса API в физического месторасположение учетной записи, контейнера или объекта. Мы будем иметь файл построения для учетных записей, которые будут содержать информацию отображения для учетной записи. Подобным образом мы будем иметь файл построения для контейнеров и объектов.

Файлы построения создаются с использованием следующих команд:
  #   cd /etc/swift
#   swift-ring-builder account.builder create 18 3 1
#   swift-ring-builder container.builder create 18 3 1
#   swift-ring-builder object.builder create 18 3 1
 

Параметр 18 показывает, что может быть два в степени 18 разделов, созданных для хранения данных. Чтобы определить количество разделов, оцените максимальное количество дисков, умножьте это число на 100, а затем округлите его до ближайшей степени двойки. Выбор меньшее, чем это необходимо, количества не катастрофичен; это только приведет в несбалансированному кластеру с точки зрения емкости. Выбор значения больше, чем это необходимо, будет влиять на производительность. Параметр 3 указывает, что будут сохраняться три копии данных, а параметр 1 установлен таким образом, что мы не перемещаем раздел более одного раза в час.

В системах хранения Swift жесткие диски могут быть сгруппированы в зоны, а кольца могут быть созданы в соответствии с этими зонами. Каждый жесткий диск на сервере хранения относится к определенной зоне. Это помогает Swift реплицировать данные в различные зоны уникальным-насколько-это-возможно образом. Если происходит сбой в определенной зоне, данные могут быть выбраны из копий данных в других зонах. При установке с несколькими регионами, если происходит сбой в конкретном регионе, то данные могут быть выбраны из других регионов.

Следующий синтаксис команды используется для добавления устройств на жестких дисках серверов хранения в файлы построения кольца. Пожалуйста, обратите внимание, что область и зона,которым принадлежит данный жесткий диск, предоставляется в качестве входного параметра. Параметр веса (100) указывает, сколько данных будет размещено на этом диске по сравнению с другими дисками.

Выполните следующие команды, чтобы добавить жесткие диски, выделенные для хранения в кольце. Для того, чтобы добавить отображение для sdb1 устройства, мы запускаем следующие команды:
  #   swift-ring-builder account.builder add r1z1-172.168.10.52:6002\
R172.168.9.52:6005/sdb1 100
#   swift-ring-builder container.builder add r1z1-172.168.10.52:60\
01R172.168.9.52:6004/sdb1 100
#   swift-ring-builder object.builder add r1z1-172.168.10.52:6000R\
172.168.9.52:6003/sdb1 100
 

В предыдущих командах 172.168.10.52 является IP- адресом узла хранилища в сети хранения, которая содержит sdb1, а 172.168.9.52 является IP адресом того же самого узла хранения в сети репликаций.

Мы должны выполнить предыдущие команды, заменив sdb1 на sdc1 и sdd1 для этого IP-адреса сети хранения и IP-адреса сети репликации. Мы должны выполнить те же команды, чтобы добавить sdb1, sdc1 и sdd1 остальных серверов хранения, а также предоставив их IP-адреса сети хранения и IP-адреса сети репликации в командах.

Последним шагом в выполнении процесса построения кольца является создание файлов кольца, которые будут использоваться процессами Swift. Это делается с помощью команды перераспределения данных, как показано на рисунке:
  #   swift-ring-builder account.builder rebalance
#   swift-ring-builder container.builder rebalance
#   swift-ring-builder object.builder rebalance
 

После запуска предыдущих команд, будут созданы следующие файлы: account.ring.gz, container.ring.gz и object.ring.gz. Скопируйте эти файлы в каталог etc/swift всех узлов в кластере.

Кроме того убедитесь, что etc/swift имеет права пользователя swift на каждом узле. Установите правапользователя с помощью следующей команды:
  #   chown -R swift:swift /etc/swift  

Теперь мы можем запустить службу прокси следующим образом:
  #   service swift-proxy restart  

Запуск служб на всех узлах хранения

Теперь, когда серверы хранения имеют файлы кольца (account.ring.gz, container.ring.gz и object.ring.gz), мы можем запустить службы Swift на серверах хранения данных, используя следующие команды:
  #   service swift-object start
#   service swift-object-replicator start
#   service swift-object-updater start
#   service swift-object-auditor start
#   service swift-container start
#   service swift-container-replicator start
#   service swift-container-updater start
#   service swift-container-auditor start
#   service swift-account start
#   service swift-account-replicator start
#   service swift-account-updater start
#   service swift-account-auditor start
 

Мы также должны запустить службы rsyslog и memcached на серверах хранения данных с помощью следующих команд:
  #   service rsyslog restart
#   service memcached restart
 

Поддержка нескольких регионов

При установке для нескольких регионов, мы размещаем пул узлов хранения в одном регионе, а оставшиеся в других регионах. Мы можем иметь либо одну конечную точку для всех регионов или отдельные конечные точки для каждого региона. Во время установки построителя кольца, регион описывается в качестве параметра. Клиенты могут получить доступ к любой конечной точке и выполнять операции (создание, удаление и т.п.), и эти операции будут воспроизведены в других регионах. Файлы настройки прокси-сервера будут содержать read_affinity и write_affinity в определенном регионе.

Наша тестовая конфигурация имела два прокси-сервера и узла хранения файлов. Два региона были созданы путем создания двух конечных точек. Список конечных точек дает следующие результаты, которые были сокращены для удобства чтения:
# keystone endpoint-list
+-------------------+------------------------------+----------------------------------------------++
|id|     region     |        publicurl             |           adminurl                            |
+-------------------+------------------------------+----------------------------------------------++
|| Swift-Region2    | http://192.168.2.231:8888/v1/AUTH_%(tenant_id)s| http://192.168.2.231:8888/v1|
||Openstack-Identity| http://192.168.2.230:5000/v2.0 | http://192.168.2.230:35357/v2.0             |
|| Swift-Region1    | http://192.168.2.244:8888/v1/AUTH_%(tenant_id)s| http://192.168.2.244:8888/v1|
+-------------------+------------------------------+----------------------------------------------++

Swift-Region2 и Swift-Region1 являются двумя регионами, а Openstack-Identity конечной точкой аутентификации.

Служба Keystone

Для аутентификации мы будем использовать службу Keystone. Служба Keystone предоставляет конечную точку, через которую пользователь будет подключаться для использования имени пользователя и полномочий владельца. После проверки службой идентичности Keystone, пользователю возвращается метка (token), которая будет кэширована и использоваться в дальнейших вызовов API в различных других конечных точках API OpenStack. В рамках Keystone, пользователь определяется как имеющий полномочия учетных данных и связывается с одним или несколькими владельцами. Кроме того, пользователю может быть отведена роль, например, admin (информация метаданных), которая дает право этому пользователю бОльшие привилегии по сравнению с обычным пользователем.

Рассмотрим случай, когда пользователь подключается к конечной точке Swift для чтения объекта. Когда пользователь инициирует вызов API наряду с меткой конечной точки Swift, этот маркер передается конечной точкой Swift назад в Keystone для проверки. После того, как она подтверждена Keystone, она возвращает код подтверждения в конечную точку Swift. Служба Swift затем продолжит обработку API для чтения объекта.

Теперь в последующих разделах мы покажем шаги, необходимые для установки и настройки службы Keystone.

Установка MySQL

Для базы данных Keystone мы будем использовать MeSQL. Этапы установки следующие:

  1. Установите базу данных MySQL и клиентское программное обеспечения на узле сервера прокси с помощью следующей команды:
    root@swift-proxy:/home/vedams# apt-get install python-mysqldb mysql-server
  2. Отредактируйте /etc/mysql/my.cnf на узле прокси, назначив имя сервера хоста прокси переменной Bind-address, как показано в следующей команде:
    Bind-address = swift-proxy
  3. Перезапустите службу MySQL на узле прокси с помощью следующей команды: root@swift-proxy:/home/vedams# service mysql restart
  4. Удалить анонимных пользователей с помощью команды mysql_secure_installation, а именно: root@swift-proxy:/home/vedams# mysql_secure_installation
  5. Ответьте yes на приглашение delete anonymous user.

Установка Keystone

Keystone может быть установлен на выделенных серверах для крупных установок, однако для нашего примера установите службу Keystone на узле прокси. Следующие шаги описывают, как установить и настроить службу Keystone:

  1. Установите службу Keystone с помощью следующей команды:
      #   apt-get install keystone  
  2. Мы должны сгенерировать случайный маркер для доступа к службе Keystone, как показано в следующей команде:
      #   openssl rand -hex 10  
  3. Затем мы редактируем файл /etc/keystone/keystone.conf и выполняем следующие изменения:
    • Заменяем admin_token случайным маркером, который был только что сформирован, как показано в следующей команде:
          admin_token = Random Token  
    • Заменяем соединение с базой данных SQLite на MySQL следующей командой:
        connection = mysql://keystone:vedams123@swift-proxy/keystone  
  4. Убедитесь, что файл SQLite был удален после настройки MySQL; в противном случае, мы должны удалить файл вручную. Выполните следующую команду, чтобы вывести содержимое каталога /var/lib/keystone и удалите файл keystone.sqlite, если он присутствует: #sudo ls –la /var/lib/keystone/
  5. Затем мы создаём базу данных Keystone пользователей и их допусков, используя следующие команды:
      root@swift-proxy:/home/vedams# mysql -u root -pvedams123
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 38
    Server version: 5.5.34-0ubuntu0.12.04.1 (Ubuntu)

    Copyright (c) 2000, 2013 Oracle and/or its affiliates. All rights reserved.

    Oracle is registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of theier respective
    owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql> CREATE DATABASE keystone;
    Query OK, 1 row affected (0.00sec)

    mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'vedams123';
    Query OK, 0 rows affected (0.00sec)

    mysql> quit
    Bye
    root@swift-proxy:/home/vedams#
     
  6. Далее мы проверяем синхронизацию базы данных Keystone и перезапускаем службу Keystone, используя следующие команды:
      #   keystone-manage db_sync
    #   service keystone restart
     
  7. Экспортируем следующие переменные окружения:
      #   export OS_SERVICE_TOKEN=Random Token
    #   export OS_SERVICE_ENDPOINT=http://sift-proxy:35357/v2.0
     
  8. Затем мы настраиваем владельца (tenant), пользователя (user) и роль (role) для аутентификации в отношении входных данных. После проверки подлинности разрешается доступ к службам Swift и конечным точкам. Затем мы создаем владельца для пользователя с правами администратора, пользователь с правами администратора под названием admin и роль для административных задач. Затем мы добавляем роль администратора пользователю с правами администратора. Это показано в следующих командных строках:
      #   keystone tenant-create --name=admin --description="Admin Tenant"
    #   keystone user-create --name=admin --pass=vedams123 --email=test@gmail.com
    #   keystone role-create --name=admin
    #   keystone user-role-add --user=admin --tenant=admin --role=admin
     
    Следующий скриншот показывает ход выполнения предыдущей команды:
      root@swift-proxy:/home/vedams# keystone tenant-create --name=admin --description="Admin Tenant"
    +-------------+----------------------------------+
    |  Property   |           Value                  |
    +-------------+----------------------------------+
    | description |         Admin Tenant             |
    |   enabled   |            True                  |
    |     id      | f570de35b6dc4a4d81a24516d049173a |
    |     name    |            admin                 |
    +-------------+----------------------------------+
    root@swift-proxy:/home/vedams# keystone user-create --name=admin --pass=vedams123 --email=test@gmail.com
    +-------------+----------------------------------+
    |  Property   |           Value                  |
    +-------------+----------------------------------+
    |    email    |        test@gmail.com            |
    |   enabled   |            True                  |
    |     id      | 77461f6a3763462b990cdaceec034afe |
    |     name    |            admin                 |
    +-------------+----------------------------------+
    root@swift-proxy:/home/vedams# keystone role-create --name=admin
    +-------------+----------------------------------+
    |  Property   |           Value                  |
    +-------------+----------------------------------+
    |     id      | 814ffecf0bbc4221a9ab98618d159ded |
    |     name    |            admin                 |
    +-------------+----------------------------------+
    root@swift-proxy:/home/vedams# keystone user-role-add --user=admin --tenant=admin --role=admin
    root@swift-proxy:/home/vedams#
     
    Затем мы создаем еще одного пользователя с именем swift-user и добавляем его владельцу под названием swift-tenant. Пользователю предоставляется роль участника с доступом. Следующий скриншот показывает процесс создания:
      root@swift-proxy:/home/vedams# keystone tenant-create --name=swift-tenant --description="Swift Tenant"
    +-------------+----------------------------------+
    |  Property   |           Value                  |
    +-------------+----------------------------------+
    | description |         Swift Tenant             |
    |   enabled   |            True                  |
    |     id      | bd1e87f876e541a4acc42803430a1bdb |
    |     name    |         swift-tenant             |
    +-------------+----------------------------------+
    root@swift-proxy:/home/vedams# keystone user-create --name=swift-user --pass=vedams123 --email=swift-user@gmail.com
    +-------------+----------------------------------+
    |  Property   |           Value                  |
    +-------------+----------------------------------+
    |    email    |     swift-user@gmail.com         |
    |   enabled   |            True                  |
    |     id      | 0b81ddf04865444bbbdd4be417a392fc |
    |     name    |         swift-tenant             |
    +-------------+----------------------------------+
    root@swift-proxy:/home/vedams#
     
  9. Служба Keystone отслеживает различные службы OpenStack, которые мы установили, а также отслеживает, где они находятся в сети. Для того, чтобы отслеживать службы, создаются идентификаторы (ID) для служб с использованием команды keystone service-create, как показано в следующих командах:
      #   keystone service-create --name=keystone --type=identity \
    --description="Keystone Identity Service"
    #   keystone service-create --name=swift --type=object-store \
    --description="swift Service"
     
    Следующий скриншот показывает вывод выполнения предыдущих команд создания сервисов:
      root@swift-proxy:/home/vedams# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"
    +-------------+----------------------------------+
    |  Property   |           Value                  |
    +-------------+----------------------------------+
    | description |   Keystone Identity Service      |
    |     id      | a9c2d44442464975bb50e296fcc584b4 |
    |     name    |           keystone               |
    |     type    |           identity               |
    +-------------+----------------------------------+
    root@swift-proxy:/home/vedams# keystone service-create --name=swift --type=object-store --description="swift Service"
    +-------------+----------------------------------+
    |  Property   |           Value                  |
    +-------------+----------------------------------+
    | description |  swift Object storage service    |
    |     id      | a0ab378728b148fd9c9a0534d1d6a227 |
    |     name    |             swift                |
    |     type    |         object-store             |
    +-------------+----------------------------------+
    root@swift-proxy:/home/vedams# keystone user-role-add --user=swift-user --tenant=swift-tenant --role=_member_
    root@swift-proxy:/home/vedams#
     
  10. Затем мы должны указать конечные точки службы Keystone и конечные точки службы Swift для использования команды Keystone endpoint-create. В следующих командах swift-proxy является именем хоста сервера прокси:
      #   keystone endpoint-create --service-id KEYSTONE_SERVICE_ID --region regioneOne --publicurl 'http://swift-proxy:5000/v2.0' --adminurl 'http://swift-proxy:35357/v2.0' --internalurl 'http://swift-proxy:5000/v2.0'
    #   keystone endpoint-create --service-id SWIFT_SERVICE_ID --region regioneOne --publicurl 'http://swift-proxy:8888/v1/AUTH_%(tenant_id)s' --adminurl 'http://swift-proxy:8888/v1' --internalurl 'http://swift-proxy:8888/v1/AUTH_%(tenant_id)s'
     
    Следующий скриншот отображает вывод выполнения предыдущих команд создания конечных точек:
      root@swift-proxy:/home/vedams# keystone endpoint-create --service-id KEYSTONE_SERVICE_ID --region regioneOne --publicurl 'http://swift-proxy:5000/v2.0' --adminurl 'http://swift-proxy:35357/v2.0' --internalurl 'http://swift-proxy:5000/v2.0'
    +-------------+----------------------------------+
    |  Property   |           Value                  |
    +-------------+----------------------------------+
    |   adminurl  |  http://swift-proxy:35357/v2.0   |
    |     id      | cdade3f814ac48c1b1a365839685c18f |
    | internalurl |   http://swift-proxy:5000/v2.0   |
    |  publicurl  |   http://swift-proxy:5000/v2.0   |
    |    region   |           regionOne              |
    |     id      | a9c2d44442464975bb50e296fcc584b4 |
    +-------------+----------------------------------+
    root@swift-proxy:/home/vedams# keystone endpoint-create --service-id SWIFT_SERVICE_ID --region regioneOne --publicurl 'http://swift-proxy:8888/v1/AUTH_%(tenant_id)s' --adminurl 'http://swift-proxy:8888/v1' --internalurl 'http://swift-proxy:8888/v1/AUTH_%(tenant_id)s'
    +-------------+-----------------------------------------------+
    |  Property   |                 Value                         |
    +-------------+-----------------------------------------------+
    |   adminurl  |         http://swift-proxy:8888/v1            |
    |     id      |       479defffcd3452a8d90a4c00c35dc04         |
    | internalurl | http://swift-proxy:8888/v1/AUTH_%(tenant_id)s |
    |  publicurl  | http://swift-proxy:8888/v1/AUTH_%(tenant_id)s |
    |    region   |                 regionOne                     |
    |     id      |       a0ab378728b148fd9c9a0534d1d6a227        |
    +-------------+-----------------------------------------------+
    root@swift-proxy:/home/vedams#
     
  11. Теперь мы вернем в исходное состояние переменные окружения, которые мы экспортировали ранее, так как мы не нуждаемся в них снова. Мы будем вызывать REST API и снабжать их именем пользователя и паролем для вместе с конечной точкой. Верните в исходное положение переменные окружения, как показано в следующих командах:
      #   unset OS_SERVICE_TOKEN
    #   unset OS_SERVICE_ENDPOINT
     
  12. Теперь мы запросим маркер аутентификации используя пользователя с правами администратора и указанием пароля. Это потдведит, что служба Keystone настроена и работает правильно на сконфигурированной конечной точке.
    Мы также убедимся, что аутентификация работает правильно, запросив маркер для определенного владельца, как показано в следующей команде:
      #   keystone --os-username=admin --os-password=ADMIN_PASS \
    --os-tenant-name=admin --os-auth-url=http://swift-proxy:35357/v2.0 token-gat
     
  13. Наконец, протестируем службу Keystone, выполнив следующие приведенные ниже команды для вывода списка пользователей, владельцев, ролей и конечных точек (сгенерированный ранее случайный маркер именуются Random Token):
      #   keystone --os-token=Random Token --os-endpoint=http://swift-proxy:35357/v2.0 \
    user-list
    #   keystone --os-token=Random Token --os-endpoint=http://swift-proxy:35357/v2.0 \
    tenant-list
    #   keystone --os-token=Random Token --os-endpoint=http://swift-proxy:35357/v2.0 \
    role-list
    #   keystone --os-token=Random Token --os-endpoint=http://swift-proxy:35357/v2.0 \
    endpoint-list
     

Заключение

В этой главе вы узнали, как установить и настроить службу OpenStack Swift для обеспечения хранения объектов, а также установить и настроить службу Keystone для аутентификации пользователей для доступа к хранилищу объектов Swift. Следующая глава содержит подробную информацию о различных инструментах, командах и API, которые предоставлены для доступа и использования системы хранения объектов Swift.

Глава 2 Оглавление Глава 4
 
Перевод: Copyright © 2014  .
All rights reserved.
Ссылки обязательны (Refs and links obligatory).
http://www.mdl.ru