
Руководство по созданию и использованию виртуальной машины
Для использования БД 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 [email protected]Вместо ‘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 [email protected]- Увеличиваем размер раздела файловой системы ‘/’:
(echo d; echo 2; echo n; echo p; echo 2; echo ; echo ; echo w) | sudo fdisk /dev/sda- Выполняем перезагрузку VM:
sudo reboot- Подключаемся к VM:
ssh [email protected]- Увеличиваем размер файловой системы ‘/’:
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
Ссылки на документацию
- Postgres Pro Standard: https://postgrespro.ru/docs/postgrespro
- Zabbix: https://www.zabbix.com/documentation/3.0/start
- Mamonsu: https://github.com/postgrespro/mamonsu/blob/master/README.rst
- Pgadmin: https://www.pgadmin.org/docs

