Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[fr] Изменить немного алгор итм try_files
Здравствуйте!
Никому не секрет, что в серверах, занимающихся раздачей статики узким
местом является iops дисков.
Представиим ситуацию, есть 8 дисков, эти 8 дисков обслужат больше
запросов, чем эти же 8 дисков в любом рейде. Но так как нам хотелось бы
иметь какой-то бекап и, желательно, чтобы не было простоя, если слетает
один из веников. Для этого я поделил веники по 4 шт. и сделал скрипт,
который запускаю раз в 10 минут (чаще файлы все равно не обновляются),
получился принцип рейд10.
#!/bin/bash
cp -aufx /storage1/* /storage2
cp -aufx /storage2/* /storage1
cp -aufx /storage3/* /storage4
cp -aufx /storage4/* /storage3
cp -aufx /storage5/* /storage6
cp -aufx /storage6/* /storage5
cp -aufx /storage7/* /storage8
cp -aufx /storage8/* /storage7
Все эти 8 веников объеденены с помощью aufs и при заливке файл рандомно
попадет на один из дисков и потом скриптом копируется на соседний.
При чтении, если использовать aufs, то получится, что запросы всегда
идут к тому диску, где первым найден файл: /storage1, /storage3,
/storage5, /storage7 (то есть по порядку как это делает сейчас
try_files), остальные диски при этом простаивают.
Если немного модифицировать алгоритм try_files, когда первый путь для
поиска будет выбираться рандомно и затем обходить все оставшиеся пути по
кругу, то мы получим равномерное распределение запросов по дискам в
такой конструкции:
try_files
/storage1$uri
/storage3$uri
/storage5$uri
/storage7$uri
/storage2$uri
/storage4$uri
/storage6$uri
/storage8$uri
--
WBR, Andrey Vasilishin CDIG1-UANIC, CDIG1-RIPE
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|