Migratie

0

Aangezien ik zaterdag ga verhuizen ben ik druk aan het opruimen. Zo ook digitaal. Alle data, documenten, foto’s en video’s eens naar een centrale plek zetten. Toch wel een stuk makkelijker met het maken van back-ups. Nu nog even de time-machine in het datacentrum hangen. Iemand nog een plekje over?

ISP Kartcompetitie 2010

0

De ISP-Kartcompetitie 2010 zit er weer op. Was ik net bijgekomen van 4 dagen feest hard werken tijdens Webhostingday 2010 in Phantasialand in Keulen was het volgende evenement er alweer. En een evenement waarbij de organisatie in handen van Dave is, dan kom je natuurlijk niets tekort. Zo zat ik ‘s middags rond de klok van 1 uur al aan de coctails.

Het karten heb ik overgeslagen, anderen kunnen dit veel beter dan mij. Ik houd het wel bij Mariokart. Ook het lasergamen heb ik voorbij laten gaan omdat ik mijn aimbot en wallhacks niet bij me had. Bleef over het socialisen. Altijd leuk om veel bekenden bij elkaar te treffen die je doorgaans enkel op IRC of fora ziet. Een speciale dank aan @domenico, die gewoon verde Bossche bollen bij zich had!

Goed, nog even wat foto’s:

Gratis ESXi High Availlability

3

Soms wil je een hoge beschikbaarheid bouwen voor servers maar heb je een klein budget. Nu kun je met allerlei open source software gaan knutselen en rommelen en daarbij gemakshalve vergeten hoeveel uren je hiermee bezig bent om het maar goedkoop te laten lijken. In het verleden heb ik voor een klant wel eens een High Availlability (HA) set-up gemaakt op basis van twee Dell R200 servers met ESXi 3.5 (update 2) en een Linksys NAS. De investering voor hardware was amper 2000 euro voor deze omgeving, het aantal uren om alles werkend te krijgen was 4, inclusief testen en documentatie.

Om te beginnen zal ik zeggen dat HA in een klein aantal gevallen voordelen zal bieden. Het zal je namelijk enkel beschermen tegen uitval aan hardware. Met moderne hardware is de kans op storingen echter minimaal, de meeste fouten (>90%) kent nog steeds een menselijke oorzaak. Dat gezegd hebbende: let’s rock!

Op beide servers installeer je VMware ESXi. Destijds heb ik het met versie 3.5 (update 2) gedaan. Of het met vSphere danwel ESXi4 nog steeds werkt: geen idee. Installeer de storage, (iSCSI heeft de voorkeur boven NFS) en zorg dat beide servers bij dezelfde storage pool kunnen komen.

Vanuit beide nodes gaan we een heartbeat doen, dan wil zeggen kijken of de andere server nog beschikbaar is. Wanneer dit gedurende 15 pings niet zo is (dit is een relatief korte tijd, maar wachten tijdens testen is vervelend omdat systeembeheerders altijd ongeduldig zijn) dan zal hij de virtuele servers gaan opstarten op de andere node. We maken hiervoor een script met de naam esx_ha.sh en zetten deze in de /usr/bin. Zorg er wel voor dat het script uitvoerbaar is.

#!/bin/bash
if ! ping -c 14 10.0.0.1 > /dev/null; then
for $i in `cat /etc/other_host` ; do vmware-cmd -s register $i  && vmware-cmd $i start ; done
fi
sleep 16
if ! ping -c 14 10.0.0.1 > /dev/null; then
for $i in `cat /etc/other_host` ; do vmware-cmd -s register $i  && vmware-cmd $i start ; done
fi

Vervolgens moeten we een lijst van alle virtual machines hebben. Dat doen we met het onderstaande commando. Voer deze op beide ESXi hosts uit en SCP deze dan naar de andere ESXi node toe in de /etc directory. In het bestanbd komt een lijst met alle geregistreerde VM’s. Deze kun je nog bewerken omdat er mogelijk machines in staan die je geen HA wil geven. Ook de volgorde is belangrijk, omdat de bovenste VM als eerste opgestart gaat worden bij een storing. De sleep 16 waarde geeft de tijd tussen het opstarten weer.

vmware-cmd -l | sed ’s/\ /\\ /g’ > /root/other_host

Wat we nu nog moeten doen is een crontab aanmaken die elke minuut zal draaien om te kijken of de andere host nog leeft. Nu snap je ook waarom het eerste script eigenlijk dubbel uitgevoerd is. We kunnen een cron namelijk enkel eens per minuut laten lopen. Met de sleep 16 waarde zetten we de lopende cron in de wacht. Tel hier de (2x) 14 pingpogingen bij en je zult precies op 60 seconden uitkomen. Onderstaande kun je in je /etc/crontab zetten op ESXi hosts.

MAILTO=”mail@example.com”
* * * * * /usr/bin/esx_ha.sh

Bovenstaande is natuurlijk verre van een nette oplossing voor bedrijfskritische toepassingen maar wel een leuk voorbeeld om in een lab uit te voeren. Probeer zelf te achterhalen wat ieder commando doet en ga niet klakkeloos lopen copy/pasten omdat je anders de werking ervan niet gaat snappen.

Webhostingday 2010: de foto’s

2

Zo, terug van Webhostingday 2010 en weer heerlijk bijgeslapen. Vandaag om 13.37 uur ging de wekker dan en ben ik weer hard aan het werk gegaan met wachtende e-mails en de verplichte huishoudelijke taken. Nu vond ik het tijd voor de foto’s en ze staan inmiddels online. Er missen wel wat foto’s maar dat klopt wel. Some things are better left unsaid of zoals afgesproken: What happends in Cologne stays in Cologne :-) .

Tot volgende week zaterdag op de afterparty!

HELP, CSF zegt: “IPv6 is fout!”

1

CSF firewall, een leuke tool die IPtables onder linux servers kan aansturen en waarbij je op DirectAdmin en Plesk servers ook nog een leuke grafische integratie hebt in je controlpanel. Een ideale tool voor mensen die simpel en makkelijk een firewall op de server willen installeren, zonder enige vorm van kennis.

Dit laatste punt is nu een probleem. In CFS zit een ‘check server security’ functie en een standaard CentOS + DirectAdmin installatie is verre van goed of veilig. Ik heb wel eens klanten die geen rootpassword hebben maar me wel een shared hostingpakket kunnen geven. Binnen 30 seconden hack ik die machines dan.

Een van de foutmeldingen in CSF die me verbaast is de melding die hij geeft over IPv6. Eigenlijk een waarschuwing, waarbij het advies gegeven wordt om IPv6 maar uit de kernel te slopen. WTF?! IPv6 komt eraan en snel ook. Wanneer je nog geen IPv6-adressen hebt moet je hard zeuren bij je provider. Volgens jaar waneer de IPv4-adressen op zijn, ontkom je er toch niet aan.

Ga dus niet IPv6 support uit de kernel slopen om het straks weer aan te zetten. Iedere Redhat (CentOS) 5 server heeft standaard een IPv6 local-link adre en dit kan weinig tot geen kwaad. Wat is dan wel de goede oplossing? In de speeltuin poste ik hem al: gebruik ip6tables om gewoon alle poorten te firewallen, al zal ik zelf het advies geven poort 53 open te laten zodat in ieder geval je DNS-server ook over IPv6 te bereiken is, zie deze post.

Goed, het scipt. Mocht je nog géén IPv6 adres van je provider gehad hebben, laat dat de regel met deze variabele (regel 3) weg. Hetzelfde geldt voor de regels waar deze variabele gebruikt wordt, in mijn voorbeeld is dit om alleen poort 22 (SSH) open te zetten.

Update 29-03-2011 n.a.v. dit topic op Webhostingtalk. Dank!

#!/bin/sh
# My system IP/set ip address of server
SERVER_IP=" 2001:db8::1337"
# Flushing all rules
ip6tables -F
ip6tables -X
# Setting default filter policy
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP
# Allow unlimited traffic on loopback
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT
# Allow incoming ssh only
ip6tables -A INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 22 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT

#ICMP errors and unreachables. Split out into subtypes.
# 4x subtypes of destination unreachable (type 1)
ip6tables -A INPUT -p icmpv6 --icmpv6-type no-route                   -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type communication-prohibited   -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type address-unreachable        -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type port-unreachable           -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type destination-unreachable      -j ACCEPT
#Type 2, packet too big
ip6tables -A INPUT -p icmpv6 --icmpv6-type packet-too-big               -j ACCEPT
# 2x subtype of time-exceeded (type 3)
ip6tables -A INPUT -p icmpv6 --icmpv6-type ttl-zero-during-transit    -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type ttl-zero-during-reassembly -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type time-exceeded                -j ACCEPT
# 3x subtype of parameter-problem (type 4)
ip6tables -A INPUT -p icmpv6 --icmpv6-type bad-header                 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type unknown-header-type        -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type unknown-option             -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type parameter-problem            -j ACCEPT
#Multicast listener query
ip6tables -A INPUT -p icmpv6 --icmpv6-type 130                          -j ACCEPT
#Multicast listener report
ip6tables -A INPUT -p icmpv6 --icmpv6-type 131                          -j ACCEPT
#Multicast listener done
ip6tables -A INPUT -p icmpv6 --icmpv6-type 132                          -j ACCEPT
#MLDv2 Multicast Listener Report RFC3810
ip6tables -A INPUT -p icmpv6 --icmpv6-type 143                          -j ACCEPT

# 4x subtypes of destination unreachable (type 1)
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type no-route                   -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type communication-prohibited   -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type address-unreachable        -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type port-unreachable           -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type destination-unreachable      -j ACCEPT
# Type 2, packet to big
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type packet-too-big               -j ACCEPT
# 2x subtype of  time-exceeded (type 3)
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type ttl-zero-during-transit    -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type ttl-zero-during-reassembly -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type time-exceeded                -j ACCEPT
# 3x subtype of parameter-problem (type 4)
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type bad-header                 -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type unknown-header-type        -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type unknown-option             -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type parameter-problem            -j ACCEPT
#Multicast listener query
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type 130                          -j ACCEPT
#Multicast listener report
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type 131                          -j ACCEPT
#Multicast listener done
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type 132                          -j ACCEPT
#MLDv2 Multicast Listener Report RFC3810
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type 143                          -j ACCEPT

# More and less necessary icmpv6 traffic
# type 128 : echo request
# type 129 : echo reply
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-reply   -m state --state ESTABLISHED     -j ACCEPT
# type 133 : router solicitation
# type 134 : router advertisement.
# Not needed in case of a static next hop address.
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT
# 135 neighbour solicitation
# 136 neighbour advertisement
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-solicitation  -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT
#Seen : Type 143:     MLDv2 Multicast Listener Report. , RFC3810.
#ip6tables -A OUTPUT -p icmpv6 --icmpv6-type 143 -j ACCEPT
# DHCP : only checked on local segment. caveat in case of dhcp relay (reply).
# DHCP v6 : anycast to ff02::1:2 udp port 547
# Reply from link-local server adres to link-local client .
ip6tables -A OUTPUT -p udp -d ff02::1:2 --dport 547 -j ACCEPT
ip6tables -A INPUT  -p udp -s fe80::/10 --sport 547 -j ACCEPT

# ping
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-reply   -m state --state ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -m state --state NEW -j ACCEPT
# type 133 router solicitation
# type 134 router advertisement
# type 135 neighbour solicitation
# type 136 neighbour advertisement
#
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement     -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation   -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT

# make sure nothing comes or goes out of this box
ip6tables -A INPUT -j LOG
ip6tables -A INPUT -j DROP
ip6tables -A OUTPUT -j LOG
ip6tables -A OUTPUT -j DROP

ISPI en Wiseadvise samen verder

0

ISPI, leverancier van zakelijke en betrouwbare internetdiensten, gaat per 14 maart haar diensten onder de vlag van wiseadvise business solutions aanbieden.

Voor bestaande klanten van ISPI zal er niks veranderen aan hun producten en diensten. Wel zal de facturering vanaf 1 april worden verzorgd door wiseadvise en kunnen klanten terecht bij de servicedesk van wiseadvise.

Erik Hazeleger: “Door het samengaan met ISPI zijn we in staat om een nog uitgebreider pakket van diensten aan te bieden. We zijn zeer content met deze uitbreiding en hebben alle vertrouwen in de toekomst. We willen graag in contact treden met onze nieuwe klanten om ons voor te stellen.”

Randy ten Have, oprichter van ISPI, zal de overgang op de achtergrond blijven begeleiden en bij wiseadvise een adviserende functie betrekken.

En hiermee heb ik doel 2010-01 ook af: www.ispi.nl.

Hoe stond het ook alweer met…

1

Enige tijd geleden stelde me ik twee doelen. Doel 2010-01 was mijn website afmaken, doel 2010-02 was verhuizen en terug de schoolbankjes in, om een deeltijdopleiding te gaan volgen bij de HvA in Amsterdam. Dit eventueel in combinatie met een nieuwe baan. Nou, die nieuwe baan is er, dus doel 2010-01 (website) is niet meer nodig. Ik had de luxe keuze uit meerdere partijen, in aanbod/salaris, visie en bedrijfsformaat variërend. De keuze is gevallen op kleinschalig met een bedrijfsvisie waar ik zelf helemaal achter sta. Salaris was voor mij niet het doorslaggevende punt (nou ja, geen van allen was slecht), want er is meer in het leven dan geld. En om nu dagelijks met tegenzin naar werk te gaan, waar je vervolgens één van de 100 medewerkers bent, dat is niet mijn ding.

Voor de nieuwe baan gaan er wel wat zaken veranderen. Na enkele jaren freelancen, wisselende werktijden hebben en soms meerdere avonden, nachten of weekeinden in de week gewerkt te hebben komt hier wat meer regelmaat in. Elke morgen om even voor 8 uur gaat de wekker dan. Maar wat ook gaat veranderen, is dat ik niet meer 20 á 30 uur per week hoef te reizen en straks lopend of op de fiets naar werk kan gaan als het meezit. Dat  heb ik in de freelanceperiode slechts eenmaal gehad bij een opdrachtgever in Enschede. Wel zal ik moeten verhuizen naar Alkmaar e.o., maar dat is even een tweetal drukke weken en een behoorlijke zak geld.

Over die zak geld gesproken, pff. Het was wel even schrikken toen ik in het particuliere segment én in de Randstad de woningen bekeek, die doorgaans bij een 800 euro per maand beginnen. Daar komt de eerste maand dan ook nog één of twee maanden borg bij en wil de makelaar of bemiddelaar ook nog eens een maand aan huur + BTW als provisie hebben. Eens kijken hoe ik dat ga financieren, want ik ben al enkele maanden bezig om mijn eigen activiteiten af te bouwen, al was het maar om mezelf ook in ‘een bepaalde hoek’ te zetten, zodat het uitstel-afstel vehaal niet kwam.

Naast het zoeken van een woning ben ik druk in gesprek met een klant waarmee ik de afgelopen jaren veel heb samengewerkt. Hij wil mijn activiteiten voortzetten opdat er voor mijn huidige klanten niets gaat veranderen anders dan mogelijk een nieuw logo op de facturen. Zelf blijf ik de eerste maanden nog even achter de schermen druk bezig om te zorgen dat er een flexibele overgang is en er bij mijn klanten geen overlast komt en blijf ik een groot deel van het beheer doen. Al zal dit laaste wel meevallen, omdat er aan de servers, IP-adressen, etc. niets zal veranderen. Alles blijft netjes in de huidige datacentra in Doetinchem en Amsterdam staan. Wat alleen verandert, is dat ik niet meer rechtstreeks gebeld wil worden. En dat hoeft ook niet omdat er een prima vervanger is.

Later deze maand meer. Voor nu even geen namen, die zijn voor mijn lezers toch niet belangrijk. Maar mocht er een lezer met een busje zijn die zegge rond de Paasdagen een keer van Enschede richting Alkmaar e.o. wil rijden om mijn spullen fysiek over te huizen of één van mijn lezers nog een leuke woning weten in Alkmaar (plm. 30 km.) dan houd ik me zeker aanbevolen.

Businesshardware.nl failliet

0

Grr, vandaag las ik op Tweakers.net dat BusinessHardware.nl failliet is. Het grote voordeel: Het scheelt me een post in de serie “Dikke FAIL voor …”. Ik had er enkele maanden geleden een bestelling gedaan, betaald via iDeal en het werd akelig stil. Navraag leerde dat het artikel niet leverbaar was en het geld zou binnen 30 dagen terug gestort worden. De 30 werden 60 dagen. De 60 dagen werden er 90.

Het geld, € 230,72 is dus weg. Nu kan ik wel een vordering indienen bij de curator maar ik neem aan dat er wel wat preferente schuldeisers zijn en gezien het een webshop was zal de boedel minimaal zijn. Neemt niet weg dat je gewoon een ontzettend probleem hebt als je mij bedonderd. De curator heeft mijn vordering inmiddels. (Update: Vandaag kreeg ik per post een bevestiging van de curator…)

Named op IPv6 laten luisteren

3

Vorige week probeerde één van mijn klanten een Frans .fr-domein te registreren en deze te delegeren naar mijn nameservers: ns1.ispi.nl (IPv4 en IPv6) en ns2.ispi.eu. Dit lukte niet, waardoor de klant contact met mij opnam. Hij stuurde een link van de foutmelding die AFNIC, de beheerder van de .fr-domeinen, hen stuurde. Daarin stond dat AFNIC geen toegang had tot poort 53 op het TCP protocol ip IPv6. (Ik laat nog maar even achterwege dat AFNIC helemaal geen toegang hoeft te hebben tot TCP omdat UDP voldoende moet zijn. TCP wordt enkel gebruikt voor recursion en AXFR. Beiden doe je zeker niet publiek met iedereen)

Ik kijk in het systeem. BIND/Named luistert standaard inderdaad niet op IPv6. Een regel in je named.conf lost dit echter op. Vergeet niet je nameserver te restarten. Mensen die DirectAdmin gebruiken  in combinatie met IPv6 moeten deze regel toevoegen aan hun configuratie.

listen-on-v6 {any; };

AFNIC blij, klant blij en ik blij. Al was het wel eventjes zoeken. Hij luistert nu wel netjes op zowel IPv4 als IPv6. En weer zijn we een stap dichterbij de volledige IPv6-ready status. Er staat best nog veel te gebeuren wil ik mijn deadline van Q2-2010 (infrastructuur) of Q3-2010 (alle services) halen.

[root@sv03 ~]# netstat -an | grep ':53'
tcp 0 0 212.79.254.236:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53      0.0.0.0:* LISTEN
tcp 0 0 :::53             :::*      LISTEN
udp 0 0 212.79.254.236:53 0.0.0.0:*
udp 0 0 127.0.0.1:53      0.0.0.0:*
udp 0 0 0.0.0.0:5353      0.0.0.0:*
udp 0 0 :::53             :::*
udp 0 0 :::5353           :::*

Named op alle IP’s laten luisteren is natuurlijk not done. Dat geldt voor iedere service. Zet je eigen goede IP-adres(sen) even in de configuratie. Ik ga dat hier niet doen omdat sommige n00bs systeembeheerders het dan 1:1 gaan copy/pasten en dat is natuurlijk niet de bedoeling.

Updatenacht aan de HP-servers

7

Zo, 3.40 uur inmiddels alweer. De eerste maandag van de maand (lees: zondag op maandag) heb ik tussen 01:00 en 04:00 een maintenance window. Een vast tijdstip, zodat $klanten weten dat er onderhoud uitgevoerd kan worden aan de infrastructuur. Voor hen die zelf monitoren of de services beschikbaar zijn dé ideale tijd om de monitoring te testen of voor hen die liever willen slapen juist de monitoring in dit tijdstip uit te zetten.

Vannacht stond er een enge update op het programma: de drivers van de raid-controllers en disken. Ook heb ik een aanpassing gedaan aan de write-back cache. Dit is een stuk geheugen op de raid-controllers dat door een batterij gevoed wordt om zo – in geval van stroomuitval – toch de gegevens bewaren die hierop staan maar nog niet weggeschreven zijn naar de disks zelf. Deze verhouding stond op 50/50% voor read/write en is aangepast naar 25/75%. Dit zou meer performance moeten geven, aangezien schrijven naar disks – zeker in raid-5 – erg traag is. Nu schrijf je het dus weg naar de cache op de raid-controller en deze zorgt dat het vanzelf op de disks komt, zonder dat je hierop hoeft te wachten.

Nog even een spannend plaatje van de bootsequence, in dit geval van server esx12.ispi.nl. Het leuke aan HP Proliant servers is de geweldige behersbaarheid. Eens per kwartaal komt er een CD waarvan je (remote) boot, je update alles en klaar ben je. Dus geen tijden meer dat je voor ieder individueel component drivers moet zoeken, testen op geschiktheid, testen op conflicten, etc. Heerlijk. Vanzelfsprekend ga je niet meer naar het datacentrum toe. De iLO2 beheersinterface stelt je in staat om je eigen monitor en CD-drive thuis aan de servers op afstand te koppelen om zo het beheer over te nemen of desnoods de gehele server te reinstallen. Erg nice!

Go to Top