HA-Cluster

Aus CCC Bremen
Version vom 2. September 2008, 23:42 Uhr von Keks (Diskussion | Beiträge) (Beginn einer Gentoo-HA-Cluster Doku. Nicht vollstaendig, und auch noch nicht laufend...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
  • 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
    • 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.