Downtime is an option

“Μου χάλασαν 460 μέρες uptime στο firewall”. Φίλος χτες, κατά τη διάρκεια δοκιμών προσπαθώντας να ξεπεράσει (route arround) το χθεσινό πρόβλημα.

Δεν χωρεί αμφιβολία πως το uptime είναι ένα καλό μέτρο σταθερότητας των συστημάτων που διαχειρίζεται (συντηρεί) ένας system administrator. Το να γίνεται όμως αυτοσκοπός (και μερικές φορές ένα είδος συναδελφικής “κόντρας”) είναι επικίνδυνο:

Συνήθως διαχειριζόμαστε πολλά συστήματα και μηχανές, όχι μόνο ένα-δύο. Τα συστήματα αυτά έχουν αλληλεξαρτήσεις μεταξύ τους, οι οποίες πολλές φορές δεν είναι ούτε καταγεγραμμένες, ούτε προφανείς.

Τα συστήματα που διαχειριζόμαστε εξελίσσονται (μεταλλάσσονται που λέει και ένας καθηγητής μου) με την προσθήκη νέων υποσυστημάτων που “πατάνε” στην παλαιότερη υποδομή. Και ναι, η ικανοποίηση είναι μεγάλη όταν μπορείς να επιτύχεις δραστικές αλλαγές στο σύστημα χωρίς να “κατεβάσεις” μηχάνημα (χωρίς να χαλάσεις το uptime δηλαδή).

Αλλά:

Στη διαδικασία αυτών των αλλαγών μεταβάλλονται κατά τρόπο μη προφανή δύο διαδικασίες:

  • Διαδικασία παύσης όλου του συστήματος
  • Διαδικασία έναρξης όλου του συστήματος

και επηρεάζεται εξίσου και η διαδικασία επανεκκίνησης τμημάτων ή όλου του συστήματος. Πολλές φορές το να έχουν κάποια μηχανήματα υψηλό uptime (πάνω από 6 μήνες κατά τη γνώμη μου) είναι περισσότερο πρόβλημα, παρά στοιχείο υπερηφάνειας:

Μπορεί στο μεσοδιάστημα να έχουν αλλάξει περισσότερους από ένα διαχειριστές, με ότι σημαίνει αυτό ως “χαμένη εμπειρία” για το σύστημα, ειδικά εάν ο παλαιότερος διαχειριστής έχει αλλάξει εργοδότη.

Υψηλό uptime σημαίνει πως τουλάχιστον kernel patches δεν έχουν εφαρμοστεί, με ότι σημαίνει το ρίσκο αυτό κατά περίπτωση. Ναι, ξέρω πως υπάρχουν λειτουργικά συστήματα στα οποία μπορείς να κάνεις upgrade τον kernel χωρίς reboot. Πόσοι δουλεύετε με τέτοια και πόσοι από αυτούς που όντως δουλεύετε με τέτοια κάνετε έτσι τα upgrades;

Πολλές φορές δεν μπορούμε να δουλεύουμε με καινούριες μηχανές. Μερικές φορές κρίσιμη υποδομή ενδέχεται αναγκαστικά να βρίσκεται σε μηχανήματα 10+ χρόνια παλιά. Με το πέρασμα του χρόνου το κάθε μηχάνημα αποκτά τα “χούγια” του (π.χ. ο διακόπτης πρέπει να πατηθεί “κάπως” για να δουλέψει) ενώ ακόμα και στο software που τρέχει το να κάνεις reboot μπορεί να σημαίνει πως κάποιες διαδικασίες πρέπει να τις κάνει υποχρεωτικά με το χέρι πριν το reboot, ή μετά το boot, κ.ο.κ.

Έτσι όταν τα πράγματα θα πάνε στραβά (γιατί θα πάνε) ο χρόνος ανάνηψης είναι τελικά μεγαλύτερος, γιατί την εμπειρία των ιδιαίτερων λεπτομερειών του κάθε συστήματος, υποσυστήματος, μηχανής και την μέθοδο επανεκκίνησης με όλα τα ιδιαίτερα χαρακτηριστικά της, θα πρέπει να την μάθει κανείς (και ελπίζω και να την καταγράψει) εκείνη ακριβώς τη στιγμή, με όλη την πίεση πάνω του.

Και μην ξεχνάμε: 99.999% uptime is for Wal-Mart. Γι’αυτό:

Downtime is not an option.


Ο αρχικός τίτλος του post ήταν: uptime (ή ποιος την έχει μεγαλύτερη)

L.ROOT-SERVERS.NET has changed IP address

L.ROOT-SERVERS.NET has changed IP address to 199.7.83.42. A fellow DNSmaster suggested that I should put it up here. Mark Andrews of ISC posted:

	If you already have a root hints zone defined in named.conf
	you need to update the address in the file it loads from.

	The easiest way to create a new file is to run dig, check
	the contents of the file it generates then move the file
	into place.

		dig ns . @a.root-servers.net > newfile

	If you don't have any root zone defined they you will be
	using the built-in hints.  In this case you should create
	a root hints zone if you don't have a root zone already
	defined and you are using class IN (the default class).

		dig ns . @a.root-servers.net > root-hints

		zone "." {
			type hint;
			file "root-hints";
		};

	If you are not using views you do this at the options level.
	If you are using views you need to define this zone in
	each view of class IN.

	BIND 9.3.5, BIND 9.4.2 (9.4.2rc2) and BIND 9.5.0 (9.5.0a7) will
	have their built-in root hints updated to reflect this change.

	If you wish to change the built in hints apply the attached
	patch.  In the top level directory run.

		patch -p1 < l-root-servers.patch
		make clean
		make

	Mark
-- 
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE:	+61 2 9871 4742		         INTERNET: Mark_Andr...@isc.org

[via comp.protocols.dns.bind]

ΤΣΜΕΔΕ #3

Με δεδομένο πως η διοίκηση του ΤΣΜΕΔΕ αποτελείται κατά τα 3/5 από Μηχανικούς, δηλαδή από ανθρώπους που ξέρουν από συστήματα αναμονής, είναι απορίας άξιο πως κανείς δεν έχει ασχολήθεί με το workflow των ουρών στο Ταμείο. Και μη σκεφτεί κανείς κακή ή ελλειπή μηχανογράφηση. Η διαχείριση ουρών και το indexing εγγράφων είναι προβλήματα για τα οποία υπάρχουν λύσεις αίωνες τώρα.

(#2) (#4)

SKAI Radio

Titanas: “Την Τρίτη 11-12 θα γίνει μια εκπομπή στο ραδιόφωνο του Σκάι […] Θα έρθεις;”

Ambiguity: Σκέφτομαι, “Πρέπει να του απαντήσω από τώρα για την Τρίτη 11 Δεκεμβρίου;”

Τελικά ο Titanas εννοούσε 11 με 12 το πρωί και η εκπομπή έγινε σήμερα Τετάρτη. Στο studio, με τον Άρη Πορτοσάλτε, ο Titanas είχε καλέσει εμένα, τον vrypan και τον Ματθαίο Τσιμιτάκη. Αρχικό θέμα συζήτησης ήταν η σχέση των blogs με τη δημοσιογραφία, αλλά τελικά πρέπει να ήταν το θέμα που θίχτηκε λιγότερο: Συζητήσαμε για τον (πιθανό) εθισμό που προκαλεί το Internet (εάν προκαλεί φυσικά), την ανωνυμία τόσο στο Internet, όσο και στα blogs (μην ξεχνάμε πως το WWW είναι υποσύνολο αυτού που ονομάζεται Internet) και απαντήσαμε και σε 4 ή 5 ερωτήσεις ακροατών.

Οι ερωτήσεις που δεν απαντήθηκαν ήταν πολύ περισσότερες και ελπίζω να μπορέσουμε να τις μαζέψουμε σε ένα σημείο και να τις συζητήσουμε, γιατί ήταν όλες μία και μία.

Ενδιαφέρουσα εμπειρία, είδα τον vrypan από κοντά, γνώρισα τον Ματθαίο και κυρίως, αναθεώρησα τη γνώμη μου για τον Άρη Πορτοσάλτε (εξαιρετικά θετικές εντυπώσεις). Άσε που μετά από δύο πειρατικούς σταθμούς και ένα εντελώς ερασιτεχνικό*, είδα ένα studio πραγματικού ραδιοφώνου.

Πήρα και δουλειά για το σπίτι+.

Ελπίζω ο ΣΚΑΪ να βγάλει την εκπομπή σε mp3 για να μου μείνει σε αρχείο.


[*] – “Οι Άγιοι” στα AM που είχαν τα ξαδέρφια μου, το “Studio Fantasy” του συμμαθητή μου Paul και τον Rock FM Άργους στις αρχές της ιδιωτικής ραδιοφωνίας.

[+] – Νομοσχέδιο σχετικά με τις αρμοδιότητες της ΕΥΠ ως προς το ηλεκτρονικό έγκλημα. Θέλω να το διαβάσω για να δω τι διαφορές έχει με το Π.Δ. 47/2005 (Διαδικασίες-εγγυήσεις άρσης απορρήτου επικοινωνιών & διασφάλισή του).

Χτίζουμε με απλά υλικά

“What may seem at first sight to be a disadvantage, namely that a large number of bits is required to represent a significant amount of information, is in fact only the other side of the coin of versatility; a bit is like a brick, in that it takes a lot of them to make anything interesting, but a very wide range of things can be made out of them, exactly because they have so little built-in structure.”

Είναι μια τόσο καλή, απλή και καθαρή τοποθέτηση που δεν μπορούσα να μην την αντιγράψω.

[via Elementary Theory of Numbers, 1962]

Νεκροταφεία

Πριν μήνες ένας φίλος είχε έρθει επίσκεψη στη δουλειά και με βρήκε σε μια μελαγχολική κατάσταση.

– Πστ! Μεγάλε κοίτα να δεις, το Δημόσιο πρέπει να το δεις σαν ένα πνευματικό νεκροταφείο. Πάρτο απόφαση γιατί μόνο έτσι θα επιβιώσεις, διαφορετικά παραιτήσου γιατί θα τρελαθείς.

Ομολογώ πως αρκετά πράγματα τα είδα με άλλο μάτι μετά από αυτή τη κουβέντα.

Χτες βράδυ, μίλαγα με ένα συνάδελφο που δουλεύει σε μια μεγάλη εταιρία Πληροφορικής (που αναγκαστικά(;) κάνει τα μεγάλα της έργα με το Δημόσιο ή τον Ευρύτερο Δημόσιο Τομέα και τις Τράπεζες):

– Ξέρεις τι λέμε στη δουλειά; Πως οι εταιρίες Πληροφορικής είναι νεκροταφεία Μηχανικών. Σου βγάζουν το Μηχανικό από μέσα σου και σε κάνουν Έμπορα. Σε ευνουχίζουν.

Εσείς εκεί “έξω”: Είναι τόσο δυνατή η διαλυτική δράση του Δημοσίου που σας επηρεάζει και εσάς τόσο; Αυτό φταίει για το take-the-money-and-run attitude που έχουν αναπτύξει οι προμηθευτές;

Υπάρχει ελπίδα;

$#random – a local mailer that returns a random EX_*

I found myself in a situation where I needed a local mailer that was required to return random exit values0 for email directed to certain users. Luckily, most of the job can be done via your .mc file:

MAILER_DEFINITIONS
Mrandom,        P=/opt/bin/random,
                F=lsDFMqbE,
                S=ruleset_noop, R=ruleset_random,
                T=DNS/RFC822/X-Unix,
                A=random $u

LOCAL_CONFIG
C{Random} adamo yiorgos admin system operator
Kcomp arith

LOCAL_RULESETS
Sruleset_noop
# This ruleset does nothing

Sruleset_random
# EX__BASE == 64 and EX__MAX == 78. EX_OK == 0, so we mask it to 79.
R$*             $: $1 . $(comp r $@ 64 $@ 79 $)
R$* . 79        $@ $1 . 0

LOCAL_RULE_0
R$={Random}  < $=w . > $*        $#random $: $1

When $#random is called, ruleset_random is called with $1 (the username) as an argument and returns $1.number, where number is a random number between EX__BASE (64) and EX__MAX (78) or zero. Therefore, the $#random binary is executed with $1.number as an argument.

/opt/bin/random can be as simple as this shell script1:

#!/bin/sh
# This is an example (non) delivery agent and is not considered safe to run on a 
# production server.
status=`echo $1 | sed -e 's/.*\.\(.*\)$/\1/'`

while read x
do
        # noop
done

exit $status

A random EX_* value is returned to the sender of the email, assuming s/he has emailed a local user contained in class $={Random}.


[0] – Valid sendmail exit codes (EX_*) are defined in sysexits.h.
[1] – In my case I wrote the mail delivery agent in C, as I needed to do a few more stuff prior to calling exit().