Piszki Lab

Analiza przypadku w języku przodków…

Prowadzenie bloga, część 2: Migrujemy do VPS (DigitalOcean)

| 0 comments

Jeszcze nie tak dawno zachwycałem się nad możliwościami jakie niesie NAS, w tym nad możliwością uruchomienia własnego bloga. A tu proszę, minęło parę miesięcy, przybyło wejść na stronę i zrobił się kłopot. Tym kłopotem jest dostawca Internetu, czyli w moim przypadku UPC, który notorycznie robi restarty swojej usługi. Po każdym restarcie modem wstaje z innym adresem IP. Znudziło mi się ciągłe przekonfigurowanie DNS (w końcu nie zawsze mam dostęp do sieci i czas na przeprowadzanie zmian, dynamiczny DNS też nie wchodzi w grę) i postanowiłem rozwiązać problem ostatecznie. Oprócz ciągłego wzrostu ruchu na stronach (już cztery blogi hostuję na moim NAS), przenieśliśmy się całkowicie z pocztą email na naszą domenę. Aby rozwiązać mój problem potrzebowałem dwóch rzeczy, stałego adresu IP i niezawodności. Stały IP w UPC nie wchodzi w rachubę (tylko dla firm), innego dostawcy mieć nie będę, a jeśli chodzi o niezawodność no to cóż, tam gdzie mieszkam zdarzają się niestety wahnięcia i zaniki prądu (UPS to dobre rozwiązanie, zachowam dane ale co z dostępem z zewnątrz). Po rozważeniu wszystkich za i przeciw, wybrałem opcję migracji bloga do usługi VPS połączoną z synchronizacją do mojego NAS. W przypadku poczty odwrotnie, głównym serwerem pozostaje NAS ale poczta jest wysyłana przez VPS (obejście problemu nie przyjmowania maili przez niektóre serwery, nadawanych z adresów dynamicznych (brak własnego PTR)). Temat synchronizacji danych do NAS będzie poruszony w innym wpisie, tutaj opiszę proces przygotowania VPS i migracji strony WWW.

DigitalOcean-logo

VPS, czyli Virtual Private Server, to dość nowe rozwiązanie. Wykupujemy w chmurze publicznej usługę, która daje nam możliwość uruchomienia naszego własnego, prywatnego serwera. Z pełnym dostępem przez SSH i wirtualną konsolę (jakby co). Wraz z VPS otrzymujemy nasz własny, stały, publiczny adres IP (oraz możliwość tworzenia rekordów DNS)!!! Plusem dla jednych, a minusem dla innych jest to, że musimy sobie wszystko skonfigurować sami (dostajemy czyściutki system w wersji minimal iso). I tu powoli dochodzimy do drugiej strony, czyli cen. Ceny w dolarach lub euro per miesiąc, a chcemy wydać jak najmniej. Po przeanalizowaniu dostępnych możliwości, wybrałem firmę DigitalOcean. Z dwóch powodów, pierwszym to oczywiście cena. Za $5 miesięcznie (15zł) otrzymujemy serwer z 512MB RAM, 20GB przestrzeni, 1CPU i 1 Tera transferu. Niby nie wiele, ale na potrzeby strony www to aż nadmiar mocy (zresztą te wartości to odpowiednik mocy mojego DS213J). Drugim powodem jest fantastyczna wręcz prostota interfejsu www, naprawdę nie sposób się pogubić. Dodatkowo, zakładając konto, możemy podać kod promocyjny SHIPITFAST i otrzymać 10$ (czyli przez dwa miesiące testy całkowicie za darmo). Poniżej zrzut listy “kropelek”, czyli wykorzystywanych w danej chwili serwerów. Opłaty są naliczane w cyklu dziennym, czyli jeśli chcemy coś przetestować, to możemy sobie wygenerować nową kropelkę i poprowadzić testy np. przez dwa dni (i za tyle zostaniemy skasowani).

digit1

Aby wszystko działało poprawnie na tak słabym, wirtualnym, sprzęcie, należy wszystkie usługi wchodzące w skład LAMP odpowiednio skonfigurować (Uwaga: można wybrać prekonfigurowanego dropleta z LAMP na Ubuntu!). Przygotowując mojego “Dropleta” wybrałem system CentOS 7 ze względu na obecność w nim bazy danych MariaDB (pełna zgodność z Synology DSM 5) i generalnej sympatii dla CentOS. W sieci znajdziecie mnóstwo poradników jak zainstalować LAMP w CentOS 7, w tym profilowane pod serwery DigitalOcean. Po zainstalowaniu i wstępnym skonfigurowaniu LAMP przystępujemy do tuningowania usług i systemu (w tym dodania pliku SWAP do systemu). Aby nie powtarzać po milion razy tego co już zostało napisane, w tekście zamieszczam dużo linków do istniejących poradników ale konfiguracja zamieszczona w poście pochodzi z mojego serwera.

Tuning MariaDB:

Plik konfiguracyjny to /etc/my.cnf.d/server.cnf tuning przeprowadzamy poprzez zmianę poszczególnych wartości  tak, aby MariaDB działała sprawnie i nie zajmowała przesadnej ilości RAM. Do sprawdzenia jakie są aktualne parametry i jak wpływają na system służą dwa wspaniałe skrypty, jeden to mysqltuner.pl a drugi to tuning-primer.sh. Przykładowy efekt uruchomienia mysqltuner (po optymalizacji MariaDB) wygląda tak:

dg1

Jak widać, zajętość RAM to 150MB. Generalnie, tuning MariaDB to dość żmudny proces, manipulujemy wieloma zmiennymi i sprawdzamy czy efekt jest ok.   Mój plik server.cnf wygląda tak:

[mysqld]
     port            = 3306
     socket          = /var/lib/mysql/mysql.sock
     key_buffer = 16K
     max_allowed_packet = 1M
     table_cache = 4
     sort_buffer_size = 64K
     read_buffer_size = 256K
     read_rnd_buffer_size = 256K
     net_buffer_length = 2K
     thread_stack = 64K
     key_buffer_size =8M
     query_cache_type = 1
     query_cache_size = 16M
     query_cache_limit = 2M
     query_cache_strip_comments = 1
     thread_cache_size = 4M
     net_read_timeout = 30
     net_write_timeout = 60
     table_cache = 4096
     max_connections = 100

     innodb_buffer_pool_size = 20M
     innodb_additional_mem_pool_size = 2M

     [mysqldump]
     quick
     max_allowed_packet = 16M

     [mysql]
     no-auto-rehash

     [isamchk]
     key_buffer = 8M
     sort_buffer_size = 8M

     [myisamchk]
     key_buffer = 8M
     sort_buffer_size = 8M

     [mysqlhotcopy]
     interactive-timeout

Tuning HTTPD:

Domyślnie w CentOS 7 instaluje się Apache 2 w wersji dość “rozbuchanej”, jego przycięcie można wykonać w w pliku /etc/httpd/conf.modules.d/00-mpm.conf:

<IfModule prefork.c>
StartServers       1
MinSpareServers    1
MaxSpareServers    3
MaxClients        10
MaxRequestsPerChild  4000
</IfModule>

Powiem szczerze, że nie przyłożyłem się specjalnie do tuningu Apache, na tę chwilę dla mnie jest to całkowicie wystarczająca konfiguracja pod względem wydajności (spokojnie obsłuży 100 jednoczesnych użytkowników z pełnym obciążeniem).  Gdy znów pojawi się problem wydajności, to wtedy rozszerzę prawdopodobnie zasoby “sprzętowe” serwerka (lub poszukam innego miejsca do przeparkowania usług i domeny). Generalnie bardzo polecam DigitalOcean i całą ideę VPS! Gdyby były pytania o konkretne szczegóły to chętnie odpowiem Uśmiech

Oceń ten artykuł:
[Total: 0 Average: 0]

Dodaj komentarz

Required fields are marked *.