Red Hat Enterprise Linux 5 nam slouzil verne ctyri roky. Ale s koncem rozsirene podpory na obzoru a stale vetsimi naroky nasich Java aplikaci na systemove prostredky jsme se na prelomu roku rozhodli pro upgrade na RHEL 6. Co vypadalo jako rutinni operace, se ukazalo byt zajimavou vyzvou.
Proc jsme migrovali¶
RHEL 6 prinesl nove jadro 2.6.32 s vyrazne lepsi spravou pameti, ext4 jako vychozi souborovy system a kompletne prepracovany init system — Upstart misto klasickeho SysV init. Pro nase produkcni prostredi s desitkami sluzeb to znamenalo prepsat vetsinu init skriptu. Hlavni motivace byla podpora — RHEL 5 se blizil ke konci plne podpory a bezpecnostni zaplaty prichazely pomaleji. Pro nase klienty z financniho sektoru je aktualni podpora OS podminkou provozu.
SELinux — tentokrat doopravdy¶
Priznejme si to — na RHEL 5 jsme SELinux na vetsine serveru vypinali. Bylo to jednodussi nez resit nekonecne AVC denial zpravy. Na RHEL 6 jsme se rozhodli to udelat spravne a nechat SELinux v enforcing modu. Prvni tyden byl bolestny. Nase custom Java aplikace bezici na Tomcatu potrebovaly vlastni SELinux politiky. GlassFish server zapisoval logy do nestandardnich adresaru. Oracle Instant Client mel problemy s pristupem k shared libraries. Kazdy problem znamenal hodiny s audit2allow a rucnim ladenim politik.
Ale vysledek stoji za to. Mame servery, kde kompromitovana webova aplikace nemuze cist mimo svuj adresar. Pro nase klienty v bankovnim sektoru je to zasadni bezpecnostni vylepseni.
Filesystem — ext4 a LVM¶
Prechod z ext3 na ext4 probehl prekvapive hladce. Ocenili jsme hlavne rychlejsi fsck — na serverech s terabytovymi filesystemy to znamena rozdil hodin pri neplanovane restartu. Extents misto indirect block mappingu zrychlily sekvencni I/O operace, coz se projevilo hlavne pri zalohovani. LVM snapshoty na ext4 funguji spolehliveji a rychleji. Nas backup skript, ktery dela konzistentni snapshot Oracle databaze, se zrychlil o 40 procent.
Kompatibilita aplikaci¶
Nejvetsi problem? Knihovny. RHEL 6 presel na glibc 2.12 a nektere starsi binarky proste prestaly fungovat. Konkretne nas trapil Oracle Database client 10g — ten na RHEL 6 oficialne neni podporovan. Museli jsme upgradovat na 11g client, coz znamenalo zmeny v tnsnames.ora a testovani vsech JDBC spojeni. Java 6 (OpenJDK) v RHEL 6 bezi bez problemu, ale pozor na rozdily v cryptographic providers.
Upstart vs. SysV init¶
Upstart je koncepcne lepsi nez SysV init — event-driven, paralelni spousteni sluzeb, automaticky respawn. Ale prepsat dvacet custom init skriptu na Upstart konfiguraci stalo dva dny prace. Nastesti RHEL 6 podporuje i stare SysV skripty pres kompatibilni vrstvu, takze jsme migrovali postupne. Tip: nezachinajte vsechno najednou.
Networking a firewall¶
RHEL 6 stale pouziva iptables, ale konfiguracni nastroje jsou vylepsene. Novinkou je NetworkManager jako vychozi spravce site. Na serverech ho okamzite vypinme — chceme statickou konfiguraci v /etc/sysconfig/network-scripts, ne dynamickeho spravce.
Pouceni z migrace¶
Migrace OS v produkci neni nikdy trivialni. Naplanujte si minimalne dvakrat vic casu, nez odhadnete. Testujte SELinux politiky dopredu na staging prostredi. A hlavne — mejte rollback plan.