Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%
Pierwszy prototyp słonecznego serwera z kontrolerem ładowania. Zdjęcie: solar.lowtechmagazine.com

We wrześniu 2018 roku entuzjasta z Low-tech Magazine uruchomił projekt "niskotlenkowego" serwera www. Celem było zmniejszenie zużycia energii na tyle, aby domowemu serwerowi self-hosted wystarczył jedna panel słoneczny. To nie jest proste, ponieważ strona musi działać przez 24 godziny na dobę. Zobaczmy, co udało się osiągnąć.

Możesz wejść na serwer solar.lowtechmagazine.com, sprawdzić aktualne zużycie energii i poziom naładowania akumulatora. Strona jest zoptymalizowana pod kątem minimalnej liczby zapytań oraz minimalnego ruchu, więc powinna wytrzymać skok odwiedzin z Habr. Według obliczeń twórcy, zużycie energii na jednego unikalnego odwiedzającego wynosi 0,021 W⋅h.

Niedługo przed wschodem słońca 31 stycznia 2020 roku pozostało mu 42% naładowania baterii. Wschód słońca w Barcelonie o 8:04 czasu lokalnego, po tym powinien popłynąć prąd z panelu słonecznego.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

Dlaczego?

Dziesięć lat temu eksperci prognozowali, że rozwój internetu przyczynia się do "dematerializacji" społeczeństwa, powszechnej cyfryzacji — a w konsekwencji do zmniejszenia ogólnego zużycia energii. Pomylił się. W rzeczywistości internet sam wymagał ogromnych ilości energii, a te ilości wciąż rosną.

Firmy IT uruchomiły inicjatywy przejścia na alternatywne źródła energii, ale obecnie to niemożliwe. Wszystkie centra danych zużywają trzy razy więcej energii, niż generują wszystkie elektrownie słoneczne i wiatrowe na świecie. Co gorsza, produkcja i regularna wymiana paneli słonecznych i turbin wiatrowych też wymaga energii, dlatego rezygnacja z paliw kopalnych (ropa, gaz, uran) jest obecnie po prostu niemożliwa. Ale tych zasobów szybko zabraknie, dlatego nieuchronnie będziemy musieli myśleć o tym, jak żyć z odnawialnymi źródłami energii. W tym także o funkcjonowaniu infrastruktury komputerowej, w tym serwerów www.

Low-tech Magazine uważa, że problemem jest zbyt szybkie rozrastanie się stron www. Od 2010 do 2018 roku średni rozmiar strony wzrósł z 0,45 MB do 1,7 MB, a w przypadku stron mobilnych — z 0,15 MB do 1,6 MB, według konserwatywnej oceny.

Wzrost ruchu przewyższa postęp w efektywności energetycznej (energia potrzebna do przesyłania 1 megabajta informacji), co powoduje stały wzrost zużycia energii przez internet. Bardziej obciążone i wymagające strony nie tylko zwiększają obciążenie infrastruktury sieciowej, ale także skracają „czas życia” komputerów i smartfonów, które muszą być częściej wyrzucane i produkowane na nowo, co również jest dość energochłonnym procesem.

Oczywiście wzrost obciążenia wynika z samego stylu życia: ludzie spędzają prawie cały czas w internecie i w dużej mierze polegają na różnych usługach internetowych. Współczesne społeczeństwo jest już trudne do wyobrażenia sobie bez chmurowej infrastruktury IT (media społecznościowe, komunikatory, poczta itp.)

Konfiguracja serwera i strony internetowej

W w tym artykule szczegółowo opisuje konfigurację sprzętową oraz stos oprogramowania serwera WWW.

Komputer jednopłytkowy Olimex Olinuxino A20 Lime 2 wybrany ze względu na niskie zużycie energii i przydatne dodatkowe funkcje, takie jak obecność układu do zarządzania zasilaniem AXP209. Umożliwia zapytanie o statystyki dotyczące bieżącego napięcia i prądu z płyty oraz z baterii. Układ automatycznie przełącza zasilanie między akumulatorem a gniazdem DC, do którego wpływa prąd z panelu słonecznego. Dzięki temu możliwe jest nieprzerwane zasilanie serwera z obsługą akumulatora.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%
Olimex Olinuxino A20 Lime 2

Początkowo jako akumulator wybrano ogniwo litowo-polimerowe o pojemności 6600 mAh (około 24 Wh), a następnie zamontowano akumulator kwasowo-ołowiowy o pojemności 84,4 Wh.

System operacyjny ładowany jest z karty SD. Choć system zajmuje nie więcej niż 1 GB, a statyczna strona internetowa około 30 MB, to nie miało sensu ekonomicznego kupować karty mniejszej niż Class 10 16 GB.

Serwer łączy się z siecią przez 100-megabajtowe domowe połączenie w Barcelonie i standardowy router konsumencki. Dla niego zarezerwowany jest statyczny adres IP. Praktycznie każdy może uruchomić taką stronę w swoim mieszkaniu, trzeba tylko nieco zmodyfikować ustawienia zapory, aby przekierować porty na lokalny IP:

Port 80 do 80 dla HTTP
Port 443 do 443 dla HTTPS
Port 22 do 22 dla SSH

System operacyjny Armbian Stretch oparty na dystrybucji Debian i jądrze SUNXI, opracowany dla komputerów jednopłytkowych z chipami AllWinner.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%
Panele słoneczne o mocy 50 watów dla serwera WWW i 10-watowy panel do oświetlenia salonu w mieszkaniu autora

Statyczna strona została wygenerowana przez system Pelican (generator stron na Python). Strony statyczne ładują się szybciej i nie obciążają CPU, dlatego są znacznie bardziej efektywne niż dynamicznie generowane strony, z punktu widzenia zużycia energii. Kod źródłowy szablonu. tutaj.

Bardzo ważnym aspektem jest kompresja obrazów, ponieważ bez tej optymalizacji praktycznie niemożliwe jest zmniejszenie stron WWW do mniej niż 1 megabajt. W celu optymalizacji zdecydowano się na przekształcenie zdjęć w obrazy półtonowe. Dla przykładu, oto zdjęcie dziewcząt telefonistek przy centrali w ubiegłym wieku, 253 KB.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

A oto zoptymalizowany obraz półtonowy o wielkości 36,5 KB z trzema kolorami (czarnym, białym i szarym). Dzięki iluzji optycznej widz ma wrażenie, że liczba kolorów jest większa niż trzy.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

Obrazy półtonowe wybrano nie tylko w celu optymalizacji rozmiaru (decyzja dość kontrowersyjna), ale także z powodów estetycznych. Ta stara technika obróbki obrazów ma pewne cechy stylowe, więc strona uzyskała w pewnym sensie unikalny design.

623 ilustracje na stronie magazynu Low-tech Magazine po optymalizacji zmniejszyły się z 194,2 MB do 21,3 MB, co oznacza 89%.

Wszystkie stare artykuły przekształcono w Markdown dla ułatwienia pisania nowych tekstów, a także dla prostoty tworzenia kopii zapasowych przez sshpass. Z strony usunięto wszystkie skrypty i trackery, a także logo. Używany jest domyślny font w przeglądarce klienta. Jako „logo” – nazwa magazynu napisami wielkimi literami ze strzałką w lewo: LOW←TECH MAGAZINE. Zaledwie 16 bajtów zamiast obrazka.

Na wypadek awarii zorganizowano możliwość „offline’owego czytania”: teksty i obrazki eksportowane są do kanału RSS. Włączono buforowanie 100% treści, w tym HTML.

Kolejna optymalizacja – włączenie ustawienia HTTP2 w nginx, co nieco zmniejsza ruch i skraca czas ładowania stron, w porównaniu do HTTP/1.1. W tabeli porównano wyniki dla pięciu różnych stron.

| | FP | WE | HS | FW | CW |
|----------|-------|-------|-------|-------|-------|
| HTTP/1.1 | 1.46s | 1.87s | 1.54s | 1.86s | 1.89s |
| HTTP2 | 1.30s | 1.49s | 1.54s | 1.79s | 1.55s |
| Obrazy | 9 | 21 | 11 | 19 | 23 |
| oszczędności | 11% | 21% | 0% | 4% | 18% |

Pełna konfiguracja nginx:

root@solarserver:/var/log/nginx# cat /etc/nginx/sites-enabled/solar.lowtechmagazine.com

# Mapa terminów
map $sent_http_content_type $expires {
default off;
text/html 7d;
text/css max;
application/javascript max;
~image/ max;
}

server {
listen 80;
server_name solar.lowtechmagazine.com;

location / {
return 301 https://$server_name$request_uri;
}
}

server{
listen 443 ssl http2;
server_name solar.lowtechmagazine.com;

charset UTF-8; # poprawa prędkości ładowania strony, wysyłając kodowanie z pierwszą odpowiedzią.

location / {
root /var/www/html/;
index index.html;
autoindex off;
}


#Caching (zapisz strony HTML na 7 dni, reszta tak długo, jak to możliwe, brak buforowania na stronie głównej)
expires $expires;

location @index {
add_header Last-Modified $date_gmt;
add_header Cache-Control 'no-cache, no-store';
etag off;
expires off;
}

#error_page 404 /404.html;

# przekieruj strony błędów serwera do statycznej strony /50x.html
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /var/www/;
#}

#Kompresja

gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;


#Caching (zapisz stronę HTML na 7 dni, reszta tak długo, jak to możliwe)
expires $expires;

# Logi
access_log /var/log/nginx/solar.lowtechmagazine.com_ssl.access.log;
error_log /var/log/nginx/solar.lowtechmagazine.com_ssl.error.log;

# Ustawienia SSL:
ssl_certificate /etc/letsencrypt/live/solar.lowtechmagazine.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/solar.lowtechmagazine.com/privkey.pem;

# Poprawa wydajności HTTPS z wznawianiem sesji
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;

# Włącz ochronę po stronie serwera przed atakami BEAST
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

# Wyłącz SSLv3
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

# Zmniejsz rozmiar bufora, aby zwiększyć TTFB
ssl_buffer_size 4k;

# Parametr Diffiego-Hellmana dla szyfrów DHE
# $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
ssl_dhparam /etc/ssl/certs/dhparam.pem;

# Włącz HSTS (https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security)
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";

# Włącz OCSP stapling (http://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox)
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/solar.lowtechmagazine.com/fullchain.pem;
resolver 87.98.175.85 193.183.98.66 valid=300s;
resolver_timeout 5s;
}

Podsumowanie 15 miesięcy pracy

W okresie od 12 grudnia 2018 roku do 28 listopada 2019 roku serwer wykazał dostępność 95,26%. Oznacza to, że z powodu złej pogody czas przestoju wyniósł 399 godzin w ciągu roku.

Jednak jeśli nie brać pod uwagę ostatnich dwóch miesięcy, czas pracy bezawaryjnej wyniósł 98,2%, a czas przestoju tylko 152 godziny, informują deweloperzy. Czas pracy bezawaryjnej spadł do 80% w ciągu ostatnich dwóch miesięcy, kiedy zużycie energii wzrosło po aktualizacji oprogramowania. Każdej nocy strona była wyłączana na kilka godzin.

Według statystyk, w ciągu roku (od 3 grudnia 2018 roku do 24 listopada 2019 roku) zużycie energii przez serwer wyniosło 9,53 kWh. Zarejestrowano znaczne straty w instalacji fotowoltaicznej z powodu konwersji napięcia i rozładowania akumulatora. Kontroler słoneczny pokazał roczne zużycie wynoszące 18,10 kWh, co oznacza efektywność systemu na poziomie około 50%.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%
Uproszczony schemat. Nie pokazano w nim przetwornicy napięcia z 12 na 5 woltów ani licznika ampero-godzin.

W badanym okresie na stronę weszło 865 000 unikalnych odwiedzających. Uwzględniając wszystkie straty energii w instalacji słonecznej, zużycie energii na jednego unikalnego odwiedzającego wyniosło 0,021 Wh. W ten sposób jedna kilowatogodzina wytwarzanej energii słonecznej wystarcza na obsługę prawie 50 000 unikalnych odwiedzających.

W trakcie eksperymentu testowano panele słoneczne różnej wielkości. W tabeli znajdują się obliczenia, jak długo będą ładowane akumulatory o różnej pojemności przy użyciu paneli słonecznych o różnej wielkości.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

Średnia moc pobierana przez serwer WWW w ciągu pierwszego roku, uwzględniając wszystkie straty energii, wyniosła 1,97 W. Obliczenia pokazują, że aby utrzymać stronę internetową w najkrótszej nocy w roku (8 godzin 50 minut, 21 czerwca) potrzebne jest 17,40 watogodzin energii, a w najdłuższej nocy (14 godzin 49 minut, 21 grudnia) potrzeba 29,19 Wh.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

Ponieważ akumulatory kwasowo-ołowiowe nie powinny być rozładowywane poniżej połowy pojemności, serwer wymaga akumulatora o pojemności 60 Wh, aby przetrwać najdłuższą noc przy optymalnym oświetleniu w ciągu dnia (2×29,19 Wh). Większość roku system działał z akumulatorem 86,4 Wh i 50-watowym panelem słonecznym, co pozwoliło osiągnąć wspomniany wcześniej czas pracy na poziomie 95-98%.

Czas pracy 100%

Aby zapewnić 100% czasu pracy, konieczne jest zwiększenie pojemności akumulatorów. Aby zrekompensować jeden dzień bardzo złej pogody (bez znaczącej generacji energii elektrycznej), potrzebne jest 47,28 watogodzin (24 godziny × 1,97 wata) energii zmagazynowanej.

Od 1 grudnia 2019 roku do 12 stycznia 2020 roku w systemie zainstalowano baterię o mocy 168 watów, której praktyczna pojemność magazynowania wynosi 84 watogodziny. Ta pojemność jest wystarczająca, aby utrzymać działanie strony internetowej przez dwie noce i jeden dzień. Konfigurację testowano w najciemniejszym okresie roku, ale pogoda była stosunkowo dobra — w tym czasie czas bezawaryjnej pracy wyniósł 100%.

Jednak aby zapewnić 100% dostępności przez kilka lat, trzeba wziąć pod uwagę najgorszy scenariusz, w którym złe warunki pogodowe utrzymują się przez kilka dni. Obliczenia pokazują: aby utrzymać stronę w sieci przez cztery dni przy niskiej lub zerowej produkcji energii, potrzebna będzie akumulator kwasowo-ołowiowy o pojemności 440 watogodzin, czyli wielkości akumulatora samochodowego.

W praktyce, przy dobrych warunkach pogodowych, akumulator kwasowo-ołowiowy o pojemności 48 watogodzin będzie utrzymywał działanie serwera przez noc od marca do września. Akumulator o pojemności 24 watogodzin wytrzyma maksymalnie 6 godzin, co oznacza, że serwer będzie się wyłączał każdej nocy, choć o różnej porze, w zależności od miesiąca.

Zasadniczo niektórym stronom internetowym nie jest konieczne działanie w nocy, kiedy liczba odwiedzających jest minimalna, twierdzą chłopaki z Low-tech Magazine. Na przykład, jeśli to regionalny serwis miejski, do którego nie zaglądają goście z innych stref czasowych, a tylko lokalni mieszkańcy.

Oznacza to, że dla stron o różnej liczbie odwiedzin i różnym czasie dostępności potrzebne są akumulatory o różnej pojemności i panele słoneczne o różnych rozmiarach.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

Autor przedstawia obliczenia, ile energii potrzeba na produkcję samych paneli słonecznych (energia wbudowana) i ile uzyskuje się, dzieląc tę ilość przez przewidywany okres eksploatacji wynoszący 10 lat.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

W ten sposób można obliczyć odpowiednik paliwa kopalnego, które zostało zużyte na produkcję i eksploatację paneli. W Low-tech Magazine obliczono, że w pierwszym roku pracy ich system (panel 50 W, bateria 86,4 watogodziny) „wytworzył” około 9 kg emisji lub ekwiwalent spalenia 3 litrów benzyny: mniej więcej tyle, ile osobowy samochód na dystansie 50 km.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

Jeśli zasilasz serwer nie z paneli słonecznych, a z ogólnej sieci energetycznej, to ekwiwalent emisji wychodzi około sześciokrotnie mniejszy: 1,54 kg (w hiszpańskiej energetyce znaczny udział stanowi energetyka odnawialna i elektrownie jądrowe). Ale to nie do końca poprawne porównanie, pisze autor, ponieważ uwzględnia ono embodied energy infrastruktury słonecznej, ale nie uwzględnia tego wskaźnika dla ogólnej sieci energetycznej, czyli wydatków na jej budowę i utrzymanie.

Dalsze ulepszenia

W minionym czasie przeprowadzono szereg optymalizacji, które obniżyły zużycie energii przez serwer. Na przykład, w pewnym momencie programista zauważył, że 6,63 TB z ogólnego wolumenu 11,15 TB ruchu generuje jedna nieprawidłowa implementacja RSS feedu, która pobiera treść co kilka minut. Po naprawie tego błędu, zużycie energii przez serwer (bez uwzględnienia strat energii) spadło z 1,14 W do około 0,95 W. Oszczędność może wydawać się niewielka, ale różnica 0,19 W oznacza 4,56 watogodzin na dobę, co odpowiada ponad 2,5 godziny pracy serwera w trybie offline.

W ciągu pierwszego roku sprawność wyniosła zaledwie 50%. Straty były obserwowane przy ładowaniu i rozładowywaniu akumulatora (22%), a także przy konwersji napięcia z 12 V (słoneczny system fotowoltaiczny) na 5 V (USB), gdzie straty wynoszą do 28%. Programista przyznaje, że ma nieoptymalny przetwornik napięcia (kontroler bez wbudowanego USB), dlatego można zoptymalizować ten aspekt lub przejść na instalację solarną 5V.

Aby zwiększyć efektywność magazynowania energii, można zastąpić akumulatory ołowiowo-kwasowe droższymi akumulatorami litowo-jonowymi, które mają mniejsze straty ładowania/rozładowania (<10%). Obecnie konstruktor rozważa kompaktowy system magazynowania energii w postaci sprężonego powietrza (CAES), którego żywotność wynosi dziesiątki lat, co oznacza mniejszy „ślad węglowy” w trakcie jej produkcji.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%
Kompaktowy akumulator energii na sprężonym powietrzu, ClickHouse-Ninja/Proton

Rozważana jest instalacja dodatkowej turbiny wiatrowej (można ją wykonać z drewna) oraz instalacja śledzenia słonecznego, by obracać panele w kierunku słońca. Tracker pozwala zwiększyć produkcję energii elektrycznej o 30%.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%

Inny sposób na zwiększenie wydajności systemu to jego skalowanie. Uruchomienie większej liczby stron internetowych na serwerze oraz więcej serwerów. Wtedy zmniejszy się zużycie energii na każdą stronę.

Domowy serwer WWW zasilany energią słoneczną działał przez 15 miesięcy: czas działania 95,26%
Firma hostingowa oparta na energii słonecznej. Ilustracja: Diego Marmolejo

Jeśli pokryjemy cały balkon mieszkania panelami słonecznymi i założymy firmę hostingową opartą na energii słonecznej, to koszty na każdego klienta będą znacznie niższe niż dla jednej strony internetowej: oszczędności z skali.

Ogólnie, ten eksperyment pokazuje, że przy pewnych ograniczeniach infrastruktura komputerowa może działać na odnawialnych źródłach energii.

Teoretycznie, taki serwer może nawet obejść się bez akumulatora, jeśli będzie lustrzany w innych częściach świata. Na przykład, umieszczając lustra w Nowej Zelandii i Chile. Tam panele słoneczne będą działać, gdy w Barcelonie będzie noc.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster