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 завершены. В результате время на всех серверах синхронизировано с одинаковыми 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 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/‘.

- Создать сертификат 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 и ключ созданы и загружены на все серверы.

- Создать клиентский сертификат на 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. Чтобы присоединиться к защищенному кластеру, вам нужно сгенерировать серверные сертификаты для каждого сервера.
На первом ‘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’.

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

В результате мы готовы запустить и создать защищенный кластер 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
Теперь перейдите на сервер ‘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 на сервере ‘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 запущен на всех серверах. Он работает на порту ‘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 завершена успешно.
Шаг 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;Ниже приведен результат, который вы получите.

Как видно, новый пользователь yume доступен в списке. Он является членом роли ‘admin’.
В результате вы создали нового пользователя для базы данных CockroachDB.
Шаг 6 - Получить доступ к панели управления CockroachDB
По умолчанию CockroachDB предоставляет веб-панель управления, работающую на стандартном TCP порту ‘8080’.
Откройте веб-браузер и введите IP-адрес вашего сервера с портом ‘8080’ в адресной строке.
Теперь вы получите страницу входа в CockroachDB, как показано ниже.

Введите пользователя ‘yume‘ и пароль ‘yume321‘ в поле и нажмите кнопку ‘LOG IN‘.
И вы получите панель управления 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’ в списке баз данных.

- Проверить репликацию базы данных на node02 и node03
Затем перейдите на сервер ‘node02’ и войдите в SQL оболочку CockroachDB как пользователь ‘yume’, используя следующую команду.
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR --user=yume \
--host=172.16.0.4После того как вы вошли, проверьте все доступные базы данных, используя следующий запрос.
SHOW DATABASES;И вы получите базы данных ‘yumedb’ и ‘yumedb2’ в списке.

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

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

И наконец, установка и настройка защищенного кластера CockroachDB на Ubuntu 20.04 завершены успешно.
Ссылки
Get new posts in your inbox
No spam. Unsubscribe anytime.