{"id":40,"date":"2026-04-18T20:00:00","date_gmt":"2026-04-18T18:00:00","guid":{"rendered":"https:\/\/airex.se\/blogg\/redundansen-som-inte-var\/"},"modified":"2026-04-18T20:00:00","modified_gmt":"2026-04-18T18:00:00","slug":"redundansen-som-inte-var","status":"publish","type":"post","link":"https:\/\/airex.se\/blogg\/redundansen-som-inte-var\/","title":{"rendered":"Redundansen som inte var redundant"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Klustret hade tv\u00e5 v\u00e4gar mellan noderna: en snabb via en tiogigabitswitch och en l\u00e5ngsammare via en gigabitswitch. Redundans, med andra ord.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sedan st\u00e4ngdes den snabba switchen av \u2014 den drar str\u00f6m och st\u00e5r normalt avst\u00e4ngd \u2014 och migrering av virtuella maskiner mellan noderna slutade fungera.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Redundans \u00e4r inte en egenskap hos kablarna<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Det fysiska var i sin ordning: varje nod satt i b\u00e5da switcharna. Problemet l\u00e5g ett lager upp.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Det n\u00e4t som klustret anv\u00e4nder f\u00f6r migrering var bara konfigurerat p\u00e5 tiogigabitl\u00e4nkarna. P\u00e5 gigabitv\u00e4gen fanns det inte \u2014 inte som ett fel, utan f\u00f6r att ingen n\u00e5gonsin lagt till det d\u00e4r. Trafiken hade allts\u00e5 exakt en v\u00e4g, trots tv\u00e5 kablar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Det h\u00e4r \u00e4r den vanligaste formen av falsk redundans jag st\u00f6ter p\u00e5. Tv\u00e5 fysiska v\u00e4gar, ett logiskt beroende. Ritningen ser redundant ut. Konfigurationen \u00e4r det inte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Och l\u00e4nken mellan switcharna var d\u00f6d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Under fels\u00f6kningen uppt\u00e4cktes en andra sak, som \u00e4r v\u00e4rre: <strong>f\u00f6rbindelsen mellan de tv\u00e5 switcharna stod nere.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Allts\u00e5 \u2014 \u00e4ven om n\u00e4tet hade varit konfigurerat p\u00e5 b\u00e5da v\u00e4garna hade paketen inte tagit sig fram, eftersom switcharna inte pratade med varandra. Tv\u00e5 oberoende brister som var f\u00f6r sig hade r\u00e4ckt f\u00f6r att omintetg\u00f6ra redundansen, och som tillsammans gjorde att ingen av dem m\u00e4rktes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ingen larmade p\u00e5 den nedlagda l\u00e4nken. Den hade f\u00f6rmodligen legat nere l\u00e4nge. En f\u00f6rbindelse som bara anv\u00e4nds n\u00e4r n\u00e5got annat g\u00e5tt s\u00f6nder \u00e4r osynlig \u00e4nda till den dagen den beh\u00f6vs \u2014 vilket \u00e4r exakt samma dag den inte f\u00e5r vara trasig.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">L\u00f6sningen: l\u00e5t systemet v\u00e4lja sj\u00e4lv<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I st\u00e4llet f\u00f6r att konfigurera en v\u00e4g och hoppas, buntades de tv\u00e5 ihop till ett par med tydlig rangordning: den snabba \u00e4r f\u00f6rstahandsval, den l\u00e5ngsamma st\u00e5r redo. Faller den snabba tar den andra \u00f6ver, och n\u00e4r den snabba kommer tillbaka v\u00e4xlar systemet tillbaka automatiskt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Det ger tv\u00e5 saker. Migrering fungerar \u00e4ven med den str\u00f6mt\u00f6rstiga switchen avst\u00e4ngd \u2014 l\u00e5ngsammare, men den fungerar. Och den l\u00e5ngsamma v\u00e4gen anv\u00e4nds <em>ibland<\/em>, vilket betyder att den \u00e4r bevisat fungerande i st\u00e4llet f\u00f6r teoretiskt tillg\u00e4nglig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Att omkonfigureringen r\u00e5kade g\u00f6ras medan de snabba n\u00e4tverkskorten l\u00e5g nere var en lycklig omst\u00e4ndighet: reservv\u00e4gen testades under tiden den byggdes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">S\u00e5 vet du att det funkar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>St\u00e4ng av den prim\u00e4ra v\u00e4gen med flit.<\/strong> Inte teoretiskt \u2014 dra kabeln eller st\u00e4ng av switchen, och g\u00f6r sedan det arbete som ska fungera. Migrera en maskin. Redundans som aldrig pr\u00f6vats \u00e4r en hypotes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Kontrollera l\u00e4nkstatus p\u00e5 det du inte anv\u00e4nder.<\/strong> Reservv\u00e4gar och sammankopplingar mellan switchar \u00e4r precis det som ligger nere utan att n\u00e5gon vet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fr\u00e5ga vilket n\u00e4t varje tj\u00e4nst faktiskt anv\u00e4nder<\/strong>, och kontrollera att det finns p\u00e5 b\u00e5da v\u00e4garna. Redundans byggs per n\u00e4t, inte per kabel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad jag tar med mig<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Redundans \u00e4r inte n\u00e5got man installerar. Det \u00e4r n\u00e5got man <strong>bevisar med j\u00e4mna mellanrum<\/strong>, och som slutar g\u00e4lla i tysthet s\u00e5 fort n\u00e5gon l\u00e4gger till ett n\u00e4t, byter en port eller flyttar en kabel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Det enklaste testet i den h\u00e4r branschen \u00e4r ocks\u00e5 det mest f\u00f6rsummade: st\u00e4ng av en sak och se efter vad som slutar fungera. G\u00f6r det n\u00e4r du valt tidpunkten, s\u00e5 slipper du g\u00f6ra det n\u00e4r n\u00e5gon annan valt den.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Tv\u00e5 fysiska v\u00e4gar mellan noderna, ett logiskt beroende. Ritningen s\u00e5g redundant ut; konfigurationen var det inte \u2014 och l\u00e4nken mellan switcharna hade legat nere utan att n\u00e5gon visste.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-40","post","type-post","status-publish","format-standard","hentry","category-nat-och-sakerhet"],"_links":{"self":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":0,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/40\/revisions"}],"wp:attachment":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/media?parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/categories?post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/tags?post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}