Linuxoid.in: заметка по подъему новых domU на сервере — различия между версиями

Материал из Linux Wiki
Перейти к: навигация, поиск
(Новая страница: «* Так как в конфиге xen-tools уже описаны основные параметры системы, в большинстве случаев д…»)
 
м (форматирование)
Строка 1: Строка 1:
* Так как в конфиге xen-tools уже описаны основные параметры системы, в большинстве случаев для создания нового сервера достаточно команды
+
* Так как в конфиге '''xen-tools''' уже описаны основные параметры системы, в большинстве случаев для создания нового сервера достаточно команды
 
  xen-create-image --hostname=mytesthostname
 
  xen-create-image --hostname=mytesthostname
 
где '''mytesthostname''' - имя создаваемой машины
 
где '''mytesthostname''' - имя создаваемой машины
* После создания переходим в правке созданного конфига машины - /etc/xen/mytesthostname.cfg, добавляем туда  
+
* После создания переходим в правке созданного конфига машины - '''/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
  
* Конфигурим 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:09, 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
  • Ставим при необходимости пакеты для мониторинга, контроля процессов и прочие пакеты первой необходимости:
apt-get install munin-node nagios-plugins-basic ssh monit nullmailer
  • Конфигурим 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
  • Перезапускаем машину, убеждаемся, что все работает