Подготовка к установке

Для работы Enterprise-редакции требуется один или несколько серверов. Рекомендуемая схема развертывания:

Рекомендуемая схема развертывания Blitz Identity Provider

Требуемые конфигурации серверов для развертывания Blitz Identity Provider:

  1. Балансировщик нагрузки (HTTPs-proxy) – можно использовать существующий веб-сервер для балансировки нагрузки и снятия SSL-шифрования с входящего трафика. Если принято решение использовать под Blitz Identity Provider отдельный балансировщик, то рекомендуется следующая конфигурация: 1 ядро, 2 Гб ОЗУ, 30 Гб пространства на жестком диске.
  2. Сервера Blitz Identity Provider – для обеспечения отказоустойчивости рекомендуется использовать не менее 2 серверов. Рекомендуется следующая конфигурация: 2 ядра, 8 Гб ОЗУ, 30 Гб пространства на жестком диске.
  3. Сервера БД Couchbase Server – для обеспечения отказоустойчивости рекомендуется использовать 3 сервера. Рекомендуется следующая конфигурация: 2 ядра, 8 Гб ОЗУ, 50 Гб пространства на жестком диске. Для достижения оптимальной производительности рекомендуется использовать раздельные диски для хранения данных в СУБД и для индексов. Для индексов рекомендуется использовать SSD-диски.
  4. Хранилище учетных записей и паролей – в качестве хранилища можно использовать существующее хранилище на основе LDAP или Microsoft Active Directory, либо иную существующую систему хранения учетных записей и паролей (в этом случае для существующего хранилища потребуется разработка REST-сервисов, обеспечивающих возможность интеграции Blitz Identity Provider и существующего хранилища учетных записей). Если планируется создание нового хранилища учетных записей, то в качестве него рекомендуется использовать LDAP-сервер, например, 389 Directory Server. Рекомендуемая конфигурация LDAP-сервера – 2 ядра, 8 Гб ОЗУ, 50 Гб пространства на жестком диске.
  5. Сервер администрирования и сервер логов – рекомендуется выделить отдельный сервер, на котором будет запущено веб-приложение «Консоль управления Blitz Identity Provider», и куда будет настроен сбор логов с различных серверов кластера Blitz Identity Provider. Рекомендуемая конфигурация админ-сервера – 1 ядро, 2 Гб ОЗУ, 30 Гб пространства на жестком диске.

Для работы Blitz Identity Provider на сервера требуется установить следующее системное ПО:

  • ОС Linux (CentOS версии 7 или выше, RHEL версии 7 или выше, Debian версии 8 или выше, Ubuntu версии 16.04 или выше);
  • Java Oracle JDK 8u60 или выше;
  • Менеджер памяти Memcached версии 1.4.15 или выше;
  • СУБД Couchbase Server 5.0 или выше.

Установка

Для установки необходимо выполнить следующую последовательность шагов (в качестве примера рассматривается установка под CentOS):

  1. Установить и настроить Oracle JDK 1.8.

  2. Установить менеджер памяти memcached.

  3. Установить и настроить сервис Couchbase Server.

  4. Установить консоль управления Blitz Identity Provider Console.

  5. Установить сервер аутентификации Blitz Identity Provider.

  6. Настроить синхронизацию конфигурации.

  7. Настроить терминировани SSL и балансировку запросов.

  8. Настроить внешнее хранилище учетных записей.

1. Установка и настройка Oracle JDK 1.8

На серверах, предназначенных для установки ПО сервера Blitz Identity Provider и административной консоли Blitz Identity Provider, необходимо установить и настроить Oracle JDK 1.8:

  • Загрузить дистрибутив Oracle JDK 1.8. в виде архива tar

  • Скопировать загруженный дистрибутив на сервера (например, в директорию /tmp).

  • Создать директорию под установку Oracle JDK 1.8.

mkdir -p /opt/oracle/jdk/
  • Распаковать в созданную директорию дистрибутив Oracle JDK 1.8.
tar xf /tmp/jdk-8uXXX-linux-x64.tar.gz -C /opt/oracle/jdk/
  • Загрузить дистрибутив Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8.

  • Скопировать загруженный дистрибутив на сервера (например, в директорию /tmp).

  • Распаковать архив и скопировать содержимое в директорию с установленным Oracle JDK 1.8.

cd /tmp
unzip jce_policy-8.zip
cp UnlimitedJCEPolicyJDK8/*.jar /opt/oracle/jdk/jdk1.8.0_XXX/jre/lib/security/

2. Установка memcached

Сервис memcached должен быть установлен на серверах, предназначенных для установки ПО сервера Blitz Identity Provider и административной консоли Blitz Identity Provider. Версия memcached должна быть 1.4.15 или выше.

  • Для установки memcached выполнить команду:
yum -y install memcached
  • После завершения установки добавить сервис memcached в автозапуск и запустить сервис:
systemctl enable memcached
systemctl start memcached
  • Сервис memcached запускается на порту 11211. Нужно убедиться, что этот порт открыт на межсетевых экранах и может быть использован для соединения между серверами с Blitz Identity Provider.

3. Установка и настройка сервиса Couchbase Server

Необходимо установить Couchbase Server на каждый из выделенных под установку СУБД серверов согласно инструкции.

Дистрибутив Couchbase Server можно загрузить здесь.

Примечание: В DEV/TEST-средах допустимо Couchbase Server устанавливать на существующие сервера с Blitz Identity Provider, но в этом случае нужно учесть, что в Couchbase Server используется своя встроенная Memcached-служба, и во избежание конфликта необходимо скорректировать используемые Memcached порты в Blitz Identity Provider / Couchbase Server.

После завершения установки добавить сервис Couchbase Server в автозапуск и запустить сервис:

systemctl enable couchbase-server
systemctl start couchbase-server

Проверить работоспособность сервиса, выполнив команду:

systemctl status couchbase-server

Далее необходимо:

  • Инициализировать на каждом сервере кластер Couchbase Server согласно инструкции (на первом сервере инициализируется кластер, остальные сервера включаются в кластер). Все настройки можно задать как предложено по умолчанию, только нужно для каждого сервера в hostname задать полное имя сервера. В качестве имени сервера не рекомендуется использовать его IP-адрес.

  • На любом из серверов кластера Couchbase Server выполнить скрипты по подготовке Couchbase Server к использованию Blitz Identity Provider:

    • Скрипты находятся в директории couchbase в архиве resources.zip в составе дистрибутива Blitz Identity Provider Enterprise Edition.
    • Скрипты нужно скопировать на любой сервер кластера Couchbase Server.
    • Далее перейти в директорию и выполнить скрипт создания buckets для хранения информации Blitz Identity Provider:
./cb_buckets_init.sh
  • В процессе выполнения скрипта понадобится ввести:

    • Имя URL сервера Couchbase Server – ввести строку вида http://<hostname>:8091, где в качестве hostname указать имя хоста сервера, с которого выполняется скрипт.
    • Логин учетной записи администратора Couchbase Server – задается при инициализации кластера при выполнении предыдущего пункта инструкции.
    • Пароль учетной записи администратора Couchbase Server – задается при инициализации кластера при выполнении предыдущего пункта инструкции.
  • Выполнить скрипт создания индексов для выполнения поисковых запросов Blitz Identity Provider в БД:

./cb_indexes_init.sh

В процессе выполнения скрипта понадобится ввести через пробел список hostname всех серверов Couchbase Server из кластера.

  • В консоли администрирования Couchbase Server отредактировать настройки количества копий данных на различных экземплярах Couchbase. Для этого в меню Buckets поочередно выбрать каждый bucket, нажать на нем Edit и задать значение настройки Enable в блоке Replicas и установить число реплик. Для кластера из 3 серверов рекомендуется задать в настройке значение 1 для числа реплик. Затем в меню Settings рекомендуется включить настройку Enable auto-failover и задать значение Timeout в 30 секунд (auto-failover будет работать, только если в кластере СУБД не менее 3 серверов и настроена репликация для bucket).

  • Настроить резервное копирование БД, используя инструкцию

4. Установка Blitz Identity Provider Console

Установку консоли управления можно провести на любой сервер, где установлен сервер Blitz Identity Provider, либо на выделенный административный сервер (рекомендуется). На сервере предварительно должны быть установлены Oracle JDK 1.8 и memcached. Для установки консоли необходимо:

  • на предназначенный сервер скопировать файл blitz-console-2.X.X.bin (например, в директорию /tmp) из дистрибутива Blitz Identity Provider Enterprise Edition;

  • запустить установщик:

cd /tmp
./blitz-console-2.X.X.bin
  • в ответ на запросы установщика задать:

    • значение JAVA_HOME – задать директорию, в которую на сервере установлен Oracle JDK 1.8 (например, /opt/oracle/jdk/);
    • внешнее имя домена, на котором будет функционировать Blitz Identity Provider;
    • пароль к хранилищу ключей Blitz Identity Provider. Хранилище ключей будет сгенерировано в процессе установки, и доступ к хранилищу будет закрыт заданным паролем.
  • дождаться окончания установки Blitz Identity Provider Console. Установка будет произведена в директорию /usr/share/identityblitz.

  • отредактировать файл настроек /usr/share/identityblitz/blitz-config/blitz.conf. В этом блоке [NODENAME-x] – имя каждого сервера БД Couchbase Server в виде FQDN имени сервера (например, nodename = node1.blitz.loc).

"internal-store" : {  
   "nodes":[  
      "[NODENAME-1]:8087",
      ...
      "[NODENAME-n]:8087"
   ]
}
  • отредактировать блок memcached:
"memcached" : {
    "servers" : [
        "[MEMCACHED]"
    ]
}

[MEMCACHED] – указать хост и порт службы memcached (например, ld-s-blitz1-dev.ao.company:11211).

Завершающий шаг - запуск консоли и добавление ее в автозапуск:

systemctl enable blitz-console
systemctl start blitz-console

5. Установка сервера аутентификации Blitz Identity Provider

Сервер аутентификации Blitz Identity Provider рекомендуется установить минимум на 2 сервера. На этих серверах предварительно должны быть установлены Oracle JDK 1.8 и memcached. Для установки сервера аутентфиикации необходимо:

  • на каждый предназначенный для установки сервер скопировать файлы blitz-idp-2.XX.X.bin, blitz-registration-2.X.X.bin, blitz-recovery-2.X.X.bin (например, в директорию /tmp) из дистрибутива Blitz Identity Provider Enterprise Edition.

  • запустить установщик сервиса аутентификации Blitz Identity Provider:

cd /tmp
./blitz-idp-2.X.X.bin
  • в ответ на запросы установщика задать значение JAVA_HOME – задать директорию, в которую на сервере установлен Oracle JDK 1.8 (например, /opt/oracle/jdk/). Дождаться окончания установки. Установка будет произведена в директорию /usr/share/identityblitz.

  • запустить сервис аутентификации и добавить его в автозапуск:

systemctl enable blitz-idp
systemctl start blitz-idp
  • запустить установщик сервиса регистрации пользователей Blitz Identity Provider (его установку можно пропустить, если не планируется использовать функцию самостоятельной регистрации пользователей):
cd /tmp
./blitz-registration-2.X.X.bin
  • в ответ на запросы установщика задать значение JAVA_HOME – директорию, в которую на сервере установлен Oracle JDK 1.8 (например, /opt/oracle/jdk/). Дождаться окончания установки. Установка будет произведена в директорию /usr/share/identityblitz.

  • запустить сервис регистрации пользователей и добавить его в автозапуск:

systemctl enable blitz-registration
systemctl start blitz-registration
  • запустить установщик сервиса восстановления паролей (его установку можно пропустить, если не планируется использовать функцию самостоятельного восстановления пользователями забытых паролей):
cd /tmp
./blitz-recovery-2.X.X.bin
  • в ответ на запросы установщика задать значение JAVA_HOME – директорию, в которую на сервере установлен Oracle JDK 1.8 (например, /opt/oracle/jdk/). Дождаться окончания установки. Установка будет произведена в директорию /usr/share/identityblitz.

  • запустить сервис восстановления паролей и добавить его в автозапуск:

systemctl enable blitz-recovery
systemctl start blitz-recovery

6. Настройка синхронизации конфигурации

Поскольку Enterprise Edition предполагает установку на нескольких серверах, необходимо настроить синхронизацию конфигурации ПО между этими серверами. Для этого:

    1. На сервере с консолью управления Bitz Identity Provider Console:
  • установить rsync и incron:
sudo yum install rsync incron

или

sudo apt install rsync incron
  • переключиться в пользователя blitz
sudo su - blitz
  • сгенерировать ssh ключ командой (на все запросы отвечать по умолчанию):
ssh-keygen
  • прочитать публичный ssh ключ и сохранить его для дальнейшего использования:
cat /usr/share/identityblitz/.ssh/id_rsa.pub
  • настроить incrontab, выполнив компанду:
incrontab -e
  • откроется окно редактора, в котором необходимо вставить:
/usr/share/identityblitz/blitz-config IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh ./ $# $%
/usr/share/identityblitz/blitz-config/devices IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh devices $# $%
/usr/share/identityblitz/blitz-config/flow IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh flow $# $%
/usr/share/identityblitz/blitz-config/custom_messages IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh custom_messages $# $%
/usr/share/identityblitz/blitz-config/saml IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh saml $# $%
/usr/share/identityblitz/blitz-config/saml/conf IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh saml $# $%
/usr/share/identityblitz/blitz-config/saml/credentials IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh saml $# $%
/usr/share/identityblitz/blitz-config/saml/metadata IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh saml $# $%
/usr/share/identityblitz/blitz-config/simple IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh simple $# $%
/usr/share/identityblitz/blitz-config/assets IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh assets $# $%
/usr/share/identityblitz/blitz-config/assets/services IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh assets $# $%
/usr/share/identityblitz/blitz-config/assets/themes IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/sync_conf.sh assets $# $%
  • создать файл /usr/share/identityblitz/scripts/config_sync.sh и вставить в него скрипт:
#!/bin/bash
app_dir=/usr/share/identityblitz/
node_list="СПИСОК_НОД"
for node in $(echo "${node_list}"); do
rsync -r -a ${app_dir}/${1} ${USER}@${node}:${app_dir};
done
  • в качестве значения node_list, вместо СПИСОК_НОД, необходимо прописать список hostname нод Blitz Identity Provider (за исключением нод консоли управления - Blitz Identity Provider Console).

  • сделать файл /usr/share/identityblitz/scripts/config_sync.sh исполняемым:

chmod +x /usr/share/identityblitz/scripts/config_sync.sh
  • запустить incrontab, выполнив под пользователем root команду:
systemctl enable incrond
systemctl start incrond
    2. На остальных серверах Blitz Identity Provider:
  • установить rsync:
sudo yum install rsync

или

sudo apt install rsync
  • переключиться в пользователя blitz
sudo su - blitz
  • выполнить следующий скрипт:
mkdir .ssh
touch .ssh/authorized_keys
chmod 700 .ssh
chmod 640 .ssh/authorized_keys
  • открыть файл .ssh/authorized_keys любым редактором, например vim, и вставить публичный ssh ключ, полученный ранее.

7. Настройка терминирования SSL и балансировки запросов

В случае использования nginx в качестве веб-сервера балансировщика можно использовать при настройке пример настроечного файла blitz-idp.conf. Этот файл находится в директории nginx в архиве resources.zip в составе дистрибутива Blitz Identity Provider Enterprise Edition. В этом случае нужно скорректировать следующие блоки настроек nginx:

1) Скорректировать блок настроек балансировки:

upstream blitz-idp {
      server [BLITZ-IDP-NODE-01]:9000 max_fails=3 fail_timeout=120;
      server [BLITZ-IDP-NODE-02]:9000 max_fails=3 fail_timeout=120;
}
upstream blitz-reg {
      server [BLITZ-IDP-NODE-01]:9002 max_fails=3 fail_timeout=120;
      server [BLITZ-IDP-NODE-02]:9002 max_fails=3 fail_timeout=120;
}
upstream blitz-rec {
      server [BLITZ-IDP-NODE-01]:9003 max_fails=3 fail_timeout=120;
      server [BLITZ-IDP-NODE-02]:9003 max_fails=3 fail_timeout=120;
}
upstream blitz-console {
      server [BLITZ-IDP-CONSOLE-NODE-01]:9001 max_fails=3 fail_timeout=120;
}

Параметры имеют следующие назначения:

  • [BLITZ-IDP-NODE-01], [BLITZ-IDP-NODE-02] – имена (hostname) серверов с ПО Blitz Identity Provider (сервисы аутентификации, регистрации пользователей, восстановления паролей);

– [BLITZ-IDP-CONSOLE-NODE-01] – имя (hostname) сервера с Blitz Identity Provider Console.

2) Скорректировать блок настроек терминирования SSL:

ssl_certificate         [BLITZ-SSL-CERT-FILE];
ssl_certificate_key     [BLITZ-SSL-PRIVATEKEY-FILE];

Параметры имеют следующие назначения:

– [BLITZ-SSL-CERT-FILE] – путь (полное имя) к файлу с SSL-сертификатом сервера;

– [BLITZ-IDP-CONSOLE-NODE-01] – путь (полное имя) к файлу с SSL ключом сервера.

8. Установка и настройка внешнего хранилища учетных записей

В качестве хранилища учетных записей можно использовать:

  • внутреннее хранилище Blitz Identity Provider - в этом случае хранение учетных записей будет осуществляться в БД Couchbase Server;
  • внешнее хранилище, например, LDAP-каталог.

Подробнее о типах хранилищ и подключении к ним можно посмотреть здесь.