DRBD+Pacemaker+Corosync+KVM+Nginx+PHP-FPM+Zabbix
(позже дооформлю...)
Чисти обязательно!!!
> /root/.ssh/known_hosts> /home/borodatych/.ssh/known_hosts
Или сразу удаляем!!!
rm -rf /root/.ssh/known_hostsrm -rf /home/borodatych/.ssh/known_hosts
Pre-Installation
aptitude updateaptitude upgrade
Правим хост файл
cat /etc/hostsecho '192.168.8.11 sifon' >> /etc/hostsecho '192.168.8.12 boroda' >> /etc/hostsecho '192.168.8.20 nodez' >> /etc/hostsecho '10.10.10.11 drbd1' >> /etc/hostsecho '10.10.10.12 drbd2' >> /etc/hosts
Конфигурируем сетевые интерфейсы
> /etc/network/interfacesecho 'auto lo' >> /etc/network/interfacesecho 'iface lo inet loopback' >> /etc/network/interfacesecho '' >> /etc/network/interfacesecho 'auto eth0' >> /etc/network/interfacesecho 'iface eth0 inet manual' >> /etc/network/interfacesecho '' >> /etc/network/interfacesecho 'auto br0' >> /etc/network/interfacesecho 'iface br0 inet static' >> /etc/network/interfacesecho ' address X.Y.Z.x1' >> /etc/network/interfacesecho ' network X.Y.z.x2' >> /etc/network/interfacesecho ' netmask 255.255.255.x3' >> /etc/network/interfacesecho ' broadcast X.Y.Z.x4' >> /etc/network/interfacesecho ' gateway X.Y.Z.x5' >> /etc/network/interfacesecho ' bridge_ports eth0' >> /etc/network/interfacesecho ' bridge_stp off' >> /etc/network/interfacesecho ' bridge_fd 0' >> /etc/network/interfacesecho ' bridge_maxwait 0' >> /etc/network/interfacesecho '' >> /etc/network/interfacesecho 'auto eth1' >> /etc/network/interfacesecho 'iface eth1 inet static' >> /etc/network/interfacesecho ' address 10.10.10.12' >> /etc/network/interfacesecho ' netmask 255.255.255.0' >> /etc/network/interfaces/etc/init.d/networking restart
Проверяем. На всех машинах
ping sifon -c 1ping boroda -c 1ping nodez -c 1ping drbd1 -c 1ping drbd2 -c 1
Добавим гугловский ДНС
cat /etc/resolv.confecho 'nameserver 8.8.8.8' >> /etc/resolv.conf
KVM
Устанавливаем необходимые пакеты
apt-get install virtinstaptitude install qemu-kvmaptitude install libvirt-bin
Это гуи для дескопа
aptitude install virt-manager
Проверяем все ли установилось
При положительном результате, вернет пустую строчку
virsh -c qemu:///system list --all
DRBD
Устанавливаем
apt-get install drbd8-utils
Приступаем к конфигурации
Тут мы правим глобальные переменные
cp /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.2> /etc/drbd.d/global_common.confnano /etc/drbd.d/global_common.conf
global { usage-count yes; }common { protocol C;syncer { rate 3072M; }handlers {out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";fence-peer "/usr/lib/drbd/crm-fence-peer.sh";after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";}startup { wfc-timeout 15; degr-wfc-timeout 60; }disk { fencing resource-only; on-io-error detach; no-disk-flushes; no-md-flushes; }net { cram-hmac-alg sha1; shared-secret "amAteIcHik"; ping-timeout 20; max-buffers 8000; max-epoch-size 8000; sndbuf-size 0; }}
Проверяем наличие ниже приведенных строчек в
nano /etc/drbd.conf
include "/etc/drbd.d/global_common.conf";include "/etc/drbd.d/\*.res";
Это блочное устройство у нас отведено под тестовый KVM машины
nano /etc/drbd.d/drbd0.res
resource drbd0 {on sifon {device /dev/drbd0;disk /dev/md2;address 10.10.10.11:25600;meta-disk internal;}on boroda {device /dev/drbd0;disk /dev/md2;address 10.10.10.12:25600;meta-disk internal;}
Это наш релиз. Запоминаем и осторожничаем в будущем))))
nano /etc/drbd.d/drbd5.res
resource drbd5 {on sifon {device /dev/drbd5;disk /dev/sdc5;address 10.10.10.11:25605;meta-disk internal;}on boroda {device /dev/drbd5;disk /dev/sdc5;address 10.10.10.12:25605;meta-disk internal;}
Создаем необходимы каталоги
Первый для релиза, остальные два под тестовые KVM-ки
mkdir /mnt/rkvmmkdir -p /mnt/skvm/sysmkdir -p /mnt/skvm/iso
Не знаю как обозвать эту секцию, помогайте
/etc/init.d/drbd startdd if=/dev/zero of=/dev/sdc5 bs=1M count=128drbdadm create-md drbd0drbdadm create-md drbd5drbdadm up drbd0drbdadm up drbd5mkfs.ext4 /dev/drbd0mkfs.ext4 /dev/drbd5drbdadm -- --overwrite-data-of-peer primary drbd0drbdadm -- --overwrite-data-of-peer primary drbd5drbdadm connect drbd5watch cat /proc/drbdwatch /etc/init.d/drbd status/etc/init.d/drbd stopupdate-rc.d -f drbd remove
Corosync
apt-get install pacemaker
Разрешаем запуск
cat /etc/default/corosync> /etc/default/corosyncecho 'START=yes' >> /etc/default/corosync
Генерируем ключ и копируем его на остальные сервера
Тут соль в том что в момент генерации нужно топтать батон или дергать маус, хз почему так
corosync-keygenscp -i ~/.ssh/amatei /etc/corosync/authkey root@192.168.8.12:/etc/corosync/authkeyscp -i ~/.ssh/amatei /etc/corosync/authkey root@192.168.8.20:/etc/corosync/authkeychmod 400 /etc/corosync/authkey
Правим конфиг
nano /etc/corosync/corosync.conf
token: 5000token_retransmits_before_loss_const: 20join: 1000consensus: 7500bindnetaddr: 192.168.8.0 (На свою подсеть)
Что бы не проделывать монотонную работу, просто скопируем конфиг на оставшиеся машины
scp -i ~/.ssh/amatei /etc/corosync/corosync.conf root@192.168.8.12:/etc/corosync/corosync.confscp -i ~/.ssh/amatei /etc/corosync/corosync.conf root@192.168.8.20:/etc/corosync/corosync.conf
Перезагружаем corosync
/etc/init.d/corosync stop/etc/init.d/corosync start
Если идут блуды с автозагрузкой, то переназначим старт
update-rc.d -f corosync removeupdate-rc.d corosync start 90 S . stop 07 0 1 6 .
CRM
Сперва рекомендую произвести очистку, если остались следы от прошлых конфигов
Или если хотите сделать переконфигурацию примитив, но сперва тормозните corosync
cd /var/lib/heartbeat/crmrm -rf ./cib
Устанавливаем редактор по умолчанию nano, дефолтный vi, мне не нра)))
export EDITOR=/bin/nanoecho "export EDITOR=/bin/nano" >> .bashrccrm configure edit
!!! Самое главное, если убрали сервер из кластера, удалите его примитивы, что бы не было глюков!!!
Обратить внимание!!! - target-role="started"
В каком порядке добавляете примитивы в таком они выводятся в crm_mon
Создаем примитив для релиза
Тут даем команду на поднятия мастер блока сперва на sifon, потом на boroda, но ни в коем случае не на nodez
crm configureprimitive DRBD ocf:linbit:drbd params drbd_resource="drbd5" drbdconf="/etc/drbd.conf" op start timeout=240s op stop timeout=120sms msDRBD DRBD meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"location loc_msDRBD_sifon msDRBD 200: sifonlocation loc_msDRBD_boroda msDRBD 100: borodalocation loc_msDRBD msDRBD -inf: nodezproperty stonith-enabled=falseconfigure property no-quorum-policy="ignore"bye
Тут по аналогии только для другого блока, отведенного под тесты
crm configureprimitive DRBD0 ocf:linbit:drbd params drbd_resource="drbd0" drbdconf="/etc/drbd.conf" op start timeout=240s op stop timeout=120sms msDRBD0 DRBD0 meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"location loc_msDRBD0_sifon msDRBD0 100: sifonlocation loc_msDRBD0_boroda msDRBD0 200: borodalocation loc_msDRBD0 msDRBD0 -inf: nodezbye
Создадим примитив для автоматического поднятия релизной KVM-ки на мастер блоке, отведенного для этих нужд
СПЕРВА СОЗДАЕМ KVM-ку, а потом уже примитив!!!
Так что отвлекаемся на раздел **KVM**, после возвращаемся
crm configureprimitive rKVM ocf:heartbeat:VirtualDomain params config="/etc/libvirt/qemu/rKVM.xml" hypervisor="qemu:///system" meta allow-migrate="false" op start timeout="120s" op stop timeout="120s" op monitor depth="0" timeout="30" interval="10"colocation rKVM_on_drbd inf: rKVM msDRBD:Masterorder rKVM_after_drbd inf: msDRBD:promote rKVM:startbye
Делаем маунт нашего тест раздела
crm configureprimitive mount_sKVM ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/mnt/skvm" fstype="ext4" op monitor interval=40s timeout=40s op start timeout=240s op stop timeout=120scolocation mount_sKVM_on_master inf: mount_sKVM msDRBD0:Masterorder mount_sKVM_after_master inf: msDRBD0:promote mount_sKVM:startbye
Рестартуем демон и проверяем
/etc/init.d/corosync stop/etc/init.d/corosync startps -afe | grep corokillall -9 corosync
Nginx
apt-get install gcc makeapt-get install libpcre3-devapt-get install libssl-devwget http://sysoev.ru/nginx/nginx-0.8.53.tar.gztar -xzvf nginx-0.8.53.tar.gzcd nginx-0.8.53
http://sysoev.ru/nginx/docs/install.html
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gztar -xzvf pcre-8.10.tar.gz
wget http://prdownloads.sourceforge.net/libpng/zlib-1.2.5.tar.gztar -xzvf zlib-1.2.5.tar.gz
apt-get install openssl
cd ..mkdir -p /PATH/nginx
Подсмотреть опции можно так:
./configure --help > configure-mancat configure-man
./configure --prefix=/PATH/nginx --sbin-path=/PATH/nginx/nginx --conf-path=/PATH/nginx/nginx.conf --pid-path=/PATH/nginx/nginx.pid --error-log-path=/PATH/nginx/error.log --http-log-path=/PATH/nginx/access.log --with-http_ssl_module --with-pcre=/SRC/pcre-8.10 --with-zlib=/SRC/zlib-1.2.5make cleanmakemake install
PATH/nginx/sbin/nginxkillall -9 nginxps axu | grep nginx
php-fpm
Не юзал. У Николая есть информация. Никола, с тебя данные!!!
KVM
aptitude install virtinstaptitude install qemu-kvm libvirt-bin
Это для дэскопа!
apt-get install virt-manager
virsh -c qemu:///system list --allvirsh net-list --all
virt-install --help
Вход в систему
virsh --connect qemu:///system
Показать имеющиеся KVM
virsh -c qemu:///system list --all
Посмотреть имеющиеся хранилища
virsh --connect qemu:///system pool-list --all
Посмотреть образы в выбраном хранилище
virsh --connect qemu:///system vol-list sKVM
Команды для создание KVM
Сперва качаем образ нужной нам системы
ХОТЬ КУДА ТОЛЬКО НЕ В ROOT!!!
cd /homewget http://mirror.yandex.ru/ubuntu-releases/10.10/ubuntu-10.10-server-amd64.iso
Создание KVM в существующее хранилище
virt-install --name=rKVM --ram=8192 --vcpus=4 --disk path=/dev/drbd5 --accelerate --noautoconsole --connect=qemu:///system --vnc --hvm --os-type=linux --os-variant=generic26 -w bridge:br0 --import
Создание с автозапуском с cdrom-а
virt-install --name=rKVM --ram=8192 --vcpus=4 --disk path=/dev/drbd5 --accelerate --noautoconsole --connect=qemu:///system --vnc --hvm --os-type=linux --os-variant=generic26 --cdrom=/home/ubuntu-10.10-server-amd64.iso -w bridge:br0
Создание шаблона с образом жесткого диска в 4Gb и ОЗУ 1Gb
virt-install --name=tmplKVM --ram=1024 --vcpus=1 --disk path=/mnt/skvm/sys/tmpl.img,size=4 --accelerate --noautoconsole --connect=qemu:///system --vnc --hvm --os-type=linux --os-variant=generic26 --cdrom=/mnt/skvm/iso/ubuntu-10.10-server-amd64.iso -w bridge:br0
Моя KVM-ка отведенная под изучение Gentoo, тут идет сразу создание самого образа
virt-install --name=brdKVM --ram=2047 --vcpus=1 --disk path=/mnt/skvm/sys/brd.img,size=8 --accelerate --noautoconsole --connect=qemu:///system --vnc --hvm --os-type=linux --os-variant=generic26 --cdrom=/mnt/skvm/iso/install-amd64-minimal-20101118.iso -w bridge:br0 --prompt
Создаем под Zabbix
На том сервере, где у нас mount_sKVM
Копия делается с tpmlKVM, tmpl.img дублируется в zabbix.img
Поэтому ни tmplKVM.xml ни tmpl.img как файлы не трогаем и не редактируем
Соответственно без полного осознания, что оно надо)))
virt-clone -o tmplKVM -n zabbix --file=/mnt/skvm/sys/zabbix.imgvirsh --connect qemu:///system vol-list sKVM
> /etc/hostnameecho 'zabbix' >> /etc/hostnamepasswd root**********userdel tmplkvmuseradd zabbixpasswd zabbix**********nano /etc/network/interfacestaticaddress 192.168.8.101/etc/init.d/networking restartssh root@192.168.8.101cat /etc/resolv.confecho 'nameserver 8.8.8.8' >> /etc/resolv.confМанипуляция с ключами SSH в ручную, пока не автоматизировал)))И моно уже так:ssh -i ~/.ssh/amatei root@192.168.8.101
...Дальше zabbix...
Zabbix
Server configuration
apt-get install zabbix-server-mysql zabbix-agent zabbix-frontend-php
MySQL root password
Правим конфиг:
nano /usr/share/zabbix/conf/zabbix.conf.php
$DB["SERVER"] = "127.0.0.1";$ZBX_SERVER = '192.168.8.101';
admin/zabbix
nano /etc/php5/apache2/php.ini
date.timezone = "Asia/Yekaterinburg"max_execution_time = 600max_input_time = 600memory_limit = 256Mpost_max_size = 32Mupload_max_filesize = 16M
/etc/init.d/apache2 restart
Настройка web:
nano /etc/zabbix/apache.conf
ps axu | grep zabbix
/etc/init.d/zabbix-server restart
Настраиваем уведомление на почту:
nano /etc/zabbix/zabbix_server.conf
ListenPort=10051DBHost=127.0.0.1
cd /etc/zabbix/alert.dwget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gztar -xvzf sendEmail-v1.56.tar.gzcd sendEmail-v1.56mv ./sendEmail /etc/zabbix/alert.d/cd ..rm -rf /etc/zabbix/alert.d/sendEmail-v1.56rm -rf /etc/zabbix/alert.d/sendEmail-v1.56.tar.gzcleartouch /etc/zabbix/alert.d/zabbix_sendemail
chmod 755 /etc/zabbix/alert.d/zabbix_sendemail
nano /etc/zabbix/alert.d/zabbix_sendemail
#!/bin/shexport smtpemailfrom=КОМУ@ДОМЕН.ruexport zabbixemailto="$1"export zabbixsubject="$2"export zabbixbody="$3"export smtpserver=smtp.gmail.comexport smtplogin=ОТ_КОГО@ДОМЕН.ruexport smtppass=ПАРОЛЬ
export metod="tls=yes"#export metod="ssl=yes"export port=587#export port=465/etc/zabbix/alert.d/sendEmail -f $smtpemailfrom -t $zabbixemailto -u $zabbixsubject -m $zabbixbody -s $smtpserver:$port -xu $smtplogin -xp $smtppass -o $metod
Agent configuration
apt-get install zabbix-agent
nano /etc/zabbix/zabbix_agent.conf
Server=192.168.8.101
nano /etc/zabbix/zabbix_agentd.conf
Server=192.168.8.101ServerPort=10051Hostname=192.168.8.101
/etc/init.d/zabbix-agent restart
Далее материалы буду размещать на
ОтветитьУдалитьblog.demka.org
http://blog.demka.org/
ОтветитьУдалить[url=http://blog.demka.org/]blog.demka.org[url]
ОтветитьУдалитьblog.demka.org
ОтветитьУдалить