состав стенда
№ п/п | Hostname | IP address | Сервисы/Роли/ Назначение | Admin login/pass | User login/pass | Comment/ Notes |
---|---|---|---|---|---|---|
1 | srv1.brest0.local | 192.168.44.99 | opennebula front, ald server, ntp server PostgreSQL server, iscsi-инициатор. | u/1 | brestadmin/1 | |
2 | node1.brest0.local | 192.168.44.101 | opennebula node ald client, ntp client, iscsi-инициатор. | u/1 | IPMI: 192.168.44.11 | |
3 | node2.brest0.local | 192.168.44.102 | opennebula node ald client, ntp client, iscsi-инициатор. | u/1 | IPMI: 192.168.44.9 | |
4 | stor1.brest0.local | 192.168.44.110 | storage iscsi, ald client, ntp client, iscsi-таргет. | u/1 |
Введение
ПК СВ Брест устанавливается в среде ОС Astra Linux SE 1.6 с установленным вторым обновлением безопасности
1.srv1 - настройка фронтальной машины
1.1 подготовка к развертыванию БРЕСТ
1.1.1. настройка сети
На всех узлах OpenNebula необходимо создать соединение типа мост с одинаковым именем.
В данном примере используется имя моста br0 и его настройка осуществляется путем редактирования файла /etc/network/interfaces.
(можно использовать и network-manager, но не рекомендуется)
установить пакет bridge-utils командой:
sudo apt install bridge-utils
Далее необходимо настроить созданное соединение типа мост с названием br0 для opennebula
Редактируем файл /etc/network/interfaces, добавляя в него следующие строки:
auto br0 iface br0 inet static bridge_ports eth0 address 192.168.44.99 netmask 255.255.255.0
При копировании проверяйте правильность указанных имен портов для моста/наименований сетевых интерфейсов/IP адресов/масок подсетей
DNS/hosts записи в файле /etc/hosts должны выглядеть следующим образом:
192.168.44.99 srv1.brest0.local srv1 192.168.44.101 node1.brest0.local node1 192.168.44.102 node2.brest0.local node2 192.168.44.110 stor1.brest0.local stor1
При копировании проверяйте правильность указанных имен IP адресов/FQDN имен/hostname
в случае редактирования файла /etc/hosts (а не программы network-manager) закомментировать строку:
127.0.1.1 srv1
1.1.2. настройка сервера NTP
в файле /etc/ntp.conf закомментировать следующие строки:
pool 0.debian.pool.ntp.org iburst pool 1.debian.pool.ntp.org iburst pool 2.debian.pool.ntp.org iburst pool 3.debian.pool.ntp.org iburst
и добавить после них:
server 127.127.1.0 fudge 127.127.1.0 stratum 2 restrict 192.168.44.0 mask 255.255.255.0 nomodify notrap
включить в автозагрузку ntp:
sudo systemctl enable ntp
и запустить сервис ntp:
sudo systemctl start ntp
проверить работоспособность ntp командой:
sudo watch ntpq -p
1.1.3. ALD-сервер
Установить мета-пакет ALD сервера:
sudo apt install ald-server-common
добавить группы:
disk, kvm, libvirt, libvirt-admin, libvirt-qemu, astra-admin, astra-console
в строке: ALLOWED_LOCAL_GROUPS файла /etc/ald/ald.conf
Далее инициализировать домен командой:
sudo ald-init init
1.1.4. Postgresql
Установить СУБД postgresql-9.6:
sudo apt install postgresql-9.6
зайти в интерфейс управления psql
sudo -u postgres psql
Создать БД "onedb" командой:
# create database onedb;
создать пользователя postgres с паролем postgres:
# alter user postgres password 'postgres';
Выйти из интерфейса управления psql:
# \q
1.1.5. повышение уровня целостности до 127
в файле /etc/default/grub отредактировать сроку:
GRUB_CMDLINE_LINUX_DEFAULT="parsec.max_ilev=127 parsec.ccnr_relax=1 quiet net.ifnames=0"
Присвоить пользователю максимальный уровень целостности:
sudo pdpl-user -i 127 <user>
Обновить GRUB:
sudo update-grub
Обязательно сразу после этого перезагрузиться
1.2. развертывание БРЕСТ (opennebula)
1.2.1. установка
sudo apt install brestcloud
Обязательно после этого перезагрузиться
1.2.2. настройка opennebula
остановить службы OpenNebula:
sudo systemctl stop opennebula sudo systemctl stop unicorn-opennebula
в конфигурационном файле /etc/one/oned.conf в секции DB закомментировать строку sqlite и раскоментировать строку pgsql, добавить указанные данные для авторизации postgresql;
удалить все файлы в /var/lib/one/.one кроме one_auth
запустить службы OpenNebula:
sudo systemctl start opennebula sudo systemctl start unicorn-opennebula
сконфигугировать облако и создать пользователя командами:
sudo brestcloud-configure
sudo ald-libvirt-qemu-configure
sudo brestuser create brestadmin
Обязательно после этого перезагрузиться
1.2.3. Настройка firefox
Войти в графику пользователем brestadmin.
В адресной строке firefox ввести about:config
для параметров
network.negotiate-auth.delegation-uris network.negotiate-auth.trusted-uris
выставить значение "http://" (без кавычек).
Перейти в интерфейс OpenNebula: http://srv1
1.2.4. Добавление Datastores
В разделе "Storage" подраздела "Datastores" создать 2 датастора - 2х разных типов - system и images.
в /var/lib/one/datastores появятся две директории с номерами >= 100
1.3 монтирование хранилища (делать после создания и форматирования iscsi-таргетов)
1.3.1 инициатор
Установить open-iscsi командой:
sudo apt install open-iscsi
определить ID хоста:
cat /etc/iscsi/initiatorname.iscsi
прописать в /etc/iscsi/iscsid.conf строку:
node.startup = automatic
ID хоста потребуется при настройке доступа на таргете - для продолжения необходимо добавить ID инициатора в ACL таргета:
sudo iscsiadm -m discovery -t st -p <stor1> sudo iscsiadm -m node -l
проверить в /etc/iscsi/nodes/<id>/<ip>/default наличие строки:
node.startup = automatic
1.3.3 настройка кластерной ФС ocfs2
установить пакет ФС командой:
sudo apt install ocfs2-tools
Обязательно после этого перезагрузиться
создать файл /etc/ocfs2/cluster.conf (в качестве образца необходимо взять фрагмент из /usr/share/doc/ocfs2/README.Debian и отредактировать, не делайте copy-paste из приведенного ниже фрагмента):
cluster: node_count = 3 name = ocfs2 node: number = 1 cluster = ocfs2 ip_port = 7777 ip_address = 192.168.44.101 name = node1 node: number = 2 cluster = ocfs2 ip_port = 7777 ip_address = 192.168.44.102 name = node2 node: number = 3 cluster = ocfs2 ip_port = 7777 ip_address = 192.168.44.99 name = srv1
выполнить команду:
sudo dpkg-reconfigure ocfs2-tools
в запустившемся мастере установить автоматическую загрузку сервиса ocfs2, остальное оставить по-умолчанию.
Выполнить перезагрузку:
sudo systemctl restart o2cb
создать файловую систему на iscsi-томах <sdX1> и <sdX2> командами:
sudo mkfs.ocfs2 --cluster-stack=o2cb --cluster-name=ocfs2 /dev/<sdX1> sudo mkfs.ocfs2 --cluster-stack=o2cb --cluster-name=ocfs2 /dev/<sdX2>
1.3.2 монтирование
определить UUID-ы подключенных iscsi-дисков:
blkid
прописать монтирование в /etc/fstab добавив в конец файла строки:
UUID=<id1> /var/lib/one/datastores/100 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0 UUID=<id2> /var/lib/one/datastores/101 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0
1.4 настройка беспарольного доступа SSH (делать после поднятия нод)
KEY=$(sudo cat /root/.ssh/id_rsa.pub) ssh u@<node1> "sudo bash -c \"echo $KEY >> /root/.ssh/authorized_keys\"" ssh u@<node2> "sudo bash -c \"echo $KEY >> /root/.ssh/authorized_keys\""
2. stor1 - настройка хранилища (наполняется)
2.1. подготовка
2.1.1 настройка сети - IP адрес
2.1.2 разметка дисков
для работы opennebula нужны 2 раздела, которые будут экспортироваться с хранилища по iscsi.
выделить 2 неформатированных раздела, определить их имена в /dev/ (далее они - <sd1>, <sd2>)
2.2 iscsi
2.2.1 Установка Таргета и Инициатора:
установить таргет и инициатор командой:
sudo apt install targetcli-fb open-iscsi
Обязательно после этого перезагрузиться
2.2.3 настройка таргета в командном интерфейсе утилиты target-cli
Пошагово выполнить команды:
sudo targetcli ls cd /backstores/block create name=disk1 dev=/dev/<sd1> create name=disk2 dev=/dev/<sd2> ls / cd /iscsi create ls /
Сохранить внесенные изменения:
/ saveconfig
на инициаторах (клиентах iscsi) необходимо посмотреть их идентификаторы (далее - <iscsi-id>).
для этого на node1, node2, srv1 после установки патека open-iscsi (см. пункт 3.3.1) выполнить:
cat /etc/iscsi/initiatorname.iscsi
далее эти идентификаторы прописать на таргете (stor1) выполнив:
sudo targetcli cd /iscsi/<scsi-id>/tpgt1/luns create /backstores/block/disk1 create /backstores/block/disk2 cd /iscsi/<scsi-id>/tpgt1/acls create <node-id1> create <node-id2> create <node-id3>
Сохранить внесенные изменения:
/ saveconfig
3. nodes - настройка узлов
3.1 подготовка
3.1.1. настройка сети
установить пакет bridge-utils
sudo apt install bridge-utils
IP. сразу настраиваем bridge для nebula. /etc/network/interfaces:
auto br0 iface br0 inet static bridge_ports eth0 address <ip> netmask <mask>
DNS-записи:
192.168.44.99 srv1.brest0.local srv1 192.168.44.101 node1.brest0.local node1 192.168.44.102 node2.brest0.local node2 192.168.44.110 stor2.brest0.local stor1
в случае редактирования файла hosts закомментировать строку:
127.0.1.1 <hostname>
3.1.2. настройка NTP
в /etc/ntp.conf закомментировать строки:
pool 0.debian.pool.ntp.org iburst pool 1.debian.pool.ntp.org iburst pool 2.debian.pool.ntp.org iburst pool 3.debian.pool.ntp.org iburst
и добавить после них:
server srv1
включить в автозагрузку ntp:
sudo systemctl enable ntp
и запустить сервис ntp:
sudo systemctl start ntp
проверить работоспособность ntp командой:
sudo watch ntpq -p
3.1.3. ALD ввод в домен
Установить мета-пакет ALD клиента:
sudo apt install ald-client-common
Ввести клиента в домен командой:
sudo ald-client join
3.1.4 повышение уровня целостности до 127
в файле /etc/default/grub отредактировать сроку:
GRUB_CMDLINE_LINUX_DEFAULT="parsec.max_ilev=127 parsec.ccnr_relax=1 quiet net.ifnames=0"
Присвоить пользователю максимальный уровень целостности:
sudo pdpl-user -i 127 <user>
Обновить GRUB:
sudo update-grub
Обязательно сразу после этого перезагрузиться
3.2 развертывание ноды
3.2.1 установка
Установить необходимые для работы ноды пакеты:
sudo apt install ald-libvirt-qemu opennebula-node ipmitool
Обязательно сразу после этого перезагрузиться
выполнить конфигурационный скрипт:
sudo ald-libvirt-qemu-configure
3.3 монтирование хранилища (делать после создания и форматирования iscsi-таргетов)
3.3.1 инициатор
установить инициатор командой:
sudo apt install open-iscsi
Обязательно после этого перезагрузиться
прописать в /etc/iscsi/iscsid.conf :
node.startup = automatic
ID хоста потребуется при настройке доступа на таргете - для продолжения необходимо добавить ID инициатора в ACL таргета:
sudo iscsiadm -m discovery -t st -p <stor1> sudo iscsiadm -m node -l
проверить в /etc/iscsi/nodes/<id>/<ip>/default наличие строки:
node.startup = automatic
3.3.2 конфигурирование кластерной ФС ocfs2
установить пакет ФС командой:
sudo apt install ocfs2-tools
Обязательно после этого перезагрузиться
создать файл /etc/ocfs2/cluster.conf (в качестве образца необходимо взять фрагмент из /usr/share/doc/ocfs2/README.Debian и отредактировать, не делайте copy-paste из приведенного ниже фрагмента):
cluster: node_count = 3 name = ocfs2 node: number = 1 cluster = ocfs2 ip_port = 7777 ip_address = 192.168.44.101 name = node1 node: number = 2 cluster = ocfs2 ip_port = 7777 ip_address = 192.168.44.102 name = node2 node: number = 3 cluster = ocfs2 ip_port = 7777 ip_address = 192.168.44.99 name = srv1
выполнить команду:
sudo dpkg-reconfigure ocfs2-tools
в запустившемся мастере установить автоматическую загрузку сервиса ocfs2, остальное оставить по-умолчанию.
Выполнить перезагрузку:
sudo systemctl restart o2cb
3.3.3 монтирование
определить UUID-ы подключенных iscsi-дисков:
blkid
прописать монтирование в /etc/fstab добавив в конец файла строки:
UUID=<id1> /var/lib/one/datastores/100 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0 UUID=<id2> /var/lib/one/datastores/101 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0
3.4 настройка беспарольного доступа SSH (делать после поднятия нод)
KEY=$(sudo cat /root/.ssh/id_rsa.pub) ssh u@<srv1> "sudo bash -c \"echo $KEY >> /root/.ssh/authorized_keys\"" ssh u@<node2> "sudo bash -c \"echo $KEY >> /root/.ssh/authorized_keys\""
Необходимо сделать обмен ключами между нодами после их подняться.
4. создание и управление виртуальными машинами (раздел в начальной стадии наполнения)
залогиниться как brestadmin в графику, открыть http://srv1 в браузере, залогиниться в интерфейс opennebula
4.1 хранилища - datastores
4.1.1 создать image - образ жесткого диска ВМ
4.1.2 создать image - загрузить ISO-образ для установки
4.2 виртуальная сеть
4.2.1 простое мостовое соединение виртуальной машины к сетевому адаптеру хоста
создать виртуальную сеть, режим bridge
добавить пул MAC-адресов (просто указать количество)