Поиск по сайту:

Как развернуть безопасный кластер CockroachDB на сервере Ubuntu


На этой странице

  1. Предпосылки
  2. Что будем делать?
  3. Шаг 1. Настройка NTP-сервера с помощью Chrony
  4. Шаг 2. Загрузите и установите CockroachDB
  5. Шаг 3. Создание сертификатов
    1. Создать ЦС и скопировать на все узлы
    2. Создание клиентских сертификатов
    3. Создание сертификатов сервера

    1. Тестирование панели управления CockroachDB
    2. Тестирование репликации базы данных

    CockroachDB — это облачная база данных SQL с открытым исходным кодом, разработанная CockroachLabs. Это распределенная база данных SQL, построенная на базе транзакций и хранилища ключей. CockroachDB — это масштабируемая база данных SQL, которую сравнивают с базой данных Google Spanner. Он основан на протоколе PostgreSQL и готов к работе.

    В этом руководстве мы покажем вам, как настроить кластер Secure CockroachDB в Ubuntu 18.04. Вы узнаете, как настроить безопасный кластер, получить доступ к панели администратора CockroachDB, создать нового пользователя в CockroachDB, создать и показать базу данных в CockroachDB.

    Предпосылки

    Для запуска кластера CockroachDB нам потребуется несколько серверов. И мы будем использовать три сервера Ubuntu 18.04 с подробным именем хоста и IP-адресом, как показано ниже.

    node1   10.5.5.21
    node2   10.5.5.22
    node3   10.5.5.23

    Что мы будем делать?

    • Настройка NTP-сервера с помощью Chronysystemctl перезапустить хронию
      systemctl включить хронию
    • Загрузить и установить CockroachDB
    • Создание сертификатов
    • Инициализация кластера CockroachDB
    • Добавить узел в кластер CockroachDB
    • Тестирование

    Шаг 1 - Настройте NTP-сервер с помощью Chrony

    Во-первых, мы должны синхронизировать время между серверами в кластере. Итак, нам нужно установить пакет NTP на все серверы. И для этого руководства мы будем использовать хрони.

    Установите пакет chrony на все серверы, используя следующую команду.

    sudo apt install chrony -y

    После завершения установки перейдите в каталог конфигурации /etc/chrony/ и отредактируйте файл chrony.conf.

    cd /etc/chrony/
    vim chrony.conf

    Удалите пул NTP по умолчанию и замените его пулом своей страны.

    pool 0.id.pool.ntp.org iburst maxsources 4
    pool 1.id.pool.ntp.org iburst maxsources 1
    pool 2.id.pool.ntp.org iburst maxsources 1
    pool 3.id.pool.ntp.org iburst maxsources 2

    Сохранить и закрыть.

    Теперь перезапустите службу chrony, а затем добавьте chrony в службу запуска.

    systemctl restart chrony
    systemctl enable chrony

    В результате время между серверами будет синхронизировано с теми же серверами пула NTP.

    Шаг 2 — Скачайте и установите CockroachDB

    На этом этапе мы загрузим и установим CockroachDB на все серверы. Итак, запустите все команды на всех серверах вашего кластера.

    Создайте новый каталог с именем двоичный файл и войдите в него.

    mkdir -p binary; cd binary

    Загрузите сжатый двоичный файл cockroachdb для Linux и распакуйте его.

    wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
    tar -xvzf cockroach-latest.linux-amd64.tgz

    Теперь скопируйте бинарный файл таракана в каталог /etc/local/bin.

    cp cockroach-*/cockroach /usr/local/bin/

    После этого вы можете запустить команду cockroach и изучить базовую команду для получения справки, проверить версию и т. д.

    cockroach version

    CockroachDB установлен на всех серверах.

    Шаг 3 — Создайте сертификаты

    Теперь собирались сгенерировать несколько сертификатов для защиты кластера CockrouchDB. Мы можем использовать OpenSSL или командную строку тараканов для создания файлов сертификатов.

    Мы сгенерируем сертификат CA и ключ, а также сгенерируем сертификат для пользователя root и сертификат для каждого узла в кластере.

    Создайте каталог сертификатов ~/.cockroach-certs и переменную среды для него.

    mkdir -p ${HOME}/.cockroach-certs/
    export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'

    Создайте ЦС и скопируйте на все узлы

    На сервере node1 создайте центр сертификации с помощью приведенной ниже команды cockroach.

    cockroach cert create-ca \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    И вы получите ca.key и ca.crt в каталоге ~/.cockroach-certs.

    После этого скопируйте сертификат ЦС и ключ на все серверы с помощью команды scp, как показано ниже.

    Скопируйте на сервер node2.

    scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key :~/.cockroach-certs/

    Скопируйте на сервер node3.

    scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key :~/.cockroach-certs/

    Теперь убедитесь, что сертификат CA и ключ загружены на все хост-серверы.

    Создание клиентских сертификатов

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

    Сгенерируйте сертификат клиента на всех серверах с помощью следующей команды тараканов.

    cockroach cert create-client \
    root \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    И вы получите клиентские сертификаты для корневого пользователя client.root.crt и client.root.key.

    Создание сертификатов сервера

    Сертификаты серверов будут использоваться для защиты связи между серверами в кластере CockroachDB. А для того, чтобы присоединиться к защищенному кластеру, вам необходимо сгенерировать серверные сертификаты для каждого сервера.

    На узле node1 создайте сертификат сервера с помощью следующей команды.

    cockroach cert create-node \
    localhost \
    $(hostname) \
    10.5.5.21 \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    Измените IP-адрес на свой собственный.

    На узле node2 создайте сертификат сервера, используя следующую команду.

    cockroach cert create-node \
    localhost \
    $(hostname) \
    10.5.5.22 \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    Измените IP-адрес на свой собственный.

    На node3 создайте сертификат сервера, используя следующую команду.

    cockroach cert create-node \
    localhost \
    $(hostname) \
    10.5.5.23 \
    --certs-dir=$COCKROACH_CERTS_DIR \
    --ca-key=$COCKROACH_CERTS_DIR/ca.key

    Измените IP-адрес на свой собственный.

    Теперь вы получите сертификаты сервера node.crt и node.key в каталоге ~/.cockroach-certs.

    Шаг 4. Запустите безопасный кластер CockroachDB

    После создания нескольких SSL-сертификатов мы инициализируем кластер Secure CockroachDB с сервера node1.

    Выполните следующую команду на сервере node1.

    cockroach start \
    --background --certs-dir=$COCKROACH_CERTS_DIR \
    --advertise-host=10.5.5.21 --listen-addr=10.5.5.21

    Убедитесь, что нет ошибки.

    После этого проверьте состояние узла кластера, выполнив приведенную ниже команду таракан.

    cockroach node status --host=10.5.5.21

    Вы получите node1 с IP-адресом 10.5.5.21, работающий с CockroachDB v2.1.6.

    Шаг 5 — Добавьте узел в кластер

    Далее мы добавим узлы node2 и node3 в безопасный кластер CockroachDB.

    Убедитесь, что ЦС и сертификат сервера находятся в каталоге ~/.cockroach-certs.

    ls -lah ~/.cockroah-certs/

    Теперь выполните следующую команду, чтобы добавить node2 с IP-адресом 10.5.5.22. Добавьте его в кластер CockroachDB.

    cockroach start \
    --background --certs-dir=$COCKROACH_CERTS_DIR \
    --advertise-host=10.5.5.22 --listen-addr=10.5.5.22 \
    --join=10.5.5.21:26257

    После завершения перейдите к node3 и выполните следующую команду.

    cockroach start \
    --background --certs-dir=$COCKROACH_CERTS_DIR \
    --advertise-host=10.5.5.23 --listen-addr=10.5.5.23 \
    --join=10.5.5.21:26257

    Измените IP-адрес на свой собственный.

    Теперь узлы node2 и node3 добавлены в кластер Secure CockroachDB. Проверьте это с сервера node1, используя следующую команду.

    cockroach node status --host=10.5.5.21

    И вы получите три разных сервера с работающим тараканом v2.1.6.

    Шаг 6 — Тестирование

    На этом последнем шаге мы протестируем нашу установку безопасного кластера CockroachDB, получив доступ к панели администратора и проверив репликацию базы данных между серверами.

    Тестирование панели управления CockroachDB

    CockroachDB предоставляет красивый пользовательский интерфейс панели инструментов для мониторинга кластера. Откройте веб-браузер и введите IP-адрес сервера, а затем порт 8080.

    И вы получите страницу входа в CockroachDB, как показано ниже.

    Чтобы войти в панель управления, нам нужно создать пользователя в базе данных CockroachDB.

    Вернитесь к терминалу node1 и войдите в оболочку SQL cockroachdb, используя следующую команду.

    cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
    --host=10.5.5.21

    Теперь создайте нового пользователя с именем hakase и паролем [email #, используя приведенный ниже запрос.

    CREATE USER hakase WITH PASSWORD '#';

    Введите \q, чтобы выйти из оболочки SQL CockroachDB.

    Теперь вернитесь в веб-браузер и введите пользователя hakase с паролем [email # на странице входа и нажмите кнопку «Войти».

    И вы получите панель администратора CockroachDB, как показано ниже.

    Тестирование репликации базы данных

    Теперь собирались протестировать репликацию базы данных между серверами в кластере CockroachDB, создав базу данных на узле 1 и проверив базу данных на узле 2 или узле 3.

    На узле node1 получите доступ к оболочке SQL CockroachDB с помощью следующей команды.

    cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
    --host=10.5.5.21

    Создайте две базы данных hakasedb и hakasedb2, используя приведенные ниже запросы.

    create database hakasedb;
    create database hakasedb2;

    Теперь распечатайте список баз данных и убедитесь, что вы получили две базы данных, которые мы только что создали.

    show databases;

    Затем войдите на сервер node2 и получите доступ к оболочке SQL CockroachDB, используя следующую команду.

    cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
    --host=10.5.5.22

    Проверьте список баз данных.

    show databases;

    И вы получите hakasedb и hakasedb2, которые были реплицированы на сервер node2.

    И, наконец, успешно завершена установка и настройка Secure CockroachDB Cluster с использованием Ubuntu 18.04.