Linuxoid.in: заметка по подъему новых domU на сервере: различия между версиями
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Rain (обсуждение | вклад) (Новая страница: «* Так как в конфиге xen-tools уже описаны основные параметры системы, в большинстве случаев д…») |
Rain (обсуждение | вклад) м |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
* Так как в конфиге xen-tools уже описаны основные параметры системы, в большинстве случаев для создания нового сервера достаточно команды | * Так как в конфиге '''xen-tools''' уже описаны основные параметры системы, в большинстве случаев для создания нового сервера достаточно команды | ||
xen-create-image --hostname=mytesthostname | xen-create-image --hostname=mytesthostname | ||
где '''mytesthostname''' - имя создаваемой машины | где '''mytesthostname''' - имя создаваемой машины | ||
* После создания переходим | * После создания переходим к правке созданного конфига машины - '''/etc/xen/mytesthostname.cfg''', добавляем туда | ||
# Полный проход ядерного memtest'а | # Полный проход ядерного memtest'а | ||
extra = 'memtest=17' | extra = 'memtest=17' | ||
Строка 9: | Строка 9: | ||
* При необходимости создаем симлинк для автозапуска домена: | * При необходимости создаем симлинк для автозапуска домена: | ||
ln -s /etc/xen/mytesthostname.cfg /etc/xen/auto/50_mytesthostname.cfg | ln -s /etc/xen/mytesthostname.cfg /etc/xen/auto/50_mytesthostname.cfg | ||
* Делаем некоторые правки до запуска домена. Монтируем файловую систему, делаем туда chroot и ставим пакеты reiserfsprogs, ethtool и mingetty (возможно, потребуется указание локального адреса веб-сервера в /etc/hosts): | * Делаем некоторые правки до запуска домена. Монтируем файловую систему, делаем туда chroot и ставим пакеты '''reiserfsprogs, ethtool и mingetty''' (возможно, потребуется указание локального адреса веб-сервера в '''/etc/hosts'''): | ||
mkdir -p /tmp/dir | mkdir -p /tmp/dir | ||
mount /dev/cvg/mytesthostname-root.disk dir | mount /dev/cvg/mytesthostname-root.disk dir | ||
Строка 15: | Строка 15: | ||
apt-get install reiserfsprogs mingetty ethtool vim | apt-get install reiserfsprogs mingetty ethtool vim | ||
* Не выходя из чрута, правим /etc/inittab. Это даст нам возможность логиниться в домены из нулевой ноды: | * Не выходя из чрута, правим '''/etc/inittab'''. Это даст нам возможность логиниться в домены из нулевой ноды: | ||
1:12345:respawn:/sbin/mingetty --noclear --noissue --nonewline --nohostname --autologin root hvc0 | 1:12345:respawn:/sbin/mingetty --noclear --noissue --nonewline --nohostname --autologin root hvc0 | ||
#1:2345:respawn:/sbin/getty 38400 hvc0 | #1:2345:respawn:/sbin/getty 38400 hvc0 | ||
* Правим /etc/network/interfaces, задавая там необходимый адрес для eth0: | * Правим '''/etc/network/interfaces''', задавая там необходимый адрес для '''eth0''': | ||
# The primary network interface | # The primary network interface | ||
Строка 44: | Строка 44: | ||
xm console mytesthostname | xm console mytesthostname | ||
* Проверяем, что есть сеть, правим /etc/apt/sources.list, добавляя репозитории с http://mirrors.linuxoid.in/debian.html | * Проверяем, что есть сеть, правим '''/etc/apt/sources.list''', добавляя репозитории с http://mirrors.linuxoid.in/debian.html | ||
* Ставим при необходимости пакеты для мониторинга, контроля процессов и прочие пакеты первой необходимости: | * Ставим при необходимости пакеты для мониторинга, контроля процессов и прочие пакеты первой необходимости: | ||
apt-get install munin-node nagios-plugins-basic ssh monit nullmailer | apt-get install munin-node nagios-plugins-basic ssh monit nullmailer ntp | ||
* Конфигурим nullmailer, пишем адреса смарт-хоста, адрес для локальных писем и локальное почтовое имя | * Конфигурим '''nullmailer''', пишем адреса смарт-хоста, адрес для локальных писем и локальное почтовое имя | ||
dpkg-reconfigure nullmailer | dpkg-reconfigure nullmailer | ||
Строка 55: | Строка 55: | ||
echo test | sendmail root | echo test | sendmail root | ||
* Для Nagios создаем пользователя, если планируется контролировать загруженность системы, памяти, дисков и так далее: | * Для '''Nagios''' создаем пользователя, если планируется контролировать загруженность системы, памяти, дисков и так далее: | ||
useradd -rml nagios | useradd -rml nagios | ||
mkdir -m 700 /home/nagios/.ssh | mkdir -m 700 /home/nagios/.ssh | ||
* Копируем публичный ключ в /home/nagios/.ssh/authorized_keys, правим владельца и права на ключ | * Копируем публичный ключ в '''/home/nagios/.ssh/authorized_keys''', правим владельца и права на ключ | ||
* Делаем симлинк /usr/lib64 -> /usr/lib при необходимости | * Делаем симлинк /usr/lib64 -> /usr/lib при необходимости | ||
* Создаем скрипт '''/usr/lib64/nagios/plugins/check_memory.sh''', взятый [[Nagios|отсюда]]; правим права на скрипт - 755 | * Создаем скрипт '''/usr/lib64/nagios/plugins/check_memory.sh''', взятый [[Nagios|отсюда]]; правим права на скрипт - '''755''' | ||
* Правим /etc/hosts.allow - разрешаем доступ только для сервера статистики (пока): | * Правим '''/etc/hosts.allow''' - разрешаем доступ только для сервера статистики (пока): | ||
sshd: 192.168.220.247/32 | sshd: 192.168.220.247/32 | ||
* Правим /etc/hosts.deny: | * Правим '''/etc/hosts.deny''': | ||
sshd: ALL | sshd: ALL | ||
* Создаем /etc/cron.allow - разрешаем кронтабы только для рута (пока): | * Создаем '''/etc/cron.allow''' - разрешаем кронтабы только для рута (пока): | ||
> /etc/cron.allow | > /etc/cron.allow | ||
chmod 644 /etc/cron.allow | chmod 644 /etc/cron.allow | ||
* Правим конфиг /etc/ssh/sshd_config | * Правим конфиг '''/etc/ssh/sshd_config''' | ||
PermitRootLogin no | PermitRootLogin no | ||
PasswordAuthentication no | PasswordAuthentication no | ||
Строка 79: | Строка 79: | ||
X11Forwarding no | X11Forwarding no | ||
* Делаем тестовый заход с сервера статистики под юзером nagios на созданный хост по ssh для добавления его в known_hosts. | * Делаем тестовый заход с сервера статистики под юзером '''nagios''' на созданный хост по ssh для добавления его в '''known_hosts'''. | ||
* Создаем на сервере статистики конфиг для Nagios'а в /etc/nagios3/hosts/ по аналогии с остальными. Проверяем права. Перезапускаем Nagios. | * Создаем на сервере статистики конфиг для Nagios'а в '''/etc/nagios3/hosts/''' по аналогии с остальными. Проверяем права. Перезапускаем Nagios. | ||
* В /etc/munin/munin-node.conf добавляем | * В '''/etc/munin/munin-node.conf''' добавляем | ||
cidr_allow 192.168.220.247/32 | cidr_allow 192.168.220.247/32 | ||
* Добавляем/удаляем плагины в /etc/munin/plugins/ | * Добавляем/удаляем плагины в '''/etc/munin/plugins/''' | ||
* Перезапускаем munin-node | * Перезапускаем '''munin-node''' | ||
* На сервере статистики делаем описание ноды в /etc/munin/munin.conf | * На сервере статистики делаем описание ноды в '''/etc/munin/munin.conf''' | ||
* Правим конфиг monit, указываем таймауты для запуска, почтовые сервера (как фоллбэк можно использовать nullmailer на локалхосте) и root@localhost в качестве адреса доставки | * Правим конфиг '''monit''', указываем таймауты для запуска, почтовые сервера (как фоллбэк можно использовать '''nullmailer''' на локалхосте) и '''root@localhost''' в качестве адреса доставки | ||
* Создаем джентльменский набор субконфигов monit'а в /etc/monit/conf.d/: | * Создаем джентльменский набор субконфигов monit'а в '''/etc/monit/conf.d/''': | ||
<pre> | <pre> | ||
# cat crond.rc | # cat crond.rc | ||
Строка 118: | Строка 118: | ||
</pre> | </pre> | ||
* Перезапускаем monit, убеждаемся, что пришло уведомление о запуске на почту. | * Перезапускаем '''monit''', убеждаемся, что пришло уведомление о запуске на почту. | ||
* Делаем ограничения в ФС по [[Ограничиваем файловую систему в Debian|этому руководству]]. После правок fstab и apt.conf можно выполнить mount -a, после чего посмотреть mount | * Делаем ограничения в ФС по [[Ограничиваем файловую систему в Debian|этому руководству]]. После правок '''fstab''' и '''apt.conf''' можно выполнить '''mount -a''', после чего посмотреть '''mount''' | ||
* Создаем файл /etc/cron.d/apt-get-update, время ставим рандомное: | * Создаем файл '''/etc/cron.d/apt-get-update''', время ставим рандомное: | ||
0 0 * * * root apt-get update > /dev/null 2>&1 | 0 0 * * * root apt-get update > /dev/null 2>&1 | ||
* Создаем скрипт /root/bin/checkupdates.sh, делаем его исполняемым. Содержимое: | * Создаем скрипт '''/root/bin/checkupdates.sh''', делаем его исполняемым. Содержимое: | ||
---- | ---- | ||
<source lang=bash> | <source lang=bash> | ||
Строка 135: | Строка 135: | ||
</source> | </source> | ||
---- | ---- | ||
* Добавляем его в crontab рута: | * Добавляем его в '''crontab''' рута: | ||
crontab -l | crontab -l | ||
# check updates | # check updates |
Текущая версия на 17:32, 16 марта 2013
- Так как в конфиге xen-tools уже описаны основные параметры системы, в большинстве случаев для создания нового сервера достаточно команды
xen-create-image --hostname=mytesthostname
где mytesthostname - имя создаваемой машины
- После создания переходим к правке созданного конфига машины - /etc/xen/mytesthostname.cfg, добавляем туда
# Полный проход ядерного memtest'а extra = 'memtest=17' # Правим бридж, к которому должна подключаться машина vif = [ 'mac=00:16:3E:0F:3D:FB,bridge=br0' ]
- При необходимости создаем симлинк для автозапуска домена:
ln -s /etc/xen/mytesthostname.cfg /etc/xen/auto/50_mytesthostname.cfg
- Делаем некоторые правки до запуска домена. Монтируем файловую систему, делаем туда chroot и ставим пакеты reiserfsprogs, ethtool и mingetty (возможно, потребуется указание локального адреса веб-сервера в /etc/hosts):
mkdir -p /tmp/dir mount /dev/cvg/mytesthostname-root.disk dir chroot dir apt-get install reiserfsprogs mingetty ethtool vim
- Не выходя из чрута, правим /etc/inittab. Это даст нам возможность логиниться в домены из нулевой ноды:
1:12345:respawn:/sbin/mingetty --noclear --noissue --nonewline --nohostname --autologin root hvc0 #1:2345:respawn:/sbin/getty 38400 hvc0
- Правим /etc/network/interfaces, задавая там необходимый адрес для eth0:
# The primary network interface auto eth0 iface eth0 inet static post-up ethtool -K eth0 tx off address 192.168.220.1 network 192.168.220.0 netmask 255.255.255.0 gateway 192.168.220.254 nameserver 192.168.0.250 nameserver 8.8.8.8
- Выходим из чрута, отмонтируем файловую систему
exit umount dir rm -rf dir
- Система готова к первому запуску. Запускаем:
xm create /etc/xen/mytesthostname.cfg
- Подключаемся к консоли запущенного домена:
xm console mytesthostname
- Проверяем, что есть сеть, правим /etc/apt/sources.list, добавляя репозитории с http://mirrors.linuxoid.in/debian.html
- Ставим при необходимости пакеты для мониторинга, контроля процессов и прочие пакеты первой необходимости:
apt-get install munin-node nagios-plugins-basic ssh monit nullmailer ntp
- Конфигурим nullmailer, пишем адреса смарт-хоста, адрес для локальных писем и локальное почтовое имя
dpkg-reconfigure nullmailer
- Проверяем работу nullmailer'а:
echo test | sendmail root
- Для Nagios создаем пользователя, если планируется контролировать загруженность системы, памяти, дисков и так далее:
useradd -rml nagios mkdir -m 700 /home/nagios/.ssh
- Копируем публичный ключ в /home/nagios/.ssh/authorized_keys, правим владельца и права на ключ
- Делаем симлинк /usr/lib64 -> /usr/lib при необходимости
- Создаем скрипт /usr/lib64/nagios/plugins/check_memory.sh, взятый отсюда; правим права на скрипт - 755
- Правим /etc/hosts.allow - разрешаем доступ только для сервера статистики (пока):
sshd: 192.168.220.247/32
- Правим /etc/hosts.deny:
sshd: ALL
- Создаем /etc/cron.allow - разрешаем кронтабы только для рута (пока):
> /etc/cron.allow chmod 644 /etc/cron.allow
- Правим конфиг /etc/ssh/sshd_config
PermitRootLogin no PasswordAuthentication no AllowUsers nagios AllowTcpForwarding no X11Forwarding no
- Делаем тестовый заход с сервера статистики под юзером nagios на созданный хост по ssh для добавления его в known_hosts.
- Создаем на сервере статистики конфиг для Nagios'а в /etc/nagios3/hosts/ по аналогии с остальными. Проверяем права. Перезапускаем Nagios.
- В /etc/munin/munin-node.conf добавляем
cidr_allow 192.168.220.247/32
- Добавляем/удаляем плагины в /etc/munin/plugins/
- Перезапускаем munin-node
- На сервере статистики делаем описание ноды в /etc/munin/munin.conf
- Правим конфиг monit, указываем таймауты для запуска, почтовые сервера (как фоллбэк можно использовать nullmailer на локалхосте) и root@localhost в качестве адреса доставки
- Создаем джентльменский набор субконфигов monit'а в /etc/monit/conf.d/:
# cat crond.rc check process crond with pidfile '/var/run/crond.pid' start program = "/etc/init.d/cron start" stop program = "/etc/init.d/cron stop" if 3 restarts within 10 cycles then timeout # cat munin-node.rc check process munin-node with pidfile '/var/run/munin/munin-node.pid' start program = "/etc/init.d/munin-node start" stop program = "/etc/init.d/munin-node stop" if 3 restarts within 10 cycles then timeout # cat rsyslogd.rc check process rsyslogd with pidfile '/var/run/rsyslogd.pid' start program = "/etc/init.d/rsyslog start" stop program = "/etc/init.d/rsyslog stop" if 3 restarts within 10 cycles then timeout # cat sshd.rc check process sshd with pidfile '/var/run/sshd.pid' start program = "/etc/init.d/ssh start" stop program = "/etc/init.d/ssh stop" if 3 restarts within 10 cycles then timeout
- Перезапускаем monit, убеждаемся, что пришло уведомление о запуске на почту.
- Делаем ограничения в ФС по этому руководству. После правок fstab и apt.conf можно выполнить mount -a, после чего посмотреть mount
- Создаем файл /etc/cron.d/apt-get-update, время ставим рандомное:
0 0 * * * root apt-get update > /dev/null 2>&1
- Создаем скрипт /root/bin/checkupdates.sh, делаем его исполняемым. Содержимое:
#!/bin/bash
[ -e '/etc/mailname' ] && f="root@$(cat /etc/mailname)" || f="root@$(hostname -f)"
t='root@localhost'
data="$(echo n | LANG=C apt-get dist-upgrade 2>/dev/null | sed -n "/^The following packages/,/^Need to get/s/^/$HOSTNAME: | /p")"
[ ! -z "${data}" ] && echo -en "to:$t\nsubject:New updates available\n\n${data}" | /usr/sbin/sendmail -F "$f" "$t"
- Добавляем его в crontab рута:
crontab -l # check updates 0 1 * * * /root/bin/checkupdates.sh
- Перезапускаем машину, убеждаемся, что все работает