Agaton.cz

V souvislosti s virtualizací našich serverů jsem se rozhodl začít používat CentOS. Sice jsem trochu rozmazlený Fedorou, ale přeci jen pro virtuální prostředí mi byl přechod na CentOS velmi doporučován. Navíc pod Fedorou 13 se mi nepodařilo rozchodit Heartbeat, kdežto v CentOS se stejnými konfiguračními parametry šlapal na první pokus.

Navíc jsem se rozhodl používat Citrix XenServer (VMware bylo moc háklivé na HW a nerozumělo si s našimi servery), a Fedora není od firmy Citrix podporována.

 

V instalační proceduře nechávám vše implicitní, pouze si vybírám jako typ instalace "server" a vše ostatní vypínám. Konfiguraci síťových rozhraní provádím ješte v této instalační proceduře, je to pohodlnější než pozdější ruční editace.

Pro kompatibilitu s ostatními servery a používanými programy jsem potřeboval nainstalovat i glusterfs ve verzi 2.0.9 a php ve verzi 5.2.x.  Tyto však nejsou ve standardních repozitářích, proto jsem nejprve přidal potřebné rozšíření:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

dále v souboru /etc/yum.repos.d/CentOS-Base.repo v sekci [centosplus] a případně i sekci [contrib] se povolí použití nastavením "enabled=1". Pro potřebnou verzi glusterfs je potřeba povolit i  /etc/yum.repos.d/epel-testing.repo. Zde stačí povolit jen sekci [epel-testing].

V tuto chvíli je již možné doinstalovat vše potřebné

yum install mc joe fuse fuse-libs fuse-devel glusterfs-* e4fsprogs ntp fai2ban rkhunter net-snmp rsyslog

a provést i update

yum update

Co se týče dalších úprav, tak jsou obdobné jako u Fedory, pouze není potřeba vypínat NetworkManager, ale naopak pro standalone servery není potřeba xinetd, takže je možné jej vypnout. Dále jsem si zvykl na používání rsyslog místo syslog.

chkconfig --del xinetd
chkconfig --del syslog
chkconfig --level 2345 rsyslog on

Pro instalaci php ve verzi 5.2.x je však ještě potřeba povolit další repozitář - CentOS-Testing.  V adresáři /etc/yum.repos.d/ se založí soubor "CentOS-Testing.repo" s obsahem

# CentOS-Testing:
[c5-testing]
name=CentOS-5 Testing
baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
includepkgs=php*

Toto je potřeba provést ještě před příkazem "yum update", nebo ho nyní spustit znovu.

Pro použítí jako webserver je opět potřeba doinstalovat:

yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel proftpd webalizer perl-HTML-Parser perl-DBI perl-Net-DNS perl-Digest-SHA1 php-mbstring

pear channel-update pear.php.net
pear install MDB2
pear install MDB2_Driver_mysql

Pro mail-server je zapotřebí nejprve přidat repozitář rpmforge (balíček "postgrey") a repozitář atrpms (balíček "maildrop").

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
rpm -i rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm

rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms

a založit soubor /etc/yum.repos.d/ATrpms.repo s obsahem:

#ATrpms
[atrpms]
name= CentOS-$releasever - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgcheck=1
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms

 

Pokud je používáno více repozitářů, mohlo by dojít ke konfliktu verzí - je možné si zvolit priority jednotlivých repozitářů. Stačí si doinstalovat balíček

yum install yum-priorities

a v jednotlivých souborech .repo doplnit řádek "priority=X", kde menší "X" znamená větší prioritu. Já jsem však repozitáře rpmforge a atrpms použil jen k instalaci balíčku maildrop a postgrey, a po jejich instalaci oba repozitáře opět vypnul (řádek "enabled=0").

Nyní je již možné doinstalovat vše potřebné

yum install postfix dovecot amavisd-new spamassassin perl-Razor-Agent pyzor maildrop postgrey

 

Při použití CentOS jako datového úložiště používám pro zvětšení přenosové rychlosti i pro redundanci přenosové cesty bonding. Každá síťová karta od všech počítačů je potom připojena k jinému switchi stylem "první karta -> první switch, druhá karta -> druhý switch". Tím je zajištěna přenosová cesta i v případě výpadku kterékoliv síťové karty nebo switche.

V adresáři /etc/modprobe.d se založí sobor "bonding.conf" s obsahem

alias bond0 bonding
options bonding mode=balance-rr miimon=100

v /etc/sysconfig/network-scripts se založí soubor "ifcfg-bond0"

# Interface Bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=172.30.100.12
NETMASK=255.255.255.192
BOOTPROTO=static
USERCTL=no

a upraví se soubory "ifcfg-ethX" pro patřičné karty, ze kterých se vytvoří bonding (např. ifcfg-eth2 a ifcfg-eth3)

# Interface Bond0 (1)
DEVICE=eth2
BOOTPROTO=NONE
HWADDR=00:1B:21:74:3B:C3
ONBOOT=yes
HOTPLUG=no
MASTER=bond0
SLAVE=yes
USERCTL=no

# Interface Bond0 (2)
DEVICE=eth3
BOOTPROTO=NONE
HWADDR=00:1B:21:74:3D:C2
ONBOOT=yes
HOTPLUG=no
MASTER=bond0
SLAVE=yes
USERCTL=no

IP adresa se nastavuje u interface "bond0", u interface eth2 a eth3 se ve výpisu z ifconfig musí objevit slovo "SLAVE"


bond0 Link encap:Ethernet HWadr 00:1B:21:74:3B:C3
inet adr:172.30.100.12 Všesměr:172.30.100.63 Maska:255.255.255.192
inet6-adr: fe80::21b:21ff:fe74:3bc3/64 Rozsah:Linka
AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MASTER MULTICAST MTU:1500 Metrika:1
RX packets:25255296 errors:5 dropped:0 overruns:0 frame:5
TX packets:22890084 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:0
RX bytes:20066190938 (18.6 GiB) TX bytes:13055679529 (12.1 GiB)

eth2 Link encap:Ethernet HWadr 00:1B:21:74:3B:C3
AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ SLAVE MULTICAST MTU:1500 Metrika:1
RX packets:15462606 errors:5 dropped:0 overruns:0 frame:5
TX packets:11475841 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:1000
RX bytes:11548189711 (10.7 GiB) TX bytes:6576581138 (6.1 GiB)
Paměť:fdec0000-fdee0000

eth3 Link encap:Ethernet HWadr 00:1B:21:74:3B:C3
AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ SLAVE MULTICAST MTU:1500 Metrika:1
RX packets:9792690 errors:0 dropped:0 overruns:0 frame:0
TX packets:11414243 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:1000
RX bytes:8518001227 (7.9 GiB) TX bytes:6479098391 (6.0 GiB)
Paměť:fd6c0000-fd6e0000

 

Při přechodu na CentOS jsem již měl ve Fedoře vytvořené diskové pole RAID5 s daty. Po instalaci tohoCentOSu jsem tedy musel toto pole obnovit

mdadm --examine --scan /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 >>/etc/mdadm.conf
mdadm --assemble -s

po sestavení je potřeba reboot, aby se obnovil i LVM.

Pro mountovani diskových oblastí přes iscsi je zapotřebí nainstalovat balík iscsi-initiator-utils. Vyhledání "targetů" se provede příkazem

iscsiadm -m discovery -t sendtargets -p 172.30.100.12

přičemž nalezené targety se uloží do /var/lib/iscsi/nodes a /var/lib/iscsi/send_targets. Po restartu iscsi (service iscsi-target restart) by již měli být dostupné. Podle dmesg případně pomoci příkazu "fdisk -l" se zjistí, k jakým jednotkám /dev/sdX byly jednotlivé targety přiřazeny a nadále se s nimi již může zacházet jako s lokálními disky (fdisk, makefs.....). V případě, že se u iscsi používá autentizace, je zapotřebí u příkazu iscsiadm ještě použít i volbu "-l" (login), ale to jsem zatím neřešil.

 

Jako úložiště dat používám dva počítače (viz odkaz "Firemní NAS"), oba s RAID5, které jsou navíc síťově "mirrorovány" - část LV pomocí glusterfs a část LV přes drbd + iscisi export + mutipath. Glusterfs je používán pro data z jednotlivých virtuálních strojů, a je též popsán v sekci "Firemní NAS".  Drbd + iscsi + multipath je používán pro bootování jednotlivých VM v poolu dvou XEN-serverů, tato část však zde nebude popsána, jelikož jsem si ji nechal dělat zakázkově (s ohledem na požadovanou spolehlivost). Konfiguraci mi za příznivých finančních podmínek provedla firma OldanyGroup.