KsI-wiki online documents

Linux-vserver-debian

Материал из Ksimute

Перейти к: навигация, поиск

Случилось тут мне одну задачку решать.

Дали сервер с голым Debian lenny. Задача - поднять 2 vps на linux vserver засетапить туда debian в одном поднять nginx во втором apach с nagios запроксировать апаче через nginx. Зафаерволить все и построить мониторинг всей системы. и чтобы при обращении к внешнему ip нагиос открывался :)
(это сделал через NAT но NAT неправильное решение. Меня не прет ниразу. Память кушает и память жестоко. Лучше сделать чтобы nginx слушал).
Вообщем смотртите step by step installation.
Может кому-нибудь пригодится :) :)

 testme:~# aptitude install linux-image-vserver-686 util-vserver

Проверяем grub /boot/grub/menu.lst Проверяем наличие имиджа ядра расположенного в /boot

 #reboot

Ядро правильное

 testme:~# uname -a
 Linux testme 2.6.26-2-vserver-686 #1 SMP Wed Nov 4 22:32:30 UTC 2009 i686 GNU/Linux

Строим сервер

testme:~# vserver vs1 build -m debootstrap --context 11 --hostname vs1.testme.mydomain.com --interface eth0:192.168.1.1/24 -- -d lenny -m http://ftp.de.debian.org/debian

и Второй

testme:~# vserver vs2 build -m debootstrap --context 22 --hostname vs2.testme.mydomain.com --interface eth0:192.168.2.2/24 -- -d lenny -m http://ftp.de.debian.org/debian


Стартуем сервера

 #vserver vs1 start
 #vserver vs2 start
 
 testme:~# vserver-stat
 CTX   PROC    VSZ    RSS  userTIME   sysTIME    UPTIME NAME
 11       2  18.3M   1.1M   0m01s67   0m00s26   6m44s38 vs1
 22       2  18.3M   1.1M   0m00s20   0m00s12   2m33s85 vs2

Прописываем старт vserver ов при загрузке

 testme:~# echo default > /etc/vservers/vs1/apps/init/mark
 testme:~# echo default > /etc/vservers/vs1/apps/init/mark

входим, проверяем ставим nagios nginx apache

 testme:~# aptitude install vserver-debiantools

Читаем про vapt-get http://flakey.info/linux/vservers-on-debian-linux.html

пустим vserver`а в интернет через nat (пакеты поставить)

 testme:~# iptables -t nat -A POSTROUTING -s 192.168.1.1 -j SNAT --to-source X.X.X.X
 testme:~# iptables -t nat -A POSTROUTING -s 192.168.2.2 -j SNAT --to-source X.X.X.X
 testme:~# vapt-get vs1 -- install nginx
 testme:~# vapt-get vs2 -- install apache2
 vs2:/# /etc/init.d/apache2 start

Проверяем testme:~# telnet 192.168.2.2 80

GET /index.html It works!

Конфигурируем nginx

 #touch /etc/nagios/vs2.conf
 server {
               listen          192.168.1.1:80;
               server_name     testme.mydomain.com www.testme.mydomain.com;
               location / {
                       proxy_pass         http://192.168.2.2:80/;
                       proxy_redirect     off;
                       proxy_set_header   Host             $host;
                       proxy_set_header   X-Real-IP        $remote_addr;
                       proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                       client_max_body_size       10m;
                       client_body_buffer_size    128k;
                       proxy_connect_timeout      190;
                       proxy_send_timeout         190;
                       proxy_read_timeout         190;
                       proxy_buffer_size          4k;
                       proxy_buffers              4 32k;
                       proxy_busy_buffers_size    64k;
                       proxy_temp_file_write_size 64k;
                       }
 
 
 # location ~*    \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|avi|mpg|mpeg)$ {
 #               root /var/www/static;
 #                    }
               }

проверяем создаем в www root vs2 файлик

 #touch hello.txt
 #echo hello world! > hello.txt
 testme:~# telnet 192.168.1.1 80
 Trying 192.168.1.1...
 Connected to 192.168.1.1.
 Escape character is '^]'.
 GET /hello.txt
 hello world
 Connection closed by foreign host.
 testme:~#

Конфигурируем фаервол на vs1 и vs2 открываем только tcp трафик на 80 порт. И icmp траффик

Первые 2 правила нужны - открытые непривилегированные порты.

 testme:~# iptables -I INPUT -s 0/0 -d 0/0 -p tcp --dport 1024:65535 -j ACCEPT
 testme:~# iptables -I INPUT -s 0/0 -d 0/0 -p udp --dport 1024:65535 -j ACCEPT
 testme:~# iptables -I INPUT -s 0/0 -d 192.168.1.1/32 -p tcp --dport 80 -j ACCEPT
 testme:~# iptables -I INPUT -s 0/0 -d 192.168.2.2/32 -p tcp --dport 80 -j ACCEPT
 testme:~# iptables -I INPUT -s 0/0 -d 192.168.2.2/32 -p icmp -j ACCEPT
 testme:~# iptables -I INPUT -s 0/0 -d 192.168.1.1/32 -p icmp -j ACCEPT
 testme:~# iptables -A INPUT -s 0/0 -d 192.168.1.1/32 -j DROP
 testme:~# iptables -A INPUT -s 0/0 -d 192.168.2.2/32 -j DROP

Прикрываем 82.103.134.17 открываем только 22 порт для ssh

 testme:~# iptables -I INPUT -s 0/0 -d X.X.X.X -p tcp --dport 22 -j ACCEPT
 testme:~# iptables -I INPUT -s 0/0 -d X.X.X.X -p icmp -j ACCEPT
 testme:~# iptables -A INPUT -s 0/0 -d X.X.X.X/32 -j DROP


Ставим nagios

 testme:~# vapt-get vs2 -- install nagios3

Прописываем testme.mydomain.com в /etc/hosts (чтобы по доменному имени проверять сервисы) т.к. DNS резолвит testme.mydomain.com как X.X.X.X

Создаем файл с акаунтами/паролями для nagios

 vs2:/etc/nagios3# htpasswd -c htpasswd.users nagiosadmin


создаем /etc/nagios3/conf/hosts.cfg vs2:/etc/nagios3/conf.d# cat hosts.cfg

define host {
       host_name   testme.mydomain.com
       alias       testme.mydomain.com
       address     testme.mydomain.com
       use         generic-host
       }
 
 define host {
       host_name   vs1
       alias       vs1
       address     192.168.1.1
       use         generic-host
       }
 
 define host {
       host_name   vs2
       alias       vs2
       address     192.168.2.2
       use         generic-host
       }
 
 define host {
       host_name   base
       alias       base
       address     X.X.X.X
       use         generic-host
       }

Добавляем в необходимые группы


 vs2:/etc/nagios3/conf.d# cat hostgroups_nagios2.cfg
 # Some generic hostgroup definitions
   
 # A simple wildcard hostgroup
 define hostgroup {
       hostgroup_name  all
               alias           All Servers
               members         *
       }
 
 # A list of your Debian GNU/Linux servers
 define hostgroup {
       hostgroup_name  debian-servers
               alias           Debian GNU/Linux Servers
               members         localhost
       }
 
 # A list of your web servers
 define hostgroup {
       hostgroup_name  http-servers
               alias           HTTP servers
               members         localhost,testme.mydomain.com,vs1
       }
 
 # A list of your ssh-accessible servers
 define hostgroup {
       hostgroup_name  ssh-servers
               alias           SSH servers
               members         localhost,base
       }
 
 # nagios doesn't like monitoring hosts without services, so this is
 # a group for devices that have no other "services" monitorable
 # (like routers w/out snmp for example)
 define hostgroup {
       hostgroup_name  ping-servers
               alias           Pingable servers
               members         gateway,testme.mydomain.com,vs1,vs2,base
       }

Релоадим /etc/init.d/nagios3 reload

Ждем пока PENDING пройдет,Проверяем

 vs2:/etc/nagios3# links http://192.168.2.2/nagios3/

Получаем мониторинг ssh на базовом хосте, ping базового и vs серверов мониторинг http на обоих vs серверах на vs2 мониторим как testme.mydomain.com (по имени)

Для доступа из интернет делаем NAT на PREROUTING

 testme:~# iptables -t nat -A PREROUTING -s 0/0 -d X.X.X.X/32 -p tcp --dport 80  -j DNAT --to 192.168.1.1:80

Вроде все.

Eсли понадобится в vserver примонтировать диск

 #vnamespace --enter dw1-1 -- mount /dev/sdb1 /var/lib/vservers/dw1-1/mnt/sdb1    
 # df /mnt/sdb1
 Filesystem           1K-blocks      Used Available Use% Mounted on
 -                    240292420    191768 227894468   1% /mnt/sdb1


Ссылки по теме