sunnuntai 28. lokakuuta 2018

Steamcache ja nginx

Aikaisemmin tuli kirjoiteltua miten lanit saa nopeammiksi. Vaikka oma cache-palvelin ei ole vielä päässytkään tosi testiin oli aika kaivaa laitteisto esiin ja katsoa, että säädöt jne. ovat toimineet.

Tämän yhteydessä aloin myös miettimään miten saada muuta palvelut toimimaan tässä samaisessa järjestelmässä. Aikaisemmin kun tein tätä, niin jokainen palvelu vaatii oman IP-osoitteen jossa se toimii. Tämä tieto sitten jaetaan steamcache-dns-palvelun avulla.

Aloin käymään tätä läpi ja sain vinkin Docker Composeen, jonka avulla on helppo ylläpitää monia dockereita samanaikaisesti. Kun olin tutustunut Docker Composeen ja samalla huomannut, että steamcachella on valmis scripti tätä varten, niin päätin tarttua toimeen.

Helpottaakseni muiden työtä kannattaa lukaista aikaisemmin tekemäni postaus ja sen jälkeen siirtyä tähän. Myös helpottaakseen tämän postauksen etenemistä suosittelen tekemään asivalmisteluja.

Asennetaan ensimmäisenä Docker Compose komennolla
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Seuraavaksi asennetaan jq, mitä käytetään parsintaan komennolla
sudo apt-get install jq

Lopuksi vielä git, jotta saadaan repo kloonattua
sudo apt-get install git

Sitten itse asiaa. Homma alkaa sillä, että ensimmäisenä kloonataan tuo steamcachen docker-compose komennolla
git clone https://github.com/steamcache/docker-compose.git

Seuraavaksi mennään tähän kansioon komenolla cd docker-compose. Seuraavaksi sinun pitää muokkaa .env tiedostoa vaikkapa nanolla ja antaa tänne palvelimen kiinteä IP-osoite. Lopuksi voit scriptillä generoida tarvittavan docker-compose.yml tiedoston, jolla saadaan dockerit käyntiin. Kun tämä on tehty voit nostaa dockerit pystyyn komennolla docker-compose up -d.

Ensimmäisellä kerralla tämä lataa tarvittavat dockerit ja käynnistää ne. Komennolla näet docker container ls näet pyörivät dockerit. Nyt tilanne on seuraava, että dockerit pyörivät omassa verkossaan ja näiden edessä on nginx, joka ohjaa ulkoa tulevat cache pyynnöt oikeaan dockeriin. Sinun tulee vain asettaa tämä palvelimen IP-osoite käytettävän koneen DNS-osoitteeksi tai jakaa se DHCP:n avulla.

Palvelut/cache-dockerit jotka pyörivät vakiona ovat seuraavat
  • nginx
  • dns
  • sniproxy
  • apple
  • arenanet
  • blizzard
  • daybreak
  • frontier
  • hirez
  • minecraft
  • nexusmods
  • nintendo
  • origin
  • renegadex
  • riot
  • rockstar
  • sony
  • steam
  • uplay
  • twitch
  • wargaming
  • wsus
  • xboxlive
Jos haluat rajoittaa mitä palveluita pyörität, se onnistuu seuraavasti. Ensimmäisenä pysäytä dockerit kommennolla
docker-compose stop

Tämän jälkeen sinun tulee muokata .env tiedostoa. Tänne sinun pitää lisätä vaikka tiedoston loppuun halutun palvelun disablointi esim. DISABLE_BLIZZARD=true. Lopuksi tallenna tämä tiedosto. Seuraavaksi sinun tulee muokata docker-compose.yml tiedostoa siten, että joko kommentoit blizzard kohdan pois tai sitten poistat tämän kokonaan. Lopuksi tallenna tämä tiedosto ja aja dockerit ylös docker-compose up -d -komennolla.

Tässä tapauksessa disabloimme blizzardin ja samalla poistimme kohdan jotta tätä dockeria ei turhaan ajeta pystyyn. Nyt nämä DNS pyynnöt, jotka koskevat blizzardin palveluita ohjataan suoraan blizzardille ja cache-palvelin ei näistä välitä. Tätä muutosta monistamalla voit poistaa halutut palvelut/dockerit pois ajosta. Jos muutoksien jälkeen ajat generate.sh-scriptin tämä nollaa tilanteen eli aktivoi taas kaiken takaisin.

Lähteet
https://docs.docker.com/compose/
https://github.com/steamcache