Записи с меткой ‘proxmox’
iSCSI Quorum Disk
Вот здесь описано как сделать iSCSI Quorum Disk для двухголового Proxmox’а, но на RH-based Linux, что довольно странно, т.к. сам Proxmox построен на Debian, хотя и с RedHat ядром.
Но у меня реально есть только Дебианы и там не везде есть LVM.
Итак…
dd if=/dev/zero of=/var/proxmox2quorumdisk bs=1024 count=100
И никакого lvm не надо.
Ставим сервер aka target.
apt-get install iscsitarget iscsitarget-dkms
echo "ISCSITARGET_ENABLE=true" > /etc/default/iscsitarget
В /etc/iet/ietd.conf пишем:
Target iqn.2013-02.tld.domain.host:p1qdisk.lun1
IncomingUser rquser rqpass
OutgoingUser
Lun 0 Path=/var/proxmox2quorumdisk,Type=fileio
Alias LUN1
MaxConnections 4
echo "iqn.2013-02.tld.domain.host:p1qdisk.lun1 IP1,IP2,IP3" > /etc/iet/initiators.allow
И… запускаем:
/etc/init.d/iscsitarget start
Теперь может возникнуть желание расшарить этот диск только с определенного IP. Статная обёртка в Debian этого не позволяет. Пропатчить можно так:
echo "ISCSITARGET_OPTIONS='--address=IP'" >> /etc/default/iscsitarget
И правим в /etc/init.d/iscsitarget в функции ietd_start строку:
start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- $ISCSITARGET_OPTIONS
Перезапускаем:
/etc/init.d/iscsitarget restart
Теперь настроим клиента aka initiator.
apt-get install open-iscsi
Правим /etc/iscsi/iscsid.conf:
node.startup = automatic
/etc/init.d/open-iscsi restart
Подключаем диск:
iscsiadm -m discovery -t st -p IP
iscsiadm -m nodeiscsiadm -m node --targetname "iqn.2013-02.tld.domain.host:p1qdisk.lun1" --portal "IP:3260" --op=update --name node.session.auth.authmethod --value=CHAP
iscsiadm -m node --targetname "iqn.2013-02.tld.domain.host:p1qdisk.lun1" --portal "IP:3260" --op=update --name node.session.auth.username --value=rquser
iscsiadm -m node --targetname "iqn.2013-02.tld.domain.host:p1qdisk.lun1" --portal "IP:3260" --op=update --name node.session.auth.password --value=rqpass
iscsiadm -m node --targetname "iqn.2013-02.tld.domain.host:p1qdisk.lun1" --portal "IP:3260" --login
По идее после этого должен появиться новый диск. У меня это /dev/sdc
Теперь на нём создадим Quorum Disk:
fdisk /dev/sdc
Далее создаём новый раздел: n, p, 1, w. Ну там для размера Enter понажимаем для подтверждения полного размера.
mkqdisk -c /dev/sdc1 -l p1qdisk
Перезагружаем клиентов на клиентах:
/etc/init.d/open-iscsi restart
А дальше по тексту оригинальной инструкции и всё сработает.
OpenVZ Debian 7 Wheezy Template
Недавно вышел Debian 7 Wheezy. Среди прочего произошел переход на ядро 3.2 и из-за этого произошел отказ от поддержки OpenVZ. Печально, но Wheezy прекрасно работает на ядре 2.6.32 от Squeeze, а еще лучше работает Proxmox 3. Разумеется под него хочется иметь свою сборку Debian7. Сделать это можно так.
Во-первых, vzctl в Proxmox не содержит в себе конфиги для шаблонов, которые упрощают жизнь. Те, что обычно лежат в /etc/vz/conf и именуются типа ve-basic.conf-sample ve-light.conf-sample ve-unlimited.conf-sample и т.п. Поэтому качаем их из основного дистрибутива:
cd /tmp
wget http://mirror.yandex.ru/debian/pool/main/v/vzctl/vzctl_3.0.30.2-4_amd64.deb
dpkg -x vzctl_3.0.30.2-4_amd64.deb .
cp etc/vz/conf/*sample /etc/vz/conf/
Теперь приступим к сборке почти по стандартной процедуре.
Она содержит три этапа. Первый и третий на хосте, а второй — внутри контейнера.
Первый этап:
Создадим файловую структуру контейнера:
aptitude install debootstrap
debootstrap --arch amd64 wheezy /var/lib/vz/private/777 http://mirror.yandex.ru/debian/
Произведём базовые настройки контейнера:
vzctl set 777 --applyconfig basic --save
echo 'OSTEMPLATE="debian-7.0"' >> /etc/vz/conf/777.conf
vzctl set 777 --ipadd 192.168.35.110 --save
vzctl set 777 --nameserver 8.8.8.8 --nameserver 8.8.4.4 --save
mknod --mode 666 /var/lib/vz/private/777/dev/ptmx c 5 2
mkdir -p /var/lib/vz/root/777
Контейнер подготовлен. Запустим его и залезем внутрь:
vzctl start 777
vzctl enter 777
Теперь мы внутри контейнера.
Второй этап:
Будем патриотически использовать локальное зеркало Debian:
echo "deb http://mirror.yandex.ru/debian wheezy main non-free contrib" > /etc/apt/sources.list
echo "deb http://mirror.yandex.ru/debian/ wheezy-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://security.debian.org wheezy/updates main non-free contrib" >> /etc/apt/sources.list
aptitude update
aptitude upgrade
chmod 700 /root
sed -i -e '/getty/d' /etc/inittab
sed -i -e '/^#/d' /etc/inittab
sed -i -e '/^\s*$/d' /etc/inittab
echo "1:2345:respawn:/sbin/getty 38400 tty1" >> /etc/inittab
sed -i -e 's@\([[:space:]]\)\(/var/log/\)@\1-\2@' /etc/*syslog.conf
rm -f /etc/mtab
ln -s /proc/mounts /etc/mtab
rm -f /etc/ssh/ssh_host_*
echo '
#!/bin/sh
### BEGIN INIT INFO
# Provides: Generates new ssh host keys on first boot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Generates new ssh host keys on first boot
# Description: Generates new ssh host keys on first boot
### END INIT INFO
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ""
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ""
insserv -r /etc/init.d/ssh_gen_host_keys
rm -f \$0
' > /etc/init.d/ssh_gen_host_keys
chmod a+x /etc/init.d/ssh_gen_host_keys
insserv /etc/init.d/ssh_gen_host_keys
dpkg-reconfigure tzdata
Удалим лишние пакеты, если знаем какие. 😉 Например:
dpkg --purge modutils ppp pppoeconf pppoe pppconfig module-init-tools
Далее доставляем всё что нужно в этом шаблоне. Например:
aptitude install ssh quota less mc mtr
Очищаем кэш и вылезаем из контейнера.
aptitude --purge clean
exit
Третий этап:
Теперь контейнер надо собрать в шаблон (template):
vzctl set 777 --ipdel all --save
>/var/lib/vz/private/777/etc/resolv.conf
rm -f /var/lib/vz/private/777/etc/hostname
vzctl stop 777
cd /var/lib/vz/private/777
tar --numeric-owner -zcf /var/lib/vz/template/cache/debian-7.0-amd64-custom.tar.gz .
Вот и всё. Теперь у нас есть template для установки Debian 7 Wheezy в контейнер OpenVZ, например, в Proxmox.
Проверим — работает ли:
# vzctl create 888 --ostemplate debian-7.0-amd64-custom --config basic
Creating container private area (debian-7.0-amd64-custom)
Performing postcreate actions
CT configuration saved to /etc/pve/openvz/888.conf
Container private area was created
Теперь можно наши эксперименты удалить (или оставить — по желанию):
# vzctl destroy 777
# vzctl destroy 888
Внешние серверы в локальном облаке на Proxmox
Как несложно догадаться имеем облако на базе Proxmox.
Все узлы имеют по два интерфейса. Один из них (eth0) смотрит в локальную сеть, а второй (eth1) — в глобальный интернет. Однако, сами узлы не имеют внешних адресов. IPv4 нынче дороги, да и просто незачем.
В этом облаке нужно создать виртуальную машину — контейнер (CT) с внешним адресом.
Виртуальная сеть (aka venet) не подходит ибо маршрутизироваться не будет. Поэтому будем использовать veth. Чтобы это сделать на узле нужно сначала создать мост (bridge) в котором будет состоять eth1. Далее нужно создать CT с veth сетью. Ну или добавить veth интерфейс в существующую, но при этом эта машина должна быть выключена. Обычно получаем eth0, но уже в CT. 😉
Proxmox не даёт настроить IP адрес для veth для VM. Поэтому лезем в /var/lib/vz/private/CTID/etc/network/interfaces на узле и пишим конфиг вручную. Он стандартный:
auto eth0 iface eth0 inet static address IP netmask 255.255.255.0 gateway GW
Теперь запускаем CT и подключаемся к нему по ssh.