Первый прототип солнечного сервера с контроллером заряда. Фото:
В сентябре 2018 году энтузиаст из Low-tech Magazine
Можете зайти на сервер
Незадолго до рассвета 31 января 2020 года у него оставалось 42% заряда батареи. Рассвет в Барселоне в 8:04 по местному времени, после этого должен пойти ток с солнечной панели.
Зачем?
Десять лет назад эксперты
IT-компании запустили инициативы по переходу на альтернативные источники питания, но это сейчас невозможно. Все дата-центры потребляют в три раза больше энергии, чем генерируют все солнечные и ветряные установки в мире. Хуже того, производство и регулярная замена солнечных панелей и ветряков
Low-tech Magazine
Увеличение объёмов трафика
Ну и конечно, повышение нагрузки создаётся самим образом жизни: люди почти всё время проводят в интернете и во многом полагаются на различные веб-сервисы. Современное общество уже сложно представить без облачной IT-инфраструктуры (социальные сети, мессенджеры, почта и т.д.)
Конфигурация сервера и веб-сайта
В
Одноплатный компьютер
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
Операционная система
50-ваттная солнечная панель для веб-сервера и 10-ваттная панель для освещения гостиной в квартире автора
Статический сайт сгенерирован системой
Очень важный момент — сжатие изображений, поскольку без этой оптимизации практически невозможно сделать веб-страницы меньше 1 мегабайта. Для оптимизации было решено перевести фотографии в полутоновые изображения. Для примера, вот фотография девушек-телефонисток на коммутаторе в прошлом веке,
А вот оптимизированное полутоновое изображение размером
Полутоновые фотографии выбрали не только для оптимизации размера (решение довольно сомнительное), но и по эстетическим соображениям. Эта старая техника обработки изображений обладает определёнными стилевыми особенностями, так что у сайта получился в каком-то смысле уникальный дизайн.
623 иллюстрации на сайте журнала Low-tech Magazine после оптимизации уменьшились в размере со 194,2 МБ до 21,3 МБ, то есть на 89%.
Все старые статьи конвертировали в Markdown для простоты написания новых статей, а также для простоты резервного копирования через
На случай даунтайма организована возможность «офлайнового чтения»: тексты и картинки экспортируются в 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 года сервер показал
Но если не принимать во внимание последние два месяца, то время безотказной работы составило 98,2%, а время простоя — всего 152 часа, пишут разработчики. Время безотказной работы упало до 80% в течение последних двух месяцев, когда потребление энергии увеличилось из-за обновления программного обеспечения. Каждую ночь сайт отключался на несколько часов.
По статистике, за год (с 3 декабря 2018 года по 24 ноября 2019 года) потребление электроэнергии сервером составило 9,53 кВт⋅ч. Зафиксированы значительные потери в фотоэлектрической системе из-за преобразования напряжения и разряда батареи. Солнечный контроллер показал годовое потребление 18,10 кВт⋅ч, что означает эффективность системы порядка 50%.
Упрощённая схема. На ней не показаны преобразователь напряжения с 12 на 5 вольт и батарейный счётчик ампер-часов
За исследуемый период на сайт зашли 865 000 уникальных посетителей. Включая все потери энергии в солнечной установке, расход энергии на одного уникального посетителя составил 0,021 Вт⋅ч. Таким образом, одного киловатт-часа вырабатываемой солнечной энергии хватает на обслуживание почти 50 000 уникальных посетителей.
За время эксперимента испытывались солнечные панели разного размера. В таблице приведены расчёты, за какой время зарядятся аккумуляторы разной ёмкости при использовании солнечных панелей разного размера.
Средняя потребляемая мощность веб-сервера в течение первого года, включая все потери энергии, составила 1,97 Вт. Расчёт показывает, что для поддержания веб-сайта ночью в самую короткую ночь года (8 часов 50 минут, 21 июня) нужно 17,40 ватт-часа мощности хранения, а в самую длинную ночь (14 часов 49 минут, 21 декабря) нужно 29,19 Вт⋅ч.
Поскольку свинцово-кислотные батареи не должны разряжаться ниже половины ёмкости, серверу требуется батарея на 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. Например, если это региональное городское издание, куда не заходят посетители из других часовых поясов, а только местные жители.
То есть для сайтов с разной посещаемостью и разным аптаймом нужны аккумуляторы разной ёмкости и солнечные батареи разного размера.
Автор приводит расчёт, сколько энергии требуется для производства самих солнечных панелей (embodied energy) и сколько получается, если поделить это количество на ожидаемый срок службы в 10 лет.
Таким образом, можно рассчитать аналог ископаемого топлива, которое израсходовано на производство и эксплуатацию панелей. У Low-tech Magazine получилось, что за первый год работы их система (панель 50 Вт, батарея 86,4 Вт⋅ч) «сгенерировала» примерно 9 кг выбросов или эквивалент сжигания 3 л бензина: примерно столько же, сколько легковой автомобиль за 50 км хода.
Если запитывать сервер не от солнечных батарей, а от общей энергосети, то эквивалент выбросов вроде получается в шесть раз ниже: 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%). Сейчас конструктор рассматривает компактную
Компактный аккумулятор энергии на сжатом воздухе,
Рассматривается установка дополнительной ветряной турбины (её можно
Ещё один способ повышения эффективности системы — её масштабирование. Поднимать на сервере больше веб-сайтов и запускать больше серверов. Тогда уменьшится расход энергии в расчёте на каждый сайт.
Компания солнечного хостинга. Иллюстрация: Диего Мармолехо
Если покрыть солнечными панелями весь балкон квартиры и открыть компанию солнечного веб-хостинга, то затраты на каждого клиента будут существенно ниже, чем на единственный веб-сайт: экономия от масштаба.
В целом, этот эксперимент демонстрирует, что при определённых ограничениях компьютерная инфраструктура вполне может работать на возобновляемых источниках энергии.
Теоретически, такой сервер может даже обойтись без аккумулятора, если зеркалировать его в других частях света. Например, поставить зеркала в Новой Зеландии и Чили. Там солнечные панели будут работать, когда в Барселоне ночь.
Источник: habr.com