Особенности установки на серверы ББ без ZFS и предустановленного ПО на хостах
Получил три сервера без IPMI с установленной Debian 10 Buster в минимальном базовом варианте. Используя данную возможность, я протестировал ряд необычных для нас ситуаций.
- Мало RAM (24-32G)
- На хосте установлена ОС Debian 10
Стояла задача собрать систему на скудных по RAM серверах (24-32G) с двумя типами хранилища: блочная NFS и объектная sheepdog.
Общее
1) В osada.sh закомментировал все, что связано с созданием zfs-пулов. Вместо этого добавил создание каталогов и линков на /ev3, чтобы сохранить схему директорий.
### Создаем пулы
#zfs create ......
mkdir -p /var/lib/lxc /var/lib/nova/instances /var/lib/glance/images
mkdir -p /ev3/volumes /ev3/backups
ln -s /var/lib/lxc /ev3/services
ln -s /var/lib/nova/instances /ev3/instances
ln -s /var/lib/glance/images /ev3/images
chown -R nova:cinder /var/lib/nova/instances/
chmod g+w /var/lib/nova/instances/
chown -R glance: /var/lib/glance
#zfs share -a
systemctl restart nfs-kernel-server
2) Проверить, включена-ли в BIOS аппаратная виртуализация:
Если вывод есть - все хорошо.
3) Установить пакеты на всех гипервизорах
apt-get -y install ifenslave bridge-utils ethtool
apt-get -y install autoconf pkg-config build-essential liburcu-dev libtool libcorosync-common-dev libzookeeper-mt-dev libcpg-dev libcfg-dev yasm zookeeperd bridge-utils parted net-tools xemacs21-bin lxc git crudini ccrypt nfs-kernel-server openvswitch-switch sysvbanner
4) Отключаем вывод hung
5) Добавляем sudo-права на ovt
6) Настройка vim
echo -e "set clipboard=unnamedplus\nsyntax on\nset encoding=utf-8\nset termencoding=utf-8" > /root/.vimrc
7) Создаем шаблон объектного хранилища /etc/evstorage/evs.conf
8) Добавим в /etc/sysctl.conf
fs.file-max = 1024000
fs.inotify.max_queued_events = 1048576
fs.inotify.max_user_instances = 1048576
fs.inotify.max_user_watches = 1048576
9) Настроить доверенные хосты в /etc/pip.conf
10) Запускаем скрипт для sudoers служебных пользователей
for service in 'nova' 'neutron' 'cinder' 'glance' 'ceilometer'; do
echo -e "Defaults:${service} !requiretty\n${service} ALL = (root) NOPASSWD: /usr/local/bin/${service}-rootwrap /etc/${service}/rootwrap.conf *" > ${DIST_DIR}/etc/sudoers.d/${service}_sudoers
chmod 440 ${DIST_DIR}/etc/sudoers.d/${service}_sudoers
done
11) Настройка часового пояса
12) Скрипт osada был настроен на версию lxc 2.x, а на Debian 10 по-умолчанию идет lxc 3.x. В связи с этим конфигурация контейнеров меняется следующим образом:
#!/bin/bash
for cc in $(ls -1 /var/lib/lxc); do
echo $cc
sed -i 's/lxc.start.auto = 1/lxc.start.auto = 0/g' /var/lib/lxc/$cc/config
sed -i 's/lxc.network/lxc.net.0/g' /var/lib/lxc/$cc/config
sed -i 's/lxc.rootfs = \//lxc.rootfs.path = dir:\//g' /var/lib/lxc/$cc/config
sed -i 's/lxc.rootfs.backend = dir/\n/g' /var/lib/lxc/$cc/config
sed -i 's/lxc.tty /lxc.tty.max /g' /var/lib/lxc/$cc/config
sed -i 's/lxc.utsname /lxc.uts.name /g' /var/lib/lxc/$cc/config
done
13) В логе /var/log/messages на хостах проявляются ошибки монтирования
Чтобы это исправить, надо в файл /etc/apparmor.d/lxc/lxc-default-cgns надо добавить
Затем:
Cinder
14) Чтобы правильно монтировались NFS shares надо проверить на хосте в трех местах:
#!!#lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file 0 0
lxc.apparmor.profile = unconfined
lxc.cgroup.devices.allow = b 7:* rwm
lxc.cgroup.devices.allow = c 10:229 rwm
/ev3/volumes 172.17.98.0/24(rw,sync,fsid=0,no_root_squash,crossmnt,no_subtree_check,no_acl)
/ev3/backups 172.17.98.0/24(rw,sync,fsid=0,no_root_squash,crossmnt,no_subtree_check,no_acl)
/var/lib/glance/images 172.17.98.0/24(rw,sync,fsid=0,no_root_squash,crossmnt,no_subtree_check,no_acl)
15) Добавил NFS-шары на все ноды: /etc/exports
/ev3/volumes 172.17.98.0/24(rw,sync,no_subtree_check)
/ev3/backups 172.17.98.0/24(rw,sync,no_subtree_check)
/var/lib/glance/images 172.17.98.0/24(rw,sync,no_subtree_check)
16) На хостах в /etc/cinder/shares не должно быть ничего!
Nova
17) Нет сигнала о вызове присоединения диска в cinder-api.log
Решение: Добавить в секцию [cinder] файла /etc/nova/nova.conf на контейнерах: