Pull to refresh
36
0
Алексей @Lelik13a

Админских дел мастер.

Send message
Если вопрос к комментатору выше, про модуль split — то он просто задаёт соответствие входящим клиентам определённые значения, согласно желаемому распределению. Далее эти значения можно использовать как нужно.
Но Lua в дополнение к имеющимся методам nginx-a добавляет возможность обработать запрос методами языка программирования. Те же $uid_set или $uid_got и прочие значения можно проанализировать и изменить и куки сопоставить.
Использовал, хуже. К тому же он вычисляет хеш только по первым трём октетам и веса не работают.
Можно. А можно и более интересный алгоритм организовать и выбирать из пула серверов и тп.
Ну, я решал конкретную задачу и успешно, с минимальными изменениями системы в целом.
Чистого Nginx-а не достаточно, и о split модуле я писал в конце статьи. К тому же он реализует не такой случайный разброс как хотелось бы. А чтобы выставлять нужные куки нужным клиентам бэкенд нужно соответственно модифицировать. И настроить эту часть без участия бэкенда гораздо удобнее.
Такой подход предполагает поддержку со стороны приложения и идентичность на нодах, а это не всегда есть.
Варианты падений, роста нагрузки, тормозов бэкенда и тп можно обработать. Lua+Nginx в этом плане довольно интересны и позволяют всякое. В статье я привёл совсем уж простой вариант, но возможности есть.
У Xiaomi есть отличные wifi mi-mini и mi 3, на которые шьётся прошивка prometheus, превращая их в многофункциональные роутеры.
Это как посмотреть и что натолкнуло Эйнштейна на физическую теорию, не попытка ли придать смысл математической модели? Особенно, если учесть, что появление математической модели было задолго до физической.
А что же в статье совсем не упомянуты Преобразования Лоренца? Они смешивают — в отличие от преобразований Галилея — пространственные координаты и время, потому и стали основой для формирования концепции единого пространства-времени.
По нынешнем временам в баше предпочтительно использовать "[[ ]]" вместо "[ ]". На эту тему даже отдельный пункт есть в подводные камни Bash.
Ну, судя по проведённому эксперименту в конце, то /proc/meminfo точно берёт в расчёт. Может не напрямую, а через системные утилиты, которые уже смотрят туда.
По горячим следам накатал заметку.
Покопался в вопросе и таки решил:
LXC информирует контейнер о доступных ресурсах с помощью LXCFS. Если для контейнера это работает из коробки, то для докера нужно в ручную задать перемонтирование соответствующих файлов из /var/lib/lxcfs/proc/ в /proc/, например:
# like docker-compose 
mem_limit: 512m
volumes:
   - /var/lib/lxcfs/proc/meminfo:/proc/meminfo

И ура:
# docker exec CT_name free -m
             total       used       free     shared    buffers     cached
Mem:           512         13        499       4322          0          0


Естественно, lxcfs нужно поставить в систему и, возможно, в ручную смонтировать:
# mount | grep lxcfs
lxcfs on /var/lib/lxcfs type fuse.lxcfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)

У меня на сервере одновременно живёт и LXC и docker, потому лишних телодвижений делать не пришлось
Я не проверял последние докеры, но LXC версии 2.x, ограничения у которых тоже реализуется средствами cgroup, корректно определяют доступные ресурсы внутри контейнера:
# main
# free -m
             total       used       free     shared    buffers     cached
Mem:         32078      31807        271       2467       2165      21327

# container
# free -m
             total       used       free     shared    buffers     cached
Mem:         10240       5195       5044       2467          0          0



Debian
lxc 2.0.6-1~bpo8+1
kernel 4.9.13-1~bpo8+1

Посмотрите в сторону обновления докера и ядра.
Таки допилил проверку параметров базы через zabbix trapper.
GitHub
Может кому сгодится.
Спасибо, интересная штука. Только в статье вы зря привязывались к какому-то IDE, yapf прекрасно работает и в качестве консольной утилиты. Прогнал по своим винегрет-поделкам, доволен результатом.

Information

Rating
Does not participate
Location
Красноярск, Красноярский край, Россия
Date of birth
Registered
Activity