CockroachDB · 6 min read · Dec 19, 2025

Как развернуть защищенный кластер CockroachDB на сервере Ubuntu

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

В этом руководстве мы покажем вам, как настроить защищенный кластер 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 сервер с Chrony systemctl restart chrony
    systemctl enable chrony
  • Скачать и установить CockroachDB
  • Создать сертификаты
  • Инициализировать кластер CockroachDB
  • Добавить узел в кластер CockroachDB
  • Тестирование

Шаг 1 - Настройка NTP сервера с Chrony

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

Установите пакет 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 пулами серверов.

Запустите и включите Chrony

Шаг 2 - Скачать и установить CockroachDB

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

Создайте новый каталог с именем ‘binary’ и перейдите в него.

mkdir -p binary; cd binary

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

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

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

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

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

cockroach version

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

Установка CockroachDB

Шаг 3 - Создание сертификатов

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

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

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

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

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

На сервере ‘node1’ создайте центр сертификации, используя команду cockroach ниже.

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

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

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

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

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

scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/

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

scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key [email protected]:~/.cockroach-certs/

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

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

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

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

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

И вы получите клиентские сертификаты для пользователя root ‘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-адрес на свой.

Измените 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-адрес на свой.

Конфигурация 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 сертификатов мы инициализируем защищенный кластер CockroachDB с сервера ‘node1’.

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

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

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

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

cockroach node status --host=10.5.5.21

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

Шаг 5 - Добавление узла в кластер

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

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

ls -lah ~/.cockroach-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’ были добавлены в защищенный кластер CockroachDB. Проверьте это с сервера ‘node1’, используя следующую команду.

cockroach node status --host=10.5.5.21

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

Добавить узел в кластер

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

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

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

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

https://10.5.5.21:8080/

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

Панель управления CockroachDB

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

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

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

Теперь создайте нового пользователя с именем ‘hakase’ с паролем ‘hakase-labs123@#’, используя следующий запрос.

CREATE USER hakase WITH PASSWORD 'hakase-labs123@#';

Наберите ‘ q’ для выхода из SQL оболочки CockroachDB.

SQL оболочка CockroachDB

Теперь вернитесь в веб-браузер и введите пользователя ‘hakase’ с паролем ‘hakase-labs123@#’ на странице входа и нажмите кнопку Войти.

Cockroach DB

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

Обзор кластера

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

Теперь мы собираемся протестировать репликацию базы данных между серверами в кластере CockroachDB, создав базу данных на ‘node1’ и проверив базу данных с ‘node2’ или ‘node3’.

На ‘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;

Командная строка Cockroach DB

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

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

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

show databases;

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

Показать базы данных

И, наконец, установка и конфигурация защищенного кластера CockroachDB с использованием Ubuntu 18.04 была успешно завершена.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.