Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%
Перший прототип сонячного сервера із контролером заряду. Фото: solar.lowtechmagazine.com

У вересні 2018 року ентузіаст із Low-tech Magazine запустив проект «низькотехнологічного» веб-сервера. Завдання було знизити енергоспоживання настільки, щоб домашньому self-hosted серверу вистачало однієї сонячної панелі. Це непросто, адже сайт має працювати 24 години на добу. Подивимося, що сталося у результаті.

Можете зайти на сервер solar.lowtechmagazine.com, перевірити поточне споживання енергії та рівень заряду акумулятора. Сайт оптимізований на мінімальну кількість запитів зі сторінки та мінімальний трафік, тому має витримати стрибок відвідуваності з Хабра. За розрахунками розробника, витрата енергії на одного унікального відвідувача складає 0,021 Вт·ч.

Незадовго до світанку 31 січня 2020 року залишалося 42% заряду батареї. Світанок у Барселоні о 8:04 за місцевим часом, після цього має піти струм із сонячної панелі.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Навіщо?

Десять років тому експерти прогнозували, Що розвиток Інтернету сприяє «дематеріалізації» суспільства, загальної цифровізації - і, як наслідок, зниження загального енергоспоживання. Вони помилились. Насправді інтернет сам зажадав величезних обсягів енергоживлення, і ці обсяги продовжують зростати.

IT-компанії запустили ініціативи щодо переходу на альтернативні джерела харчування, але це зараз неможливо. Усі дата-центри споживають утричі більше енергії, ніж генерують усі сонячні та вітряні установки у світі. Гірше того, виробництво та регулярна заміна сонячних панелей та вітряків теж потребує енергіїТому відмовитися від викопного топліфа (нафта, газ, уран) сьогодні просто неможливо. Але цих запасів надовго не вистачить, тому нам неминуче доведеться думати, як жити на відновлюваних джерелах. Включаючи роботу комп'ютерної інфраструктури, зокрема веб-серверів.

Low-tech Журнал вважає проблемою надто швидке роздування веб-сторінок. З 2010 до 2018 року середній розмір сторінки збільшився з 0,45 МБ до 1,7 МБ, А у мобільних сайтів - з 0,15 МБ до 1,6 МБ, за консервативною оцінкою.

Збільшення обсягів трафіку обганяє прогрес в енергоефективності (Енергія, необхідна для передачі 1 мегабайта інформації), що викликає постійне зростання енергоспоживання інтернету. Більш важкі та навантажені сайти не тільки збільшують навантаження на мережну інфраструктуру, але також скорочують «життєвий цикл» комп'ютерів та смартфонів, які доводиться частіше викидати та виробляти нові, що теж дуже енергоємний процес.

Ну і звичайно, підвищення навантаження створюється самим способом життя: люди майже весь час проводять в інтернеті та багато в чому покладаються на різні веб-сервіси. Сучасне суспільство вже важко уявити без хмарної IT-інфраструктури (соціальні мережі, месенджери, пошта тощо)

Конфігурація сервера та веб-сайту

В цієї статті детально описана апаратна конфігурація та програмний стек веб-сервера.

Одноплатний комп'ютер Olimex Olinuxino A20 Lime 2 обраний за низьке енергоспоживання та корисні додаткові функції, такі як наявність мікросхеми керування енергоживленням AXP209. Вона дозволяє запитувати статистику по поточному напрузі та силі струму з плати та батареї. Мікросхема автоматично перемикає живлення між акумулятором та роз'ємом DC, куди тече струм із сонячної панелі. Таким чином, можливе безперебійне живлення сервера з підтримкою акумулятора.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%
Olimex Olinuxino A20 Lime 2

Спочатку в якості акумулятора вибрали літій-полімерну батарею ємністю 6600 мАч (близько 24 Втч), потім поставили кислотно-свинцевий акумулятор на 84,4 Втч.

Операційна система завантажується із SD-карти. Хоча ОС займає трохи більше 1 ГБ, а статичний веб-сайт близько 30 МБ, але було економічного сенсу купувати карту менше, ніж Class 10 16 ГБ.

Сервер підключається до мережі через 100-мегабітне домашнє з'єднання в Барселоні та стандартний споживчий маршрутизатор. Для нього зарезервована статична IP-адреса. Практично кожен може підняти такий сайт у себе в квартирі, потрібно трохи змінити налаштування файрвола для форвардингу портів на локальний IP:

Port 80 to 80 for HTTP Port 443 to 443 for HTTPS Port 22 to 22 for SSH

Операційна система Armbian Stretch на базі дистрибутива Debian та ядра SUNXI, яка розроблена для одноплатників з чіпами AllWinner

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%
50-ватна сонячна панель для веб-сервера та 10-ватна панель для освітлення вітальні у квартирі автора

Статичний сайт згенерований системою пелікан (генератор сайтів на Python). Статичні сайти завантажуються швидше і не створюють навантаження на CPU, тому вони набагато ефективніші, ніж сторінки, що динамічно генеруються, з точки енергоспоживання. Вихідний код теми оформлення див. тут.

Дуже важливий момент – стиснення зображень, оскільки без цієї оптимізації практично неможливо зробити веб-сторінки менше 1 мегабайта. Для оптимізації було вирішено перевести фотографії на напівтонові зображення. Для прикладу, ось фотографія дівчат-телефоністок на комутаторі минулого століття, 253 КБ.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

А ось оптимізоване напівтонове зображення розміром 36,5 КБ із трьома кольорами (чорний, білий, сірий). За рахунок оптичної ілюзії глядачеві здається, що кількість кольорів більша за три.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Напівтонові фотографії вибрали не тільки для оптимізації розміру (рішення досить сумнівне), а й з естетичних міркувань. Ця стара техніка обробки зображень має певні стильові особливості, так що у сайту вийшов в якомусь сенсі унікальний дизайн.

623 ілюстрації на сайті журналу Low-tech Magazine після оптимізації зменшилися у розмірі зі 194,2 МБ до 21,3 МБ, тобто на 89%.

Всі старі статті конвертували в Markdown для простоти написання нових статей, а також для простоти резервного копіювання через мерзотник. З сайту видалили всі скрипти та трекери, а також логотипи. Використовується стандартний шрифт у браузері клієнта. Як «логотип» — назва журналу великими літерами зі стрілкою вліво: LOW←TECH MAGAZINE. Усього 16 байт замість картинки.

На випадок даунтайму організовано можливість «офлайнового читання»: тексти та картинки експортуються до RSS-фіду. Включено кешування 100% контенту, включаючи HTML.

Ще одна оптимізація - включення налаштування HTTP2 в nginx, що трохи зменшує трафік і скорочує час завантаження сторінок порівняно з HTTP/1.1. У таблиці порівнюються результати п'яти різних сторінок.

| | 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 | | Images | 9 | 21 | 11 | 19 | 23 | | savings | 11% | 21% | 0% | 4% | 18% |

Повна конфігурація nginx:

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

# Expires map
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; #improve page speed by sending the charset with the first response.

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


#Caching (save html pages for 7 days, rest as long as possible, no caching on frontpage)
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;

# redirect server error pages to the static page /50x.html
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /var/www/;
#}

#Compression

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 (save html page for 7 days, rest as long as possible)
expires $expires;

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

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

# Improve HTTPS performance with session resumption
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;

# Enable server-side protection against BEAST attacks
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

# Disable SSLv3
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

# Lower the buffer size to increase TTFB
ssl_buffer_size 4k;

# Diffie-Hellman parameter for DHE ciphersuites
# $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
ssl_dhparam /etc/ssl/certs/dhparam.pem;

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

# Enable 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;
}

Підсумки 15 місяців роботи

За період з 12 грудня 2018 року до 28 листопада 2019 року сервер показав аптайм 95,26%. Це означає, що через погану погоду даунтайм за рік становив 399 годин.

Але якщо не брати до уваги останні два місяці, то час безвідмовної роботи становив 98,2%, а час простою — лише 152 години, пишуть розробники. Час безвідмовної роботи впав до 80% протягом останніх двох місяців, коли споживання енергії збільшилося через оновлення програмного забезпечення. Щоночі сайт відключався на кілька годин.

За статистикою, за рік (з 3 грудня 2018 року по 24 листопада 2019 року) споживання електроенергії сервером становило 9,53 кВт⋅год. Зафіксовано значні втрати у фотоелектричній системі через перетворення напруги та розряду батареї. Сонячний контролер показав річне споживання 18,10 кВт·год, що означає ефективність системи близько 50%.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%
Спрощена схема. На ній не показані перетворювач напруги з 12 на 5 вольт та батарейний лічильник ампер-годин.

За досліджуваний період на сайт зайшли 865 тисяч унікальних відвідувачів. Включаючи всі втрати енергії в сонячній установці, витрата енергії на одного унікального відвідувача становила 000 Вт·ч. Таким чином, однієї кіловат-години сонячної енергії, що виробляється, вистачає на обслуговування майже 0,021 50 унікальних відвідувачів.

За час експерименту випробовувалися сонячні панелі різного розміру. У таблиці наведено розрахунки, за який час зарядяться акумулятори різної ємності під час використання сонячних панелей різного розміру.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Середня споживана потужність веб-сервера протягом першого року, включаючи всі втрати енергії, становила 1,97 Вт. Розрахунок показує, що для підтримки веб-сайту вночі в найкоротшу ніч року (8 годин 50 хвилин, 21 червня) потрібно 17,40 Вт-години потужності зберігання, а в найдовшу ніч (14 годин 49 хвилин, 21 грудня) потрібно 29,19 ,XNUMX Вт⋅ч.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Оскільки свинцево-кислотні батареї не повинні розряджатися нижче половини ємності, серверу потрібно батарея на 60 Втч, щоб пережити найдовшу ніч при оптимальній освітленості вдень (2×29,19 Втч). Більшу частину року система працювала з акумулятором 86,4 Вт·ч і 50-ватною сонячною панеллю, тоді і було досягнуто вищезазначеного аптайму 95-98%.

Аптайм 100%

Для аптайму 100% необхідно збільшити ємність акумуляторів. Щоб компенсувати один день дуже поганої погоди (без значної генерації електроенергії), потрібно 47,28 Вт-години (24 години × 1,97 Вт) сховища.

З 1 грудня 2019 року по 12 січня 2020 року в систему поставили 168-ватну батарею, яка має практичну ємність зберігання 84 ват-години. Цього сховища достатньо, щоб підтримувати роботу сайту протягом двох ночей та одного дня. Конфігурацію тестували в темний період року, але погода була відносно гарною — і за вказаний період час безвідмовної роботи становив 100%.

Але щоб гарантувати аптайм 100% протягом кількох років, доведеться передбачити і найгірший сценарій, коли погана погода зберігається кілька днів. Розрахунок показує: щоб підтримувати сайт в онлайні протягом чотирьох днів з низькою або нульовою генерацією енергії, знадобиться свинцево-кислотна батарея ємністю 440 ват-годин, тобто розміром з автомобільний акумулятор.

На практиці за хорошої погоди свинцево-кислотна батарея ємністю 48 Втч буде підтримувати роботу сервера протягом ночі з березня по вересень. Батарея на 24 Втч протримає сервер максимум 6 годин, тобто він буде відключатися щоночі, хоча і в різний час, залежно від місяця.

За великим рахунком, деяким сайтам необов'язково працювати вночі, коли кількість відвідувачів мінімальна, вважають хлопці з Low-tech Magazine. Наприклад, якщо це регіональне міське видання, куди не заходять відвідувачі інших часових поясів, а лише місцеві жителі.

Тобто для сайтів з різною відвідуваністю та різним аптаймом потрібні акумулятори різної ємності та сонячні батареї різного розміру.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Автор наводить розрахунок, скільки енергії потрібно для виробництва самих сонячних панелей (embodied energy) і скільки виходить, якщо поділити цю кількість на очікуваний термін служби 10 років.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Таким чином, можна розрахувати аналог викопного палива, яке витрачено на виробництво та експлуатацію панелей. Low-tech Magazine вийшло, що за перший рік роботи їх система (панель 50 Вт, батарея 86,4 Вт·ч) «згенерувала» приблизно 9 кг викидів або еквівалент спалювання 3 л бензину: приблизно стільки ж, скільки легковий автомобіль за 50 км ходу.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Якщо запитувати сервер не від сонячних батарей, а від загальної енергомережі, то еквівалент викидів начебто виходить ушестеро нижче: 1,54 кг (в іспанській енергетиці висока частка альтернативної енергетики та АЕС). Але це не зовсім коректне порівняння, пише автор, бо воно враховує embodied energy сонячної інфраструктури, але не враховує цей показник для загальної енергомережі, тобто витрати на її будівництво та підтримку.

подальші поліпшення

За минулий час проведено низку оптимізацій, що знизили енергоспоживання сервера. Наприклад, у якийсь момент розробник зауважив, що 6,63 ТБ із загального обсягу 11,15 ТБ трафіку генерує одна некоректна реалізація RSS-фіду, яка витягує контент кожні кілька хвилин. Після виправлення цього бага енергоспоживання сервера (без урахування втрат енергії) знизилося з 1,14 Вт до 0,95 Вт. Виграш може бути невеликим, але різниця в 0,19 Вт означає 4,56 ват-години за добу, що відповідає більше 2,5 годин автономної роботи сервера.

Протягом першого року ккд становив лише 50%. Втрати спостерігалися при зарядці та розрядженні акумулятора (22%), а також при перетворенні напруги з 12 В (сонячна фотоелектрична система) на 5 В (USB), де втрати становлять до 28%. Розробник визнає, що має неоптимальний перетворювач напруги (контролер без вбудованого USB), тому можна оптимізувати цей момент або перейти на сонячну установку 5V.

Для підвищення ефективності зберігання енергії можна замінити свинцево-кислотні акумулятори на більш дорогі літій-іонні батареї, у яких менші втрати заряду/розряду (<10%). Наразі конструктор розглядає компактну систему зберігання електроенергії у вигляді стисненого повітря (CAES), яка має термін служби десятки років, що означає менший «вуглецевий відбиток» на її виробництво.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%
Компактний акумулятор енергії на стисненому повітрі, джерело

Розглядається встановлення додаткової вітряної турбіни (її можна виготовити з дерева) та встановлення сонячного трекера для повороту панелей до сонця. Трекер дозволяє збільшити вироблення електроенергії на 30%.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%

Ще один спосіб підвищення ефективності системи – її масштабування. Піднімати на сервері більше веб-сайтів та запускати більше серверів. Тоді зменшиться витрата енергії з розрахунку на кожен сайт.

Домашній веб-сервер на сонячних батареях відпрацював 15 місяців: аптайм 95,26%
Компанія сонячного хостингу. Ілюстрація: Дієго Мармолехо

Якщо покрити сонячними панелями весь балкон квартири і відкрити компанію сонячного веб-хостингу, то витрати на кожного клієнта будуть значно нижчими, ніж на єдиний сайт: економія від масштабу.

В цілому цей експеримент демонструє, що при певних обмеженнях комп'ютерна інфраструктура цілком може працювати на відновлюваних джерелах енергії.

Теоретично, такий сервер може навіть обійтися без акумулятора, якщо віддзеркалювати його в інших частинах світу. Наприклад, поставити дзеркала в Новій Зеландії та Чилі. Там сонячні панелі працюватимуть, коли у Барселоні ніч.

Джерело: habr.com

Додати коментар або відгук