← All posts tagged lxc

Balancer

Похоже, нужно возвращаться к идее индивидуальных серверов БД в LXC-контейнерах. С одной стороны, это заметный оверхед по памяти/кешам, из-за которых я и пришёл к идее использования общей БД на хосте для всех контейнеров, с другой стороны, начинается каша при попытке многосторонней репликации баз данных и лишний геморрой при переносе контейнера на другой сервер. Когда всё в локальной БД контейнера, то этот контейнер можно тупо запаковать и перебросить куда надо целиком.

Единственное, над чем надо ещё подумать, делать ли LXC-контейнер полностью автономным или держать два отдельных контейнера для БД и для сайта. Во втором случае получаются лишние сущности, но процесс переноса можно разделить на этапы.

Balancer

Забавно, но в Ubuntu сейчас, по сравнению с 14.04 скорость LXC упала, а скорость Docker выросла. Раньше LXC-контейнер отдавал статику и PHP-скрипты с такой же скоростью, как и хост, а Docker — раз в 5 медленнее. Сейчас, не знаю, что повлияло больше, ядро системы или соответствующие версии софта, но для простого `echo 2*2` на php7 скорость отдачи у меня:

— На хосте: 20-22 krps
— В LXC-контенере: 8-10 krps
— В Docker-контейнере: 9-15 krps

При чём у LXC более быстрый вариант php-fpm, с сокетом, а в Doker — с сетевым интерфейсом.

Balancer

Пришёл к идее, что, если удастся нормально настроить под MariaDB произвольную мастер-мастер репликацию индивидуальных БД (т.е. разные БД — на разные сервера), то надо нафиг выносить MariaDB из контейнеров («в каждом своя») на хост. Достало оверхедить памятью :)

Balancer

Тля. Gentoo уже и в роли чисто хоста для контейнеров всё опаснее. Взяли и в LXC в init.d молча перенесли содержимое контейнеров в /var/lib/$container_name. Мало того, что полный идиотизм (нафига мне /var/lib засорять десятками контейнеров?), так ещё и без предупреждения — всё нафиг отвалилось после перезагрузки...

data.gpo.zugaina.org

LXC_PATH="/var/lib"

что характерно, если тупо поменять на LXC_PATH="/var/lib/lxc", то не работает, ругается, что не находит конфига. Если переложить в старый gentoo-заскок в виде /etc/lxc и прописать LXC_PATH="/etc/lxc", то тогда всё нормально.

Короче, в очередной раз поломали нафиг работающую систему.

Balancer

Отлично! weave позволяет на лету связывать в одну сеть уже запущенные контейнеры Docker и LXC. Жаль только, что не позволяет автоматически сменить точку входа в сеть, если исходная отваливается. Можно, конечно, скриптом попробовать оптимизировать, типа, если один внешний хост перестаёт пинговаться, то переключаемся на резервный... Может, есть более прямая альтернатива?

Balancer

Эти контейнеры меня доведут :D Поднял в контейнере MariaDB, настроил репликацию с удалённого сервера, дня три она крутилась, а сегодня сервер с контейнером перезагрузил. Лезу в MySQL — нет ответа. Хм. Начинаю ковыряться в Docker образах. В docker ps пусто. В docker ps -a вижу два container_id с образом mariadb. Запускаю один — фигушки. Другой — стартует. Потом становится понятно, что первый стартовал просто как mysql-клиент ко второму. Ладно, лезу в контейнер — репликации нет, головной сервер не настроен o_O. Лезу в /var/lib/mysql — там файлы от 01 декабря O_o. Потом смотрю, ещё и объём базы вместо 15Гб что-то около 300Мб...

В общем, ковырялся минут 40 в общей сложности, даже find'ом искал по всему диску БД по имени... Пока не догадался в lxc-ls глянуть и увидеть, что я базу-то в LXC-контейнере поднимал :D Как раз, специально, ибо сложная MySQL-конфигурация тянет не на приложение, а комплекс приложений. Придётся, походу, всё строго документировать, а то запутаться в десятках разнотипных контейнеров на полудюжине серверов как делать нефиг...

Balancer

Начал разгребать почту на admin@ — увидел, что недавно наступил год, как я активно переехал на LXC (почта с первых 5-6 контейнеров от января 2013-го). Сейчас LXC-контейнеров десятка полтора, некоторые — под довольно приличной нагрузкой. За весь год не было ни одного происшествия, связанного с LXC. Думаю, вполне показатель :)

В гостевых системах используют почти исключительно Ubuntu (версии разные, LTS. 13.10, даже 12.10). Хостовые системы на старых/своих машинах Gentoo, на новых (DigitalOcean и Hetzner) — Ubuntu LTS.

Balancer

LXC рулит, однако. Дошли руки до поковыряться со старыми данными munin, недоступными из-за апгрейда 32 to 64 бит. Дамп, как обычно, вовремя был забыт, только бинарные файлы. Ну и традиционное «ERROR: This RRD was created on another architecture». А тут осенило. Глянул — LXC отлично поддерживает 32-х битные контейнеры в 64-х битном хосте.
[code=bash]
lxc-create -n ubuntu32 -t ubuntu — -r quantal -a i686
[/code]
и готово. Загрузился в 32-х битный контейнер, сделал дамп старых .rrd, вышел в хост, восстанвил из дампа уже на 64-х битах, через gist.github.com — и готово. Старые данные уже доступны снова:
balancer.ru

Теперь надо, наконец, разобраться с munin на тему динамических графиков, чтобы смотреть и данные старше, чем за год. Ну и на Авиабазе попробовать восстановить архив munin'а, там в конце 2009-го такая же бяка была, тогда не решённая :)