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
Ссылки по теме