CockroachDB · 8 min read · Dec 19, 2025

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

CockroachDB — это облачная SQL база данных с открытым исходным кодом, разработанная CockroachLabs. Это распределенная SQL база данных, построенная на транзакционных и ключ-значение хранилищах.

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

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

Предварительные требования

Для этого руководства мы настроим защищенный кластер CockroachDB с 3 серверами Ubuntu 20.04.

node01 172.16.0.3
node02 172.16.0.4
node03 172.16.0.5

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

  • Настроить NTP с Chrony
  • Скачать бинарный файл CockroachDB для Linux
  • Сгенерировать SSL сертификаты для кластера CockroachDB
  • Запустить защищенный кластер CockroachDB
  • Создать администратора для CockroachDB
  • Получить доступ к панели управления CockroachDB
  • Тестирование репликации базы данных на кластере CockroachDB

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

Сначала мы синхронизируем время на всех трех серверах с NTP сервером, используя chrony. Убедитесь, что вы выполняете все команды на этом шаге на всех серверах.

Теперь обновите все доступные репозитории на вашей системе и установите пакет chrony, используя команду apt ниже.

sudo apt update  
sudo apt install chrony -y

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

cd /etc/chrony/  
vim chrony.conf

Измените пул по умолчанию на ваш ближайший NTP сервер, как показано ниже.

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

Сохраните и закройте.

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

systemctl restart chrony  
systemctl enable chrony

Служба chrony работает, проверьте это с помощью следующей команды.

systemctl status chrony

Ниже приведен результат, который вы получите.

Установка Chrony на Ubuntu 20.04

В результате установка и настройка Chrony завершены. В результате время на всех серверах синхронизировано с одинаковыми NTP серверами.

Шаг 2 - Скачать бинарный файл CockroachDB

На этом шаге мы загрузим и установим CockroachDB на все наши три сервера.

Теперь создайте новую директорию с именем ‘binary’ и перейдите в нее.

mkdir -p binary; cd binary

После этого загрузите последнюю версию бинарного файла CockroachDB и извлеките его.

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

Теперь переместите бинарный файл ‘cockroach’ в директорию ‘/usr/local/bin’.

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

В результате вы сможете выполнять команду ‘cockroach’ на вашей системе.

Проверьте бинарный файл ‘cockroach’ и версию CockroachDB, используя следующую команду.

which cockroach  
cockroach version

Ниже приведен результат, который вы получите.

Скачать и установить бинарный файл CockroachDB

В результате вы загрузили и установили CockroachDB v20.1.5 на серверах Linux, и теперь вы можете создать кластер CockroachDB.

Шаг 3 - Создать SSL сертификаты для кластера CockroachDB

Перед созданием нового кластера CockroachDB мы создадим и сгенерируем SSL сертификаты для защиты нашего кластера. Для генерации SSL сертификатов мы можем использовать OpenSSL или командную строку ‘cockroach’.

- Создать директорию сертификатов CockroachDB

Сначала нам нужно создать новую директорию для хранения всех SSL сертификатов для нашего кластера CockroachDB.

Как пользователь root, создайте новую директорию ‘~/.cockroach-certs’ и добавьте системную переменную окружения ‘COCKROACH_CERTS_DIR’ с помощью команды ниже.

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

Затем, чтобы сделать переменную окружения ‘COCKROACH_CERTS_DIR’ постоянной, отредактируйте конфигурацию ~/.bashrc с помощью редактора vim.

vim ~/.bashrc

Вставьте следующую конфигурацию в конец строки.

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

Сохраните и закройте.

Затем перезагрузите конфигурацию ~/.bashrc и проверьте переменную окружения ‘COCKROACH_CERTS_DIR’.

source ~/.bashrc  
echo $COCKROACH_CERTS_DIR

И вы получите переменную ‘COCKROACH_CERTS_DIR’ со значением ‘directory ${HOME}/.cockroach-certs/‘.

Настройка директории сертификатов Cockroach

- Создать сертификат CA и ключ

После создания директории SSL мы сгенерируем сертификат CA и ключ, используя командную строку ‘cockroach’ на сервере ‘node01’.

Сгенерируйте сертификат CA и ключ в ‘$COCKROACH_CERT_DIR’ с помощью команды ‘cockroach’ ниже.

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

После этого скопируйте сгенерированные ‘ca.crt’ и ‘ca.key’ на другие серверы ‘node02’ и ‘node03’, используя команду scp, как показано ниже.

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

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

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

- Создать клиентский сертификат на node01

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

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

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

Теперь вы получите новые сертификаты ‘client.root.crt’ и ‘client.root.key’ в директории ‘$COCKROACH_CERTS_DIR’.

Сгенерировать клиентский сертификат CockroachDB

- Создать серверные сертификаты на всех серверах

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

На первом ‘node01’ сгенерируйте серверный сертификат, используя следующую команду, и убедитесь, что вы изменили IP-адрес на свой.

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

Затем сгенерируйте серверный сертификат для ‘node02’, используя следующую команду.

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

После этого сгенерируйте серверный сертификат для сервера ‘node03’.

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

Теперь, если вы проверите директорию ‘~/.cockroach-certs’, вы получите новые сертификаты ‘node.crt’ и ‘node.key’ на всех серверах.

ls -lah ${HOME}/.cockroach-certs/

Ниже приведены все доступные сертификаты на главном сервере ‘node01’.

Сгенерировать сертификат для node01

Вы увидите три разных сертификата: сертификаты CA, клиентские сертификаты и серверные сертификаты.

А для других узлов ‘node02’ и ‘node03’ вы увидите два сертификата: сертификаты CA и серверные сертификаты.

Сгенерировать серверный сертификат для node02 и node03

В результате мы готовы запустить и создать защищенный кластер CockroachDB.

Шаг 4 - Запустить защищенный кластер CockroachDB

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

Перед запуском процесса CockroachDB убедитесь, что вы изменили IP-адреса для каждого сервера на свои собственные и убедитесь, что переменная окружения ‘$COCKROACH_CERTS_DIR’ загружена.

Сначала запустите процесс CockroachDB на ‘node01’, используя следующую команду.

cockroach start \  
 --background --certs-dir=$COCKROACH_CERTS_DIR \  
 --store=/var/lib/cockroachdb \  
 --advertise-host=172.16.0.3 --listen-addr=172.16.0.3 \  
 --join=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257

Запустить защищенный кластер CockroachDB

Теперь перейдите на сервер ‘node02’ и запустите процесс CockroachDB.

cockroach start \  
 --background --certs-dir=$COCKROACH_CERTS_DIR \  
 --store=/var/lib/cockroachdb \  
 --advertise-host=172.16.0.4 --listen-addr=172.16.0.4 \  
 --join=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257

Запустить защищенный кластер CockroachDB

После этого запустите процесс CockroachDB на сервере ‘node03’.

cockroach start \  
 --background --certs-dir=$COCKROACH_CERTS_DIR \  
 --store=/var/lib/cockroachdb \  
 --advertise-host=172.16.0.5 --listen-addr=172.16.0.5 \  
 --join=172.16.0.3:26257,172.16.0.4:26257,172.16.0.5:26257

Запустить защищенный кластер CockroachDB

Теперь процесс CockroachDB запущен на всех серверах. Он работает на порту ‘26257’, а данные DockroachDB хранятся в директории ‘/var/lib/cockroachdb’.

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

ss -plntu

Как видно, процесс CockroachDB работает на TCP порту ‘26257’ для подключения к базе данных и на порту ‘8080’ как панели управления CockroachDB по умолчанию.

Затем вернитесь на главный сервер ‘node01’ и инициализируйте защищенный кластер CockroachDB, используя команду ниже.

cockroach init --host=172.16.0.3:26257

И вы получите следующее сообщение.

Кластер успешно инициализирован

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

grep 'node starting' /var/lib/cockroachdb/logs/cockroach.log -A 11

Ниже приведен результат, который вы получите.

Инициализация кластера CockroachDB

В результате инициализация защищенного кластера CockroachDB завершена успешно.

Шаг 5 - Создать администратора для CockroachDB

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

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

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

Теперь создайте нового пользователя с именем ‘yume’ и паролем ‘yume321’, используя следующий запрос.

CREATE USER yume WITH PASSWORD 'yume321';

После этого разрешите пользователю ‘yume’ вход и добавьте его в роль ‘admin’.

ALTER USER yume LOGIN;  
GRANT admin TO yume;

Теперь проверьте всех доступных пользователей в CockroachDB, используя следующий запрос.

SHOW USERS;

Ниже приведен результат, который вы получите.

Создать администратора CockroachDB

Как видно, новый пользователь yume доступен в списке. Он является членом роли ‘admin’.

В результате вы создали нового пользователя для базы данных CockroachDB.

Шаг 6 - Получить доступ к панели управления CockroachDB

По умолчанию CockroachDB предоставляет веб-панель управления, работающую на стандартном TCP порту ‘8080’.

Откройте веб-браузер и введите IP-адрес вашего сервера с портом ‘8080’ в адресной строке.

https://172.16.0.3:8080/

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

Страница входа CockroachDB

Введите пользователя ‘yume‘ и пароль ‘yume321‘ в поле и нажмите кнопку ‘LOG IN‘.

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

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

Как видно, у вас есть кластер CockroachDB с тремя активными узлами.

В результате вы успешно вошли в панель управления CockroachDB с новым пользователем.

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

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

Мы создадим новую базу данных на сервере ‘node01’, используя пользователя ‘yume’, а затем проверим базу данных с других узлов ‘node02’ и ‘node03’.

- Подключиться к node01 и создать базы данных

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

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \  
 --host=172.16.0.3

После того как вы вошли в SQL оболочку CockroachDB, создайте новые базы данных, используя следующие запросы.

CREATE DATABASE yumedb;  
CREATE DATABASE yumedb2;

Теперь проверьте все доступные базы данных в CockroachDB.

SHOW DATABASES;

И вы получите ‘yumedb’ и ‘yumedb2’ в списке баз данных.

Создать базу данных CockroachDB

- Проверить репликацию базы данных на node02 и node03

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

cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \  
 --host=172.16.0.4

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

SHOW DATABASES;

И вы получите базы данных ‘yumedb’ и ‘yumedb2’ в списке.

Проверить репликацию базы данных на узле02

Сделайте то же самое на сервере ‘node03’, и вы получите тот же результат.

Ниже приведен результат сервера ‘node03’.

Проверить репликацию базы данных на узле03

В результате репликация базы данных между узлами кластера CockroachDB работает.

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

Проверить базу данных из панели управления CockroachDB

И наконец, установка и настройка защищенного кластера CockroachDB на Ubuntu 20.04 завершены успешно.

Ссылки

https://www.cockroachlabs.com/docs/stable/

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.