Karhulla on asiaa

FreeBSD on hyvä alusta lem­mik­ki­pal­ve­li­mil­le

Kimmo Tapala 2

Yli kymmenen vuotta on toitotettu mantraa: ”palvelinten tulee olla karjaa, ei lemmikkejä”. Tässä ajatustavassa on kolme tärkeää pointtia:

  • Järjestelmää voidaan helposti kasvattaa lisäämällä palvelimia. Palvelinten määrää voidaan lisätä sitä mukaa, kun uutta kapasiteettia tarvitaan. Jos tuntuu siltä, että web-sovellus kaipaisi lisää potkua, voidaan sovelluspalvelimia lisätä vaikka tusina lisää kuormantasaajan taakse. Eiköhän se siitä tokene!
  • Järjestelmä nojautuu todella paljon automaatioon. Päivitykset, tuotantoonviennit, provisioinnit, varmuuskopioinnit, testaukset – kaikki toimii automaatioilla. Näitä automaatioita ohjataan usein YAML-muotoisilla tekstitiedostoilla, jotka sisältävät toimintalogiikkaa, jonka esittämiseen YAML soveltuu melkein yhtä hyvin kuin ankkuri pelastusrenkaaksi.
  • Palvelimet ovat roolinsa ilmentymiä, eivät itsenäisiä yksilöitä. Niihin ei pidä kiintyä. Jos joku palvelin ei toimi oikein, se laitetaan surutta kylmäksi ja korvataan uudella saman roolin palvelimella.

Tällä mallilla saadaan rakennettua erittäin skaalautuvia, vikasietoisia ja moderneja järjestelmiä – tietoteknisiä vastineita maatalouden tehotuotannon karjatiloille. Vaan entäpä jos aikain saatossa onkin tullut hankittua lemmikkipalvelimia, jotka eivät oikein tekemälläkään istu tähän karjatalousmalliin? Tällaisilla palvelimilla lähes aina pyörii palveluita, jotka voivat toki olla tärkeitä ja siksi edellyttävät vähintään kohtuullista vikasietoisuutta, mutta jotka eivät hyödy rajattomasta skaalautuvuudesta. Sen moderniudenkin kanssa voi olla vähän niin ja näin. Hyvä alusta näille lemmikeille voisi olla FreeBSD.

Mikä on FreeBSD?

FreeBSD on Unix-käyttöjärjestelmä, jonka edustama Unix-käyttöjärjestelmien BSD-linja (Berkeley Software Distribution) ulottuu aina 1970-luvun loppupuoliskolle saakka. Samaiseen sukulinjaan lukeutuu myös mm. Applen macOS-, iOS-, iPadOS- jne. käyttöjärjestelmien perustana toimiva avoimen lähdekoodin Darwin-käyttöjärjestelmä.

Työpöytäkäytössä FreeBSD:n markkinaosuus on häviävän pieni ja palvelinkäytössäkin Linux on suurelta osin syrjäyttänyt Unixin. Tästä huolimatta FreeBSD on laajassa käytössä muutamilla erittäin korkean profiilin organisaatioilla ja sovelluksilla. Tällaisia ovat mm.:

  • Netflix (tästä lisää alempana)
  • Apple
  • Cisco
  • WhatsApp

Netflix ansaitsee erityismaininnan, koska he ovat investoineet FreeBSD:hen valtavasti. Valtaosa Netflixistä pyörii FreeBSD:llä ja he ovat olleet erittäin aktiivisesti mukana kehittämässä FreeBSD:tä eteenpäin. Vuoden 2019 FOSDEM-konferenssista on hyvä videotaltiointi esityksestä, jossa Netflixin edustaja kertoo siitä, miten he käyttävät FreeBSD:tä: https://www.youtube.com/watch?v=vcyQBup-Gto

Mitä hyvää FreeBSD:ssä on?

Yksi isoimmista houkuttimista itselleni FreeBSD:ssä (ja ehkä Unix-käyttöjärjestelmissä yleisemminkin) on järjestelmän selkeys. Järjestelmä on käytännössä jaettu kahtia: toisaalla on käyttöjärjestelmä ja toisaalla sitten kaikki muu. Tämä kahtiajako näkyy erittäin selvästi mm. konfiguraatiossa, sillä /etc-hakemistossa on vain käyttöjärjestelmän konfiguraatiota ja käyttäjän asentamien ohjelmistopakettien konfiguraatio on jossakin /usr-hakemiston alla – nämä kaksi eivät koskaan sekoitu.

Toinen erinomainen asia FreeBSD:ssä on jonkinasteinen minimalismi. Oletuksena FreeBSD-asennus tarjoaa hyvän lähtöpisteen tarvittavan järjestelmän pystyttämiseen, mutta mitään turhaa järjestelmässä ei ole. Toisaalta tämä tarkoittaa, että monia tuttuja ja tarpeellisia apuohjelmia (kuten sudo tai doas) joutuu erikseen asentamaan ja konfiguroimaan. Samalla kuitenkin käyttäjä pysyy väkisinkin kärryillä siitä, mitä kaikkea järjestelmässä on ja miten kokonaisuus toimii.

Kolmas – ja ehkä tässä tapauksessa kaikista tärkein syy – on jail-järjestelmä, joka on eräänlainen käyttöjärjestelmätason virtualisointitoteutus. Jailit vastaavat varsin pitkälti Linuxin LXC-kontteja, mutta ainakin oman kokemukseni perusteella jailit ovat LXC-kontteihin verrattuna huomattavasti elegantimpia ja toiminnaltaan merkittävästi selkeämpiä. Jaileja on melko yksinkertaista hallita ilman mitään sen kummempia apuvälineitäkin, mutta itse suosittelisin silti hallitsemaan jaileja Bastillella. Bastille tekee jailien kanssa toimimisesta älyttömän helppoa ja nopeaa. Sanoisin jopa, että Bastille on yksi FreeBSD:n isoimmista valttikorteista kilpailussa muita käyttöjärjestelmiä vastaan.

Mitä huonoa FreeBSD:ssä on?

FreeBSD on kaukana täydellisestä. Suurin este FreeBSD:n käytölle on sen puutteellinen rautatuki. Haluatko käyttää vanhaa pöytä-PC:täsi kotipalvelimena? On aika suuri todennäköisyys, että FreeBSD:n kanssa et saa rautaa kaikilta osin hyödynnettyä, joten Linux lienee turvallisempi valinta. Jos olet päättänyt, että haluat itsellesi juuri FreeBSD-palvelimen, joudut käytännössä luottamaan erilaisiin pilviratkaisuihin (kuten kotimainen UpCloud) tai vaihtoehtoisesti käyttämään aikaa ja energiaa juuri oikealla kokoonpanolla varustetun palvelinkoneen kasaamiseen.

Rautatuen ohella isoin puute onkin sitten vajaa ohjelmistotuki. Linuxin määräävä markkina-asema palvelinkäyttöjärjestelmien ytimenä tarkoittaa käytännössä sitä, että Linux-jakeluille on todennäköisesti aika helposti löydettävissä versio melkein mistä tahansa palvelinsovelluksesta. FreeBSD:lle ohjelmistoa on saatavilla rajatummin, joskin kaikki yleisimmin palvelinkäytössä ajettavat ohjelmistot toki löytyvät. FreeBSD:llä on tietysti myös sellainen ässä hihassaan, että se pystyy ajamaan Linux-ohjelmia erityisen Linux-yhteensopivuuskerroksen kautta. Myös jailit tukevat tätä yhteensopivuuskerrosta, eli käytännössä FreeBSD:n päällä on (ainakin periaatteessa) mahdollista ajaa Linuxia omassa jailissaan.

Työpöytäkäyttö FreeBSD:llä on teoriassa mahdollista – kunhan käyttäjän tarpeet ja koneen rauta kohtaavat käyttöjärjestelmän rajoitteet. Käytännössä 100%:lle maapallon väestöstä FreeBSD on väärä valinta työpöytäkäyttöjärjestelmäksi, enkä sitä voi työpöytäkäyttöön kenellekään suositella. Ihan tietynlainen ihmistyyppi toki saattaa saada kiksejä siitä, että hakkaa esimerkiksi vasaroita lautaan naulalla, mutta itse en tähän kastiin koe kuuluvani.

Lemmikit FreeBSD:n päälle

Sekalaisten legacy-lemmikkipalvelinten ajaminen omissa jaileissaan FreeBSD:llä on osoittautunut varsin toimivaksi konseptiksi. FreeBSD:n vakaus, luotettavuus ja nopeus yhdistettynä Bastillen tarjoamaan huippuergonomiseen jailien hallintaan on oikeastaan aika killeriyhdistelmä juuri tähän käyttöön. Olemme parhaillaan Karhulla siirtämässä läjän sekalaisia sisäisiä palveluitamme pyörimään juuri tällaiselle alustalle. Avaan tässä hieman sitä, millaisesta kokonaisuudesta on kyse.

Kapasiteetti tälle palvelukokonaisuudelle tuotetaan UpCloudin infrassa. FreeBSD-palvelimen pystyttäminen UpCloudiin onnistuu varsin helposti, sillä UpCloud tarjoaa valmiin asennusmedialevykuvan FreeBSD 13.0:lle. UpCloud myös tukee Terraform-työkalua infrastruktuurihallinnassa, joten saimme automatisoitua (ja samalla dokumentoitua) palvelininfrastruktuurin pystyttämisen ja hallinnan.

Palvelimella ajetaan jokaista palvelua omassa jailissaan, joita hallitaan Bastillella. HTTP(S)-liikenne kulkee keskitetysti yhdelle Caddy-HTTP-palvelimelle, joka sitten ohjaa liikenteen eteenpäin oikealle jailille. SSL-yhteyksien terminointi tapahtuu tuossa ulospäin näkyvässä Caddyssä, joten jaileilla pyörivien palveluiden ei tarvitse huolehtia SSL-salauksesta ollenkaan.

Ylläpitotoimet on automatisoitu Ansiblella. Niinpä esimerkiksi kaikki päivitykset isäntäkäyttöjärjestelmään ja jaileihin saadaan helposti ja turvallisesti ajettua sisään yhdellä Ansible-työnkululla. Käytännössä manuaalisille toimille palvelimella ei normaalikäytössä ole mitään tarvetta.

Jailien käyttö Bastillella

Jailien pystytys onnistuu Bastillella äärimmäisen helposti:

  1. Uuden FreeBSD-julkaisun alustus jailien käyttöön käy bootstrap-komennolla: bastille bootstrap 13.1-RELEASE. Tämä tarvitsee periaatteessa tehdä vain kerran, mikäli kaikki jailit käyttävät samaa julkaisua ja ne eivät perustu Bastille-templateihin.
  2. Uuden jailin luominen alustetusta julkaisusta tehdään create-komennolla: bastille create jailbird 13.1-RELEASE 10.0.0.1. Tämän jälkeen jailbird-niminen jail on luotuna IP-osoitteella 10.0.0.1 ja valmiina käytettäväksi.

Jailien käyttöjärjestelmäpäivitykset tapahtuvat keskitetysti niin, että kaikki tiettyä julkaisua käyttävät jailit päivittyvät aina ko. julkaisun päivityksen yhteydessä. Mikäli järjestelmässä on siis vaikka neljä jailia luotuna ja ne kaikki käyttävät 13.1-RELEASE-julkaisua, riittää pelkästään tuon julkaisun päivittäminen (ja jailien uudelleenkäynnistys): bastille update 13.1-RELEASE.

Levypintaa voidaan jakaa isäntäkäyttöjärjestelmältä jaileille Bastillen mount-komennolla. Tämä mahdollistaa helpon tiedonsiirron niin isännän kuin jailienkin välillä. Jailit toki voivat viestiä keskenään myös virtuaalisen sisäverkkonsa läpi, joten tiedonsiirto jailien ja isäntäkäyttöjärjestelmän kesken on yksinkertaista.

Bastille tarjoaa myös erittäin helpon tavan porttiohjausten rakentamiseen. Mikäli esim. halutaan sallia suora SSH-pääsy jollekin jailille, voidaan Bastillen rdr-komennolla luoda ohjaus jostakin isännän portista jailin SSH-porttiin vaikkapa komennolla: bastille rdr jailbird tcp 2201 22. Tässä tapauksessa SSH-yhteys isäntäpalvelimen porttiin 2201 siis ohjautuisi jailbird-jailin SSH-palvelimen oletusporttiin 22.

Vain yksi vaihtoehto monista

Kuten aikaisemmin mainitsin, olemme Karhulla siirtäneet yksittäisiä vanhoja palveluitamme pyörimään tällaisella jail-ratkaisulla FreeBSD-palvelimelle. Tämä ei suinkaan ollut ainoa vaihtoehto, jota toteutuksen pohjaksi suunniteltiin. Tämän vaihtoehdon hyviksi puoliksi on ehdottomasti nostettava yksinkertaisuus, luotettavuus ja kustannustehokkuus. Koska jailit ovat niissä ajettavien sovellusten näkökulmasta tavallisia palvelimia (aivan kuten monella muullakin vastaavalla säiliöteknologialla), ei sovelluksiin tarvinnut tehdä juuri mitään muokkauksia – piti vain varmistaa, että sovellukset toimivat uudemmilla ohjelmistopakettiversioilla.

Mikäli kiinnostuksesi FreeBSD:tä kohtaan heräsi, suosittelen kokeilemaan FreeBSD-palvelimen pystyttämistä UpCloudiin. UpCloud tarjoaa kolmen päivän ilmaisen kokeilujakson, joka riittää juuri sopivasti viikonlopun testikäyttöön.

Tykkäsitkö tästä jutusta?

1
0
1
0
Kenttä on validointitarkoituksiin ja tulee jättää koskemattomaksi.
Jaa juttu somessa
Tällä viikolla näitä luettiin eniten
  1. HTTP-virhekoodit – eli mitä näet silloin, jos nettisivu ei toimi kuten odotit
  2. Googlen ilmaiset koulutukset
  3. Miksi sähköposti menee roskapostiin?
Viime aikoina eniten reaktioita herättivät
Ota yhteyttä
Tilaa uutiskirje