Jeg har en loadbalancer (haproxy) foran mine web-server / web-services, primært fordi jeg kun har 1 offentlig ip til rådighed, dette giver lidt forskellige udfordringer.
I laaaangtid har jeg kunne klare mig med en apache reverse proxy, men da jeg pt. roder / tester nogle Microsoft Rpc_over_http(s) ting, som apache2 ikke understøtter/vil understøtte, er HAproxy kommet i spil, hvilket er helt fint, når man lige lære den lidt af kende.

Et par ting jeg har lært.

Klassisk har jeg haft nogle <Directory>  som er blokkeret sådan de ikke kan tilgåes ude fra internettet eller kun meget få offentlige ipaddresser f.eks. administrations sider, dette er ingen problem sålangt tid at den gamle Apache reverse proxy videre gav client site ipaddressen til backenden, men da jeg nu er afhængig af Haproxy og  X-Forwarded-For mulighederne, ser en <Directory> nu lidt anderledes ud.

De 2 nestående er eksemple IP, samt intern lan som vil få adgang til websiden "/admin" 

<Directory /var/www/mitweb/admin>
        SetEnvIF X-Forwarded-For "192.168.1.[1-254]|173.12.19.2" AllowIP
        Options Indexes Multiviews FollowSymLinks
        AllowOverride All
        Order Deny,Allow
        Deny from all
        Allow from env=AllowIP
</Directory>

For at dette kan lade sig gøre skal Option forwardfor være i Haproxy's Backend config til webserveren.

backend bk_webhotel
mode http
option forwardfor
option http-server-close
cookie JSESSIONID prefix
server webhotel 192.168.2.2:80 check

Naturligvis skal apache2.conf på Debian ændres sådan man ser client ipaddresse  apache log'en også, på debian skal følgende linjer ændres, hvilket blot er at følge hvad der er angivet i conf filen.

vi /etc/apache2/apache2.conf

# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
#LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
#LogFormat "%h %l %u %t \"%r\" %>s %O" common

LogFormat "%v:%p %{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O" common

Herefter skal apache2 naturligvis en tur rundt før dette får en effekt.

med tidsrum rammer man ind i hardware som enten er for nyt til at der er opensource drivers eller at leverandøren ikke stille dette tilrådighede, det er naturligvis træls hvis man ønsker at "pxe" hardware og mangler netværks kortet eller disk controller.

Løsning er at følge denne guide på Debian Wiki :-)  meget meget simplet.

https://wiki.debian.org/DebianInstaller/NetbootFirmware

jeg selv skulle have tilføjeret Binary firmware for Broadcom NetXtremeII  som hentes her:  https://packages.debian.org/squeeze/firmware-bnx2

Microsoft best Practices
http://technet.microsoft.com/en-us/library/dn720239.aspx

Heruder at skifte disk scheduleren til noop.

hvilket gøre ved at editere i grub

vi /etc/default/grub
GRUB_CMDLINE_LINUX="elevator=noop"
update-grub2
reboot

se den aktive scheduler gøres ved at kalde
cat /sys/block/sda/queue/scheduler
noop deadline [cfq]

en heden som står med [] er default disk scheduler

efter reboot

cat /sys/block/sda/queue/scheduler
[noop] deadline cfq

 

Et part noter omkring brug af RapidSSL til apacheer det f.eks. bestilles via billigssl.dk som videre sælger disse certificater til 100 kr. incl moms hvilket er billigt og jeg finder dem fine nok til at sikre "private" sider.

Når man går i gang skal man have en sekundær mail adresse tilrådighed for domainet, disse skal være en af de faste system email navne, så som This email address is being protected from spambots. You need JavaScript enabled to view it. / This email address is being protected from spambots. You need JavaScript enabled to view it. / This email address is being protected from spambots. You need JavaScript enabled to view it. / This email address is being protected from spambots. You need JavaScript enabled to view it. / This email address is being protected from spambots. You need JavaScript enabled to view it. og skal bruges til at verificer at du har kontrollen over domainet.

Dan en key

openssl genrsa -des3 -out www.domain.xx.key 2048

Fjern kodeordet fra key'en

openssl rsa -in www.domain.xx.key -out www.domain.xx.key.unsecure

lav csr til bestilling af certificat.

openssl req -new -key www.domain.xx.key -out www.domain.xx.csr

Når bestillings processen er gennemført og man får tilsendt sin crt samt intermitiate crt, skal man f.eks. hvis man henter disse ud via OWA, sætte disse ind i wordpad hvis man er på en Windows boks, før disse igen kopieres til www.domain.xx.crt filen på webserveren ellers begynder man at se fejl som nedestående og apache stopper med at køre:
[error] Unable to configure verify locations for client authentication
[error] SSL Library Error: 151441510 error:0906D066:PEM routines:PEM_read_bio:bad end line

DVS. pas på hvilke file format man får hentet crt ud med, CR / CR LF og htlm kode har naturligevis en indvirkning på certificat filerne.
´

I apache sites filen defineres pathen til disse 3 filer.

SSLCertificateFile /etc/apache2/ssl/www.domain.xx.crt
SSLCertificateKeyFile /etc/apache2/ssl/www.domain.xx.key.unsecure
SSLCACertificateFile /etc/apache2/ssl/www.domain.xx.crt.intermediate

Historien fra idag:

KVM hosten der triller gw.mxbox.dk og web-serveren som køre dette site, døde i nat med en disk fejl, i dennes RAID 1
Jeg havde ikke få lavet mit raid 1 grub konfiguration korrekt, sådan at den kunne boote på den sekundære disk, den primære disk sagde en "lyd" som de fleste it-folk kan genkende, lyden af et sata disk som ikke kan spinne op, Thuu thuu thuu, vil jeg gætte på lyd-sproget kan gengives med.

Ny hardware til en KVMhost blevet fundet i gemmerne, vigtigst var at den cpu mæssigt understøttede KVM.
egrep '(vmx|svm)' --color=always /proc/cpuinfo vil verficier om hardwaren understøtter KVM.
OBS.  en Hyper-V 2012 R2 guest, understøtter ikke de rigtige cpu features som kræves for at køre KVM. "been there, done that"

installation er debian wheezy standard, på hardware.
installation af KVM på debian <-  http://www.howtoforge.com/virtualization-with-kvm-on-a-debian-squeeze-server samt http://www.server-world.info/en/note?os=Debian_7.0&p=kvm 

Tag den virkende harddisk ud af den gamle server, og tilslutte den nye server via USB.

Kør nedestående for at finde hvilket /dev/sd? som usb diske kan findes under.
 fdisk -l

Hos mig viste det at diske lå som /dev/sde

herefter skal mdadam før benyttes, da den gamle disk var med Linux software raid.

mdadm --assemble --run /dev/md9 /dev/sde2

mkdir /mnt/test
mount /dev/md9 /mnt/test

Herefter kunne de gamle *.img filer hentes fra nedenstående mappe.

cp -r /mnt/test/var/lib/libvirt/images/*.img /var/lib/libvirt/images/

Config filerne kunne hentes fra

cp -r /mnt/test/etc/libvirt/qemu/*.xml /etc/libvirt/qemu/

Nu skal KVM guest blot registeret igen, udfra *.xml filerne.

virsh define /etc/libvirt/qemu/guestnavn.xml

og maskinerne startes på ny

 virsh start guestnavn

Mine sites køre alle igen, 2 -3 timers søndags arbejde, hvor det meste skyldes kopiering af images fra USB til den nye server diske.