Postgres Pro для Azure

Руководство по созданию и использованию виртуальной машины

Для использования БД Postgres Pro Standard 9.6.2 в облаке Microsoft Azure необходимо иметь доступ в Интернет и учетную запись в Microsoft Azure.

Для установки используем образ виртуальной машины (VM) Postgres Pro Standard 9.6.2, доступный на Microsoft Azure Marketplace.

Требуемое ПО:

  • Azure CLI 2.0 для управления облачными ресурсами в Azure
  • 'psql' или 'Pgadmin' для доступа к БД

Используем кросс-платформенную утилиту Azure CLI 2.0.

Также можно использовать Azure Portal https://portal.azure.com или Azure PowerShell.

Установка Azure CLI 2.0 описана в https://docs.microsoft.com/ru-ru/cli/azure/install-azure-cli

Основные команды Azure CLI 2.0 описаны в https://docs.microsoft.com/ru-ru/cli/azure/get-started-with-azure-cli

Полный список команд Azure CLI 2.0 можно найти на https://docs.microsoft.com/ru-ru/cli/azure

Установка и администрирование Linux Virtual Machine описаны в https://docs.microsoft.com/ru-ru/azure/virtual-machines/linux

 

Подключение к Azure и проверка окружения

  • Подключаемся к Microsoft Azure с помощью команды:
az login

или

az login --username <myusername>
  • Установим для удобства табличный формат вывода команд Azure CLI 2.0:
az configure --output table
  • Проверяем установленную версию Azure CLI 2.0 (должна быть не ниже 2.0.7):
az --version | head -1
  • Проверим, зарегистрированы ли необходимые сервисы - Microsoft.Storage, Microsoft.Compute и Microsoft.Network:
az provider show --namespace Microsoft.Storage
az provider show --namespace Microsoft.Compute
az provider show --namespace Microsoft.Network
  • Если нет, то регистрируем их:
az provider register --namespace Microsoft.Storage
az provider register --namespace Microsoft.Compute
az provider register --namespace Microsoft.Network
  • Список географических регионов для размещения VM:
az account list-locations

Далее будем использовать географический регион ‘northeurope’.

  • Список доступных размеров VM в географическом регионе ‘northeurope’:
az vm list-sizes --location northeurope

Далее будем использовать размер VM ‘Standard_DS1’ (доступен для ‘Free Trial’ подписки).

  • Получаем название издателя образа VM Postgres Pro в Microsoft Azure Marketplace в географическом регионе ‘northeurope’:
az vm image list-publishers \
--location northeurope \
--query "[?starts_with(name, 'postgres')]"

Далее будем использовать название издателя образа VM ‘postgres-pro’.

  • Получаем название образа VM Postgres Pro, доступного на Microsoft Azure Marketplace от издателя ‘postgres-pro’ в географическом регионе ‘northeurope’:
az vm image list \
--all \
--location northeurope \
--publisher postgres-pro

Далее будем использовать название образа VM ‘postgres-pro:postgres-pro-standard:hrly:9.6.2’.

 

Создание VM

  • Настраиваем программное развертывание на портале https://portal.azure.com:
    • меню ‘Создать’
    • меню ‘Поиск по Marketplace’ – ‘Postgres Pro Standard 9.6.2’
    • ‘Хотите выполнить развертывание программным способом? Начните работу ->’
    • Состояние подписки ‘Включить’
    • ‘Сохранить’
  • Создаем ресурсную группу
az group create \
--location northeurope \
--name myresourcegroup
  • Создаем VM из образа, доступного на Microsoft Azure Marketplace:
az vm create \
--name myvm-xx \
--resource-group myresourcegroup \
--image postgres-pro:postgres-pro-standard:hrly:9.6.2 \
--location northeurope \
--size Standard_DS1 \
--admin-password Azure1234567890+ \
--admin-username azureuser \
--authentication-type password \
--public-ip-address-dns-name myvm-dnsname-xx \
--os-disk-name myosdisk-xx

Вместо ‘xx’ используем '01', '02', '03' и т.д.

  • (Опционально) Выполняем дополнительные настройки ОС VM:
az vm extension set \
--resource-group myresourcegroup \
--vm-name myvm-xx \
--name customScript \
--publisher Microsoft.Azure.Extensions \
--settings script-config-pgpro_profile.json
  • (Опционально) Содержимое файла ‘script-config-pgpro_profile.json’:
{
"commandToExecute": "echo 'export PGHOME=/usr/pgpro-9.6' > /var/lib/pgsql/.pgpro_profile; \
echo 'export PATH=$PGHOME/bin:$PATH' >> /var/lib/pgsql/.pgpro_profile; \
echo 'export MANPATH=$PGHOME/share/man:$MANPATH' >> /var/lib/pgsql/.pgpro_profile; \
echo 'export PGDATA=/var/lib/pgpro/9.6/data' >> /var/lib/pgsql/.pgpro_profile; \
echo 'export PGDATABASE=postgres' >> /var/lib/pgsql/.pgpro_profile; \
echo 'export PGUSER=postgres' >> /var/lib/pgsql/.pgpro_profile; \
echo 'export PGHOST=127.0.0.1' >> /var/lib/pgsql/.pgpro_profile; \
echo 'export PGPORT=5433' >> /var/lib/pgsql/.pgpro_profile; \
chown postgres:postgres /var/lib/pgsql/.pgpro_profile; \
chmod 0640 /var/lib/pgsql/.pgpro_profile"
}

 

Подключение к VM

В результате создается VM с полным доменным именем ‘myvm-dnsname-xx.northeurope.cloudapp.azure.com’ (полное доменное имя формируется из короткого доменного имени, задаваемого при создании VM, названия географического региона и ‘cloudapp.azure.com’) и с ОС-пользователем ‘azureuser’ (по умолчанию с правами ‘sudo’) с паролем ‘Azure1234567890+’ (сложность пароля определяется требованиями)

  • Подключаемся к VM:
ssh azureuser@myvm-dnsname-xx.northeurope.cloudapp.azure.com

Вместо ‘xx’ используем '01', '02', '03' и т.д.


Проверка статуса сервиса БД Postgres Pro

  • Проверим статус сервиса БД Postgres Pro:
sudo systemctl -l status postgrespro-9.6.service
  • Чтобы остановить/стартовать сервис БД Postgres Pro используем команды:
sudo systemctl stop postgrespro-9.6.service
sudo systemctl start postgrespro-9.6.service

 

Подключение к БД Postgres Pro

  • Переключаемся на пользователя ‘postgres’:
sudo su - postgres
  • Для подключения к БД Postgres Pro используем команду:
psql --port=5433
  • Для выхода из ‘psql’ используем команду:
\q
  • Для возврата в интерфейс Azure CLI 2.0 дважды выполняем команду 'exit'

 

Внешний доступ к VM

  • При необходимости внешнего подключения к БД Postgres Pro открываем порт 5433:
az vm open-port \
--port 5433 \
--resource-group myresourcegroup \
--name myvm-xx \
--priority 1001
  • При необходимости внешнего подключения к серверу мониторинга БД открываем порт 80:
az vm open-port \
--port 80 \
--resource-group myresourcegroup \
--name myvm-xx \
--priority 1002

Вместо ‘xx’ используем '01', '02', '03' и т.д.

 

Внешнее подключение к БД Postgres Pro

  • Для внешнего подключения к БД Postgres Pro с помощью 'psql' используем команду:
psql --host=myvm-dnsname-xx.northeurope.cloudapp.azure.com \
     --port=5433 --username=postgres --dbname=postgres
  • Для внешнего подключения к БД Postgres Pro с помощью 'Pgadmin' при конфигурации сервера в меню ‘Pgadmin’ используем следующие параметры:
    • ‘mydb-xx’ для ‘Name'
    • ‘myvm-dnsname-xx.northeurope.cloudapp.azure.com’ для ‘Host’
    • 5433 для ‘Port’
    • ‘postgres’ для ‘Maintenance DB’
    • ‘postgres’ для ‘Username’

Вместо ‘xx’ используем '01', '02', '03' и т.д.

 

Внешнее подключение к серверу мониторинга БД

  • Внешнее подключение к серверу мониторинга БД по ссылке:

http://myvm-dnsname-xx.northeurope.cloudapp.azure.com/zabbix

Вместо ‘xx’ используем '01', '02', '03' и т.д.

 

Изменение  параметров VM

В качества примера изменим размер VM со ‘Standard_DS1’ на ‘Standard_DS3’

  • Список доступных размеров VM в географическом регионе ‘northeurope’ (выполнять команду ‘az vm deallocate’ не требуется):
az vm list-vm-resize-options \
--name myvm-xx \
--resource-group myresourcegroup
  • Чтобы изменить размер VM, выполняем:
az vm resize \
--name myvm-xx \
--resource-group myresourcegroup \
--size Standard_DS3

Вместо ‘xx’ используем '01', '02', '03' и т.д.


В качестве другого примера увеличим размер ОС-диска с 50 ГБ до 80 ГБ:

  • Получаем информацию об ОС-диске:
az disk list \
--resource-group myresourcegroup \
--query '[*].{Name:name,Gb:diskSizeGb,Tier:accountType}'
  • Временно отключаем VM:
az vm deallocate \
--resource-group myresourcegroup \
--name myvm-xx
  • Увеличиваем размер ОС-диска:
az disk update \
--name myosdisk-xx \
--resource-group myresourcegroup \
--size-gb 80
  • Проверяем обновленную информацию об ОС-диске:
az disk list \
--resource-group myresourcegroup \
--query '[*].{Name:name,Gb:diskSizeGb,Tier:accountType}'
  • Стартуем VM:
az vm start \
--resource-group myresourcegroup \
--name myvm-xx
  • Подключаемся к VM:
ssh azureuser@myvm-dnsname-xx.northeurope.cloudapp.azure.com
  • Увеличиваем размер раздела файловой системы ‘/’:
(echo d; echo 2; echo n; echo p; echo 2; echo ; echo ; echo w) | sudo fdisk /dev/sda
  • Выполняем перезагрузку VM:
sudo reboot
  • Подключаемся к VM:
ssh azureuser@myvm-dnsname-xx.northeurope.cloudapp.azure.com
  • Увеличиваем размер файловой системы ‘/’:
sudo resize2fs /dev/sda2
  • Выполняем перезагрузку VM:
sudo reboot

Вместо ‘xx’ используем '01', '02', '03' и т.д.

 

Состав VM Postgres Pro Standard 9.6.2:

ОС - Linux CentOS 7.3 (64-бит)

  • учетная запись 'postgres'
  • учетная запись 'zabbix'
  • учетная запись 'mamonsu'

Размер ОС-диска - 50 ГБ

  • файловая система ext4 ‘/boot’ (/dev/sda1) - 1 ГБ
  • файловая система ext4 ‘/’ (/dev/sda2) - 49 ГБ

Основная БД - Postgres Pro 9.6.2

  • порт: 5433 (открыт на firewall)
  • конфигурация: /var/lib/pgpro/9.6/data/postgresql.conf, /var/lib/pgpro/9.6/data/postgresql.auto.conf
  • путь к 'pg_config': /usr/pgpro-9.6/bin/pg_config
  • путь к 'psql': /usr/pgpro-9.6/bin/psql
  • учетная запись - 'postgres/azure' (при изменении пароля учетной записи необходимо актуализировать изменения в '/etc/mamonsu/agent.conf')

Мониторинг БД (сервер)

  • zabbix-server 3.0
  • порт: 80 (открыт на firewall)
  • учетная запись - 'Admin/zabbix'

Мониторинг БД (агент)

  • zabbix-agent
  • агент mamonsu 2.2.9 (в качестве агента zabbix, снимающего метрики с Postgres Pro)

Вспомогательная БД PostgreSQL 9.2 (в качестве БД для сервера zabbix)

  • порт: 5432
  • конфигурация: /var/lib/pgsql/data/postgresql.conf
  • путь к 'pg_config': /usr/bin/pg_config
  • путь к 'psql': /usr/bin/psql

 

Ссылки на документацию