HA-Cluster

Aus CCC Bremen
  • gentoo minimal live cd von gentoo.org laden, brennen und booten
    • z.b. # wget ftp.gentoo.mesh-solutions.com/gentoo/releases/amd64/2008.0/installcd/install-amd64-minimal-2008.0.iso
  • netzwerkdevices werden (hoffentlich) automatisch erkannt
  • festplatten partitionieren (bei 160gig, gemappt als /dev/sda:)
    • mit dem fdisk von der livecd
    • blocksize 512
    • sda1: boot, 00122 cyl,001959876 blocks
    • sda2: swap, 00972 cyl,015631245 blocks
    • sda3: root, 06078 cyl,097659135 blocks
    • sda4: data, 12238 cyl,197326395 blocks
  • Dateisysteme erstellen
    • # mkfs.ext2 /dev/sda1
      • gerade bei der boot-partition macht auch ReiserFS sinn.
    • # mkswap /dev/sda2
    • # mkfs.ext3 /dev/sda3
  • root-Dateisystem mounten
    • # mount /dev/sda3 /mnt/gentoo
  • in das root-Dateisystem wechseln
    • # cd /mnt/gentoo
  • browser ist links
  • stage3-tarball laden
    • /mnt/gentoo # wget de.mirror.org/distro/gentoo/releases/amd64/2008.0/stages/stage3-amd64-2008.0.tar.bz2
  • aktuellen portage cache laden
    • /mnt/gentoo # wget de-mirror.org/distro/gentoo/snapshots/portage-20080821.tar.bz2
    • um den aktuellsten zu bekommen, benutze wget de-mirror.org/distro/gentoo/snapshots/portage-latest.tar.bz2 ich moechte es hier reproduzierbar halten
  • tarballs entpacken
    • /mnt/gentoo # tar -xvf stage3-amd64-2008.0.0.tar.bz2
    • /mnt/gentoo # cd usr
    • /mnt/gentoo/usr # tar -xvf ../portage-20080821.tar.bz2
  • System zum chroot vorbereiten
    • # mount /dev/sda1 /mnt/gentoo/boot
    • # mount -o bind /dev /mnt/gentoo/dev
    • # mount -t proc none /mnt/gentoo/proc
    • # cp /etc/resolv.conf /mnt/gentoo/etc/ ; DNS-informationen<F2>
  • chrooten
 # chroot /mnt/gentoo
      • Ab jetzt sind wir im userland der neuen installation!
  # env-update && source /etc/profile
  # nano /etc/make.conf
   CFLAFGS="-O2 -march=athlon64 -pipe" ; C optimieren für athlon64
   CXXFLAGS="-O2 -march=athlon64 -pipe" ; C++ optimieren für athlon64
   USE="unicode nls ncurses mmx sse sse2" ; unicode + nls: anständige darstellng von zeichen, ncurses: cli-support, der rest sind cpu-erweiterungen 
   MAKEOPTS="-j3" ; lässt 3 gcc instanzen parallel beim kompilieren laufen - faustregel: anzahl kerne + 1
   //save+exit (Ctrl+X...)
 nano /etc/conf.d/keymaps
   KEYMAP="de"
  # mkdir /etc/portage
  # echo "app-editors/vim-core bash-completion" >> /etc/portage/package.use
  # echo "app-editors/vim bash-completion" >> /etc/portage/package.use
  # echo "app-admin/eselect bash-completion vim-syntax" >> /etc/portage/package.use
  # emerge -av =app-editors/vim-7.2
  # emerge -av =sys-kernel/gentoo-sources-2.6.25-r7 ;  wenn man bei emerge eine bestimmte version möchte, muss man dies 

auf diese weise angeben: =kategorie/paket-version

  # echo "sys-kernel/genkernel bash-completion" >> /etc/portage/package.use ;  um die anwendungen anzupassen, kann man 

die in emerge -av [paket] aufgelisteten USE-flags setzen

  # emerge -av =sys-kernel/genkernel-3.4.10-r1
  # emerge -av eix
  # vi /etc/fstab 
   /dev/sda1 /boot [...]
   /dev/sda2 swap  [...]
   /dev/sda3 /     [...]
  # genkernel all --menuconfig --splash ; menuconfig: manuelles einstellen der kernel-configuration, splash: framebuffer-console
   General Setup -> Local Version = +0.1
   Processor type and features -> Processor family = Opteron/Athlon64...
   Device Drivers -> <M> Connector - unified userspace <-> kernelspace linker
   Device Drivers -> Graphics support -> Console display driver support -> [*]Enable Scrollback Buffer in System RAM
   Device Drivers -> Graphics support -> Console display driver support -> Scrollback Buffer Size (in KB) = 1024
   File Systems -> <M> OCFS2 file system support
   Cryptographic API -> <M> Whirlpool digest algorithms
   Exit & warten, bis Kernel und Module rdy sind..."this may take some time."
  # vi /etc/conf.d/hostname ; HOSTNAME setzen
   HOSTNAME="HAKMadam" bzw. HOSTNAME="HAKMeva"
  # vi /etc/conf.d/net 
   config_eth0=( "192.168.1.2 netmask 255.255.255.0 brd 192.168.1.255" )
   config_eth1=( "192.168.2.1 netmask 255.255.255.0 brd 192.168.2.255" )
   dns_domain_lo="HAKMeden"
  # ln -s /etc/init.d/net.eth0 /etc/init.d/net.eth1
  # rc-update add net.eth0 default ;netzwerk beim booten starten
  # rc-update add net.eth1 default ;netzwerk beim booten starten
  # vi /etc/hosts
   127.0.0.1   HAKMadam.HAKMeden HAKMadam localhost ;bzw jeweils HAKMeva
   
   192.168.2.1 HAKMadam.HAKMeden HAKMadam
   192.168.2.2 HAKMeva.HAKMeden HAKMeva
  # vi /etc/conf.d/clock
   CLOCK="local"
   TIMEZONE-"Europe/Berlin"
  # emerge =app-admin/metalog-0.8-r1 ;logging fuers fehlerfinden und so
  # emerge =sys-apps/slocate-3.1-r1 ;dateien suchen
  # emerge =net-misc/dhcpcd-3.2.3  ;fuer lan, zumindest beim setup
  # emerge -av =sys-boot/grub-0.97-r6 ; emerge bootloader
  # vi /boot/grub/grub.conf
   timeout 3
   title Gentoo 2.6.25-r7
   root (hd,0)
   kernel /kernel-genkernel-x86_64-2.6.25-gentoo-r7+0.3 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 vga=0x317 udev
   initrd /initramfs-genkernel-x86_64-2.6.25-gentoo-r7+0.3
  # grep -v rootfs /proc/mounts > /etc/mtab ; mtab gibts nicht, weil das ein chroot-system ist. muss aber fuer grub-install erstellt werden, und rootfs hat da nix drinne zu suchen.
  # grub-install --no-floppy /dev/sda
  # passwd ; root-passwd setzen
  # exit ; chroot system wird verlassen
  # cd ; raus aus dem mountpoint von /dev/sda3 o.ae.

usb-platte fuer sicherung anschliessen und mounten

 # mkdir /mnt/usb
 # mount /dev/sdb1 /mnt/usb
 # umount /mnt/gentoo/* ; /proc, /boot und /dev, der rest wird ignoriert
 # mount /dev/sda1 /mnt/gentoo/boot
 # tar -czvf /mnt/usb/HAKM-amd64-stage4.tar.gz /mnt/gentoo/* 
 # umount /mnt/gentoo/boot
 # umount /mnt/gentoo
 # reboot

Wir booten in das System. Alles sollte gut laufen. wir werden wahrscheinlich kein netz haben, da per default der pc auf 192.168.1.2 geht, und keine routen einrichtet dhcp starten wir mit

  • # dhcpcd eth0

dann installieren wir links:

  • # emerge -av =www-clients/links-2.1

wir gehen auf http://jan.rshost.de/ebuilds/ und laden uns die drbd-ebuilds herunter. wir richten uns einen portage-overlay ein, damit wir eigene ebuilds benutzen koennen

  • # vi /etc/make.conf
    • PORTDIR_OVERLAY="/usr/local/portage"
  • # mkdir /usr/local/portage

wir fuegen unsere ebuilds hinzu. Sie sind in der kategorie sys-cluster. also erstellen wir in unserem overlay einen ordner "sys-cluster"

  • # mkdir /usr/local/portage/sys-cluster

jedes paket braucht einen eigenen ordner. also:

  • # mkdir /usr/local/portage/sys-cluster/drbd
  • # mkdir /usr/local/portage/sys-cluster/drbd-kernel

jetzt werden die ebuilds in die entsprechenden Ordner verschoben:

  • # mv drbd-8.2.6.ebuild /usr/local/portage/sys-cluster/drbd/
  • # mv drbd-kernel-8.2.6.ebuild /usr/local/portage/sys-cluster/drbd-kernel/

drbd-kernel braucht noch einen patch.dieser kommt in den unterordner files:

  • # mkdir /usr/local/portage/sys-cluster/drbd-kernel/files
  • # cd /usr/local/portage/sys-cluster/drbd-kernel/files
  • # cp /usr/portage/sys-cluster/drbd-kernel/files/drbd-kernel-8.0.0-scripts.adjust_drbd_config_h.sh.patch ./

auch drbd braucht eine datei

  • # mkdir /usr/local/portage/sys-cluster/drbd/files
  • # cd /usr/local/portage/sys-cluster/drbd/files
  • # cp /usr/portage/sys-cluster/drbd/files/drbd-8.0.rc ./

Damit Portage die Pakete in den Cache aufnimmt, muessen sie erst "verdaut" werden:

  • # ebuild /usr/local/portage/sys-cluster/drbd/drbd-8.2.6.ebuild digest
  • # ebuild /usr/local/portage/sys-cluster/drbd-kernel/drbd-kernel-8.2.6.ebuild digest

404-fehler sind kein problem, das heisst nur, dass dieser mirror die datei nciht hat. ein anderer hat sie bestimmt. jetzt kann drbd installiert werden:

  • # emerge -av drbd

dann die configfile:

  • # vi /etc/drbd.conf ; ja, die datei gibt es noch nicht
    • siehe cluster-files/drbd.conf
  • # rc-update add drbd default

Wenn alles problemlos lief, wieder sichern, diesmal mit dem dateinamen HAKM-amd64-4.5.tar.gz den anderen node partitionieren, tarballs entpacken, hostnames und IPs anpassen,dann installieren wir links:

  • # emerge -av =www-clients/links-2.1

wir gehen auf http://jan.rshost.de/ebuilds/ und laden uns die drbd-ebuilds herunter. wir richten uns einen portage-overlay ein, damit wir eigene ebuilds benutzen koennen

  • # vi /etc/make.conf
    • PORTDIR_OVERLAY="/usr/local/portage"
  • # mkdir /usr/local/portage

wir fuegen unsere ebuilds hinzu. Sie sind in der kategorie sys-cluster. also erstellen wir in unserem overlay einen ordner "sys-cluster"

  • # mkdir /usr/local/portage/sys-cluster

jedes paket braucht einen eigenen ordner. also:

  • # mkdir /usr/local/portage/sys-cluster/drbd
  • # mkdir /usr/local/portage/sys-cluster/drbd-kernel

jetzt werden die ebuilds in die entsprechenden Ordner verschoben:

  • # mv drbd-8.2.6.ebuild /usr/local/portage/sys-cluster/drbd/
  • # mv drbd-kernel-8.2.6.ebuild /usr/local/portage/sys-cluster/drbd-kernel/

drbd-kernel braucht noch einen patch.dieser kommt in den unterordner files:

  • # mkdir /usr/local/portage/sys-cluster/drbd-kernel/files
  • # cd /usr/local/portage/sys-cluster/drbd-kernel/files
  • # cp /usr/portage/sys-cluster/drbd-kernel/files/drbd-kernel-8.0.0-scripts.adjust_drbd_config_h.sh.patch ./

auch drbd braucht eine datei

  • # mkdir /usr/local/portage/sys-cluster/drbd/files
  • # cd /usr/local/portage/sys-cluster/drbd/files
  • # cp /usr/portage/sys-cluster/drbd/files/drbd-8.0.rc ./

Damit Portage die Pakete in den Cache aufnimmt, muessen sie erst "verdaut" werden:

  • # ebuild /usr/local/portage/sys-cluster/drbd/drbd-8.2.6.ebuild digest
  • # ebuild /usr/local/portage/sys-cluster/drbd-kernel/drbd-kernel-8.2.6.ebuild digest

404-fehler sind kein problem, das heisst nur, dass dieser mirror die datei nciht hat. ein anderer hat sie bestimmt. jetzt kann drbd installiert werden:

  • # emerge -av drbd

dann die configfile:

  • # vi /etc/drbd.conf ; ja, die datei gibt es noch nicht
    • siehe cluster-files/drbd.conf
  • # rc-update add drbd default

Wenn alles problemlos lief, wieder sichern, diesmal mit dem dateinamen HAKM-amd64-4.5.tar.gz den anderen node partitionieren, tarballs entpacken, hostnames und IPs anpassen, chrooten und grub installieren. neustarten und von der internen platte booten

Jetzt sollte es ein device /dev/drbd0 geben. jetzt koennen wir weiter konfigurieren.

  • # drbdadm create-md ha ; auf adam UND eva ausfuehren
  • # drbdsetup /dev/drbd0 primary --overwrite-data-of-peer ; nur auf adam ausfuehren

jetzt synchronisieren die nodes. um den status zu ueberwachen hilft ein

  • # watch -n 1 "cat /proc/drbd" ; beliebig mit greps gefolgt.

wenn beide UpToDate sind, ist drbd fertig. Am besten noch 2mal neustarten, um zu sehen, ob das auch alles sofort beim booten klappt.

Jetzt fangen wir mit der installation vom Oracle Cluster Filesystem 2 (ocfs2) an. Das Verzeichniss /usr/local/portage/sys-fs/ocfs2-tools/ erstellen. Den inhalt von http://bugs.gentoo.org/attachment.cgi?id=163410 in die Datei ocfs2-tools-1.4.1.ebuild schreiben. jetzt noch ebuild /usr/local/portage/sys-fs/ocfs2-tools/ocfs2-tools-1.4.1.ebuild digest ausfuehren.

  • # echo "=sys-fs/ocfs2-tools-1.4.1 ~*" >> /etc/portage/package.keywords
  • # emerge -av =sys-fs/ocfs2-tools-1.4.1

Jetzt die Konfigurationsdatei ./cluster-files/cluster.conf nach /etc/ocfs2/cluster.conf kopieren, gegebenenfalls anpassen.


chrooten und grub installieren. neustarten und von der internen platte booten

Jetzt sollte es ein device /dev/drbd0 geben. jetzt koennen wir weiter konfigurieren.

  • # drbdadm create-md ha ; auf adam UND eva ausfuehren
  • # drbdsetup /dev/drbd0 primary --overwrite-data-of-peer ; nur auf adam ausfuehren

jetzt synchronisieren die nodes. um den status zu ueberwachen hilft ein

  • # watch -n 1 "cat /proc/drbd" ; beliebig mit greps gefolgt.

wenn beide UpToDate sind, ist drbd fertig. Am besten noch 2mal neustarten, um zu sehen, ob das auch alles sofort beim booten klappt.

Jetzt fangen wir mit der installation vom Oracle Cluster Filesystem 2 (ocfs2) an. Das Verzeichniss /usr/local/portage/sys-fs/ocfs2-tools/ erstellen. Den inhalt von http://bugs.gentoo.org/attachment.cgi?id=163410 in die Datei ocfs2-tools-1.4.1.ebuild schreiben. jetzt noch ebuild /usr/local/portage/sys-fs/ocfs2-tools/ocfs2-tools-1.4.1.ebuild digest ausfuehren.

  • # echo "=sys-fs/ocfs2-tools-1.4.1 ~*" >> /etc/portage/package.keywords
  • # emerge -av =sys-fs/ocfs2-tools-1.4.1

Jetzt die Konfigurationsdatei ./cluster-files/cluster.conf nach /etc/ocfs2/cluster.conf kopieren, gegebenenfalls anpassen.