Recently in Servers Category

Spiel, Spass und Spannung :-)

| 1 Comment
Mein BGP Test-Setup steht. 5 LXC (Linux Container mit Debian Squeeze) Instanzen mit Bridge-Networking. Auf allen Containern laeuft ein BGP Daemon. Einer ist dafuer gedacht, den Traffic auf bestimmte virtuelle IPs mittels BGP zu den anderen 4 Containern (mit No-ARP auf dem Loopback-Interface auf den Ziel-Containern hochgezogen) zu routen. Im Test-Setup werden die Routen auch in die Linux-Routingtabelle eingetragen. Auf den 4 Anderen läuft jeweils ein Pacemaker Clustermanager mit Corosync, der sicherstellt, dass der Quagga (BGP Daemon) auch nur laeuft, wenn der Apache keine Probleme hat. Sonst geht eingehender HTTP Trafic ins leere. Dabei gibt es 4 Resource Gruppen (p_apache, p_quagga). Wobei jede Gruppe auf einen bestimmten Container fixiert ist (-inf: \#uname ne $HOSTNAME). Spaeter muss ich mir noch ueberlegen wie ich das BGP-Loadbalancing teste. BGP kann eigentlich kein Loadbalancing, sofern mir bekannt ist. Man kann es jedoch ertricksen. Ach es gibt so viel zum Spielen. Ach ja: Das alles wird mittels Puppet-Konfigurationsmanagement automatisiert installiert.
Enhanced by Zemanta

FreeNX

Heute habe ich endlich mal FreeNX als Alternative zu X11 Forwarding mittels SSH ausprobiert (es wurde ja auch mal langsam Zeit). Speed: Viel besser. Installation: Man muss leider die Binaries fuer den FreeNX-Server manuell herunterladen und installieren (Debian Squeeze). Dafuer geht es umso leichter Clientseitig (Open Source Client QtNX unter Ubuntu ist im Repo mit drin). X11 Forwarding: Ade.
Enhanced by Zemanta
Der Begriff RAID ist ein Akronym für engl. „Redundant Array of Independent Disks", also „Redundante Anordnung unabhängiger Festplatten" (ursprünglich engl. „Redundant Array of Inexpensive Disks"; deutsch „Redundante Anordnung kostengünstiger Festplatten"; was aus Marketinggründen aufgegeben wurde). Ein RAID-System dient zur Organisation mehrerer phraid0.pngysischer Festplatten eines Computers zu einem logischen Laufwerk, das eine höhere Datenverfügbarkeit bei Ausfall einzelner Festplatten und/oder einen größeren Datendurchsatz erlaubt als ein einzelnes physisches Laufwerk. (... mehr siehe Wikipedia).

Ich will hier jetzt nicht den Sinn und Zweck von RAID im Detail erlaeutern sondern erstmal nur RAID 0 und 1 kurz anreissen, damit man in etwa versteht, was es mit den ganzen komischen RAIDs auf sich hat, und wie man sich besser merken kann, welches RAID was genau ist:

a) Bei RAID 0 werden einfach 2 Festplatten genommen und zu einem grossen logischen Laufwerk (Volume) zusammengefasst. Fuer das OS hat man dann 1 grosse Platte anstelle von 2 kleinen Platten gemountet. Es besteht keinerlei Datenredundanz. Wenn eine Platte ausfaellt, dann sind alle Daten verloren. 

b) Bei RAID 1 wird der Inhalt lediglich immer auf 2 Platten verteilt. Auf der jew. anderen Festplatte existiert jeweils immer 
raid1.png
eine Spiegelkopie. Es darf 
also eine Platte ausfallen und es kommt zu keinem Datenverlusst.

Daneben gibt es noch weitere RAID-Level die mit mehr als 2 Festplatten arbeiten wie z.b. RAID 4, RAID 5, RAID 6, .... auf die hier nicht weiter eingegangen wird. 

Was hat es aber mit den 2-Stelligen RAID-Level (RAID 10, RAID 0+1, RAID 05, RAID 15, RAID 51, ...) auf sich? Die Faustregel ist, dass 2 RAIDs uebereinandergelegt werden. Zuerst das RAID-Level der ersten Ziffer, dann das RAID-Level der 2. Ziffer. Bei Raid 0+1 werden die Daten wie in a) beschrieben zuerst mit 2 Platten zu einem groesseren Volume zusammengefasst, so dass man mehrere RAID 0 hat. Und dann wird ueber die mehreren RAID 0 das "zweite RAID" gelegt. Bei RAID 0+1 wuerde man ueber die vielen RAID 0 zu
saetzlich ein RAID 1 legen. D.h. man hat beliebig viele RAID 0, die dann im nachhinein mit RAID 1 redundant gemacht werden.

Bei RAID 05, 06, ... gilt dies analog. Zuerst werden mehrere RAID 0 gebildet, ueber die dann ein RAID 5 oder ein RAID 6 .... zwecks Redundanz gebildet wird. Hier darf RAID 5 nicht mit RAID 05.... verwechselt werden (gilt auch bei anderen RAIDs).
raid0p1.png

Bei allen RAID-Level die mit einer 1 beginnen (z.B. RAID 1, RAID 10, RAID 15, RAID 16) werden zuerst mehrere RAID 1 erstellt, worueber dann ein weiterer Level gelegt wird. Beispielsweise werden beim RAID 10 (in der Grafik 1+0) mehrere redundante RAID 1 zu einem grossen Volume  zusammengefasst. 
raid10.png

Dies dient nur als Faustregel. Ich denke nicht alle RAID-Level die es gibt halten sich an diese Konvention. Z.B. gibt es bei ZFS ein sog. RAID-Z (Ist aber ein Softwareraid auf Dateisystemebene) und im Namen gibt es nach dieser Konvention hier keinerlei Aussage wie die Daten verteilt sind. 

Ein weiteres Beispiel: Beim RAID 51 werden zuerst ueber die vorhandenden Platten mehrere RAID 5 gebildet, die dann nachtraeglich mittels RAID 1 zu einem grossen Volume zusammengefasst werden.

Backupping using ZFS Snapshots

Mit folgendem kleinen Bash-Skript lassen sich per Cron angetriggert tägliche ZFS-Snapshots erstellen. Natürlich sollte man die Snapshots zusätzlich noch auf einem externen Datenträger (wie wärs mit einem Smartdrive? ;) sichern und am besten noch verschlüsslet.

#!/usr/local/bin/bash 

# Do ZFS Snapshots (c) Paul Buetow

for snapshot in "$(zfs list -t snapshot | egrep 'before[0-9]+days')"; do 
  echo "$snapshot" | while read name used avail refer mountpoint; do
    case $name in
      *@before7days)
        zfs destroy $name
        ;;
      *)
        basename=$(echo $name | cut -d @ -f 1)
        snapname=$(echo $name | cut -d @ -f 2)  
        now=$(echo $snapname | sed -E 's/.*([0-9]+).*/\1/')
        next=$((now + 1))
        zfs rename $name $basename@before${next}days
        ;;
    esac
  done
done

for tank in $(zfs list | cut -d ' ' -f 1 \
  | egrep '^tank/(storage|usr/jail/serv|backup/ufs)'); do
   zfs snapshot $tank@before0days
done

[root@saturn /usr/scripts]# zfs list -t snapshot | grep storage00
tank/storage00@before7days                      9.98M      -  10.9G  -
tank/storage00@before6days                      9.68M      -  10.9G  -
tank/storage00@before5days                      7.45M      -  35.9G  -
tank/storage00@before4days                      2.56M      -  35.9G  -
tank/storage00@before3days                      98.5K      -  3.09G  -
tank/storage00@before1days                        57K      -  3.09G  -
tank/storage00@before0days                        57K      -  3.09G  -

RequestTracker Passwort recovern


Wenn man sein Passwort vergessen hat oder wenn das alte Passwort wegen geändertem Hash-Algorithmus nicht mehr funktioniert und Shell-Zugriff auf den Server hat, so kann man sein RequestTracker Passwort unter FreeBSD wie folgt recovern:

[root@hyperion /usr/local/rt3]# perl -I /usr/local/rt3/lib/ -MRT -MRT::User -e 'RT::LoadConfig();RT::Init(); my $u = RT::User->new($RT::SystemUser); $u->Load("username"); $u->SetPassword("secret")'

Enhanced by Zemanta

FreeBSD ZFS Kernel Mem Usage

Kann man u.A. so herausfinden:

[root@saturn /usr/scripts]# cat kldmem.sh 
#!/bin/sh -

TEXT=`kldstat | awk 'BEGIN {print "16i 0";} NR>1 {print toupper($4) "+"} END {print "p"}' | dc`
DATA=`vmstat -m | sed -Ee '1s/.*/0/;s/.* ([0-9]+)K.*/\1+/;$s/$/1024*p/' | dc`
TOTAL=$((DATA + TEXT))

echo TEXT=$TEXT, `echo $TEXT | awk '{print $1/1048576 " MB"}'`
echo DATA=$DATA, `echo $DATA | awk '{print $1/1048576 " MB"}'`
echo TOTAL=$TOTAL, `echo $TOTAL | awk '{print $1/1048576 " MB"}'`


[root@saturn /usr/scripts]# ./kldmem.sh
TEXT=15866644, 15.1316 MB
DATA=491325440, 468.564 MB
TOTAL=507192084, 483.696 MB


Enhanced by Zemanta

buetow.org Core Services umgezogen


Bis auf wenige unwichtige habe ich bis gestern alle möglichen Core Services (Mailserver, Webmailer, PHPMyAdmin, Mailman, MovableType) auf einen anderen Server zwecks Verkleinerung (ein Server wurde gekündigt) umgezogen. Somit laufen die Core Services nicht mehr in einem Debian GNU/Linux Lenny Xen DomU sondern in einer FreeBSD 8.2 Jail und ZFS als Dateisystem.

Als Nebeneffekt sind die Core-Services nun in der aktuellsten Softwareversion installiert, da die FreeBSD Ports hier aktueller als das bereits auslaufende Lenny sind.

Es fehlt allerdings noch das Feintuning. Aber die wichtigsten Komponenten laufen bereits. Bis auf den RequestTracker. Den werde ich heute oder morgen wieder zum Laufen bekommen.



Enhanced by Zemanta

2a01:4f8:100:7263:bad:dead:beef:babe

| 2 Comments
ipv6ready.pngSeit heute unterstützt mein Shell-Server saturn.buetow.org (FreeBSD) inklusive seiner Jails (u.A. titan.buetow.org) natives IPv6. Jeder Kunde kann bei Bedarf sein eigenes /16 IPv6 Subnetz kostenlos bekommen.

Seit etwas längerer Zeit hat bereits jupiter.buetow.org (Linux Dom0) nativen IPv6 Support. Die DomUs müssen allerdings noch dafür konfiguriert werden.

Ping6 von jupiter.buetow.org auf titan.buetow.org:

pb@jupiter:~$ ping6 2a01:4f8:100:7263:bad:dead:beef:babe
PING 2a01:4f8:100:7263:bad:dead:beef:babe
(2a01:4f8:100:7263:bad:dead:beef:babe) 56 data bytes
64 bytes from 2a01:4f8:100:7263:bad:dead:beef:babe: 
   icmp_seq=1 ttl=62 time=0.172 ms
64 bytes from 2a01:4f8:100:7263:bad:dead:beef:babe: 
   icmp_seq=2 ttl=62 time=0.156 ms
64 bytes from 2a01:4f8:100:7263:bad:dead:beef:babe: 
   icmp_seq=3 ttl=62 time=0.163 ms
^C
--- 2a01:4f8:100:7263:bad:dead:beef:babe ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, 
time 1999ms rtt min/avg/max/m

High Performance Loadbalancing?

lvs.pngLVS (Linux Virtual Server) works.

The Linux Virtual Server is a highly scalable and highly available server built on a cluster of real servers, with the load balancer running on the Linux operating system. The architecture of the server cluster is fully transparent to end users, and the users interact as if it were a single high-performance virtual server.

Also, ruhig mal angucken!

Nagios Check einfach selbst gemacht

Das Gute an Nagios ist, dass sich Checks relativ einfach und straight forward selbst scripten lassen. So wie der Folgende, der ein FTP Backup Account auf freien Speicherplatz ueberprueft:

#!/usr/local/bin/bash 
# check_ftp_df.sh 
# Free FTP disk space nagios check 
# (c) Paul Buetow 2010

set -e

WARN=$1
CRITICAL=$2
FTPSPACE=$3
USERNAME=$4
PASSWORD=$5
BACKUPSERVER=$6

if [ -z $BACKUPSERVER ]; then
        echo "UNKNOWN: Could not execute the check"
        exit 3
fi

du=`echo du -s . | lftp -u $USERNAME,$PASSWORD $BACKUPSERVER | \
   sed 's/\.//'`

eval df=$(( $FTPSPACE - $du ))

if [ $? -ne 0 ]; then
        echo "UNKNOWN: Wrong credentials?"
        exit 3
fi

if [ $df -lt $CRITICAL ]; then
        echo "CRITICAL: Free disk space: $df KBytes"
        exit 2

elif [ $df -lt $WARN ]; then
        echo "WARNING: Free disk space: $df KBytes"
        exit 1
fi

echo "OK: Free disk space: $df KBytes"
exit 0

Pages

Powered by Movable Type 4.35-en

About this Archive

This page is an archive of recent entries in the Servers category.

Security is the previous category.

Shell is the next category.

Find recent content on the main index or look in the archives to find all content.