После неудачной попытки с ceph и советов забить на это, как от гуру-школьников на реакторе, так и на / админские истории :: openstack swift :: ceph и все все все :: разное

админские истории ceph и все все все openstack swift 
После неудачной попытки с ceph и советов забить на это, как от гуру-школьников на реакторе, так и на хабре, я уже почти опустил руки.

В это время тестировался gfs2. Но он оказался: во-первых, плохо масштабируемым; во-вторых, достаточно медленным; в-третьих, ооочень сложным и глючным. Явно не расчитан на "commodity hardware".

Я пустился в размышления - почему же это так сложно и тормознуто. Ведь задача простая - хранить файл в нескольких копиях на разных серверах + как-нибудь сохранить где именно он хранится. При желании, это реализуется достаточно просто и быстро даже вручную.

И тут я понял основную ошибку - я искал файловую систему. А в ней не просто хранение, но ещё и система прав и лок файлов. Они мне не были нужны, поэтому я отказался от понятия файловой системы. И тут же обнаружил Openstack Swift. Это простое хранилище данных.

- Работает через REST-интерфейс (обычный http).
- В случае падения одной из нод, работает без проблем дальше.
- Используется в wikimedia для хранения всяких картинок.

В общем, проект достаточно зрелый. Хотя информации о нём достаточно мало - возможно из-за того, что для работы с ним надо менять код и вместо файловых методов использовать сетевые. Развернул, обнаружил несколько особенностей, которые не сильно повлияли на дальнейшие действия:
1) при большом количестве файлов, он может добавлять порядка 50 файлов в секунду. Для больших скоростей нужен ссд. Ну в обычное время у меня добавляется несколько файлов в минуту. Поэтому до этого предела ещё далеко.
2) полностью рабочая нода - это 15 разных демонов. Вначале немного охреневаешь от такого изобилия. Но со временем понимаешь, что всё чётко и стройно. Просто они, следуя философии unix, разделили разные функции на разные демоны. Во время первоначальной синхронизации, я отключил некоторые демоны и скорость возросла раза в два.
3) первоначальная заливка всего контента заняла порядка 2 недель неспешного копирования. Днём копирование отрубалось, чтобы не мешать реактору работать.

Итак, результаты:
1) уже 3 недели все новые картинки заливались в свифт. При чтении иногда они брались с диска, иногда - из свифта.
2) с начала этой недели картинки читались только из свифта. Они ещё писались на диск на всякий случай, но не читались
3) с сегодняшнего утра всё полностью перешло на свифт. На диск больше не пишется и не читается. В последний раз забэкаплю и на след.неделе удалю с боевых серверов.

Таким образом, я избавился от одной из трёх точек отказа. Ура!

Ну и всякие дополнительные мелочи:
1) во время переноса свифта обнаружил, что картиночный сервер упирается в канал 100Мбит в часы пик. Вовремя я начал чесаться по поводу его переноса... =)
2) следующая точка отказа, которую надо будет устранять, - mysql. Раньше думал, что придётся переходить на postgresql, ибо в мускуле всё плохо с репликацией, failover и вообще версия 5.5 (которая появилась после покупки ораклом) у них очень плохая вышла. Коммуна была расстроена и считала, что оракл убьёт мускуль. Но в феврале этого года вышла версия 5.6, которая удивительно хорошо работает - быстрее 5.5, добавлены фичи для репликации из коробки, для php выпустили плагин с load-balancing и failover. В общем, похоже мускуль воскрес из мёртвых и мне это нравится, ибо не хочется переучиваться на постгрю.
3) написал хостеру, что наблюдаю днём пакетлост 0.1%, а по вечерам наблюдаю пакет-лост 0.5%. На удивление, не послали нахрен, а начали разбираться. Хоть и достаточно вяло.
4) после того, как перешёл на swift, на серверах стало нехватать памяти (всего 16Гб). Пришлось перейти с apache на nginx+php-fpm. Из-за того, что фротэнд держал с бэкэндами keel-alive соединения, получил выигрыш в памяти в 3 раза - 300 Мб вместо 1Гб.
5) настроил себе в заббиксе красивые картинки. Теперь если что-то торимозит - я не бегаю по серверам, а запускаю один экран и всё сразу видно:
3 3 3 3 lS 3 3 3 S 3 3 3 Ü3333gg 3 3 3 3 3 3 3 3
1
S 3 3 3 3 g 3 3 3 3 3 3 3 3 ¡ 3 s i S 3 g g 3 3 3 3 3 3 3 3 !
!=Ë Si I I I 1
servl2: CPU Loads (lh)
3 3 3 3 3 ^ 3 3 3 3 3 3 3-ÜÜ 3 3 3 3 3 3 3 3 3 3 3
I
Sa Si I I 11 1
SS 3 3 3 1 3 3 3 S S 3 3 3 ^ i i 1 i 3 3 3 3 S 3 3 3 3 3 3 S0
I	i
Подробнее
3 3 3 3 lS 3 3 3 S 3 3 3 Ü3333gg 3 3 3 3 3 3 3 3 1 S 3 3 3 3 g 3 3 3 3 3 3 3 3 ¡ 3 s i S 3 g g 3 3 3 3 3 3 3 3 ! !=Ë Si I I I 1 servl2: CPU Loads (lh) 3 3 3 3 3 ^ 3 3 3 3 3 3 3-ÜÜ 3 3 3 3 3 3 3 3 3 3 3 I Sa Si I I 11 1 SS 3 3 3 1 3 3 3 S S 3 3 3 ^ i i 1 i 3 3 3 3 S 3 3 3 3 3 3 S0 I i :=113 111 I
админские истории,разное,ceph и все все все,openstack swift
Еще на тему
Развернуть
я знаю кунг-фу, ушу, айкидо, джиу-джитсу, и много других страшных слов. Но ты превосходишь любого в их количестве
pokÉmon pokÉmon 26.04.201313:45 ответить ссылка -0.4
>Пришлось перейти с apache на nginx+php-fpm.

Давно бы так :)

А с репликацией и в постгресе тоже не всё так радужно, по слухам.
drakmail drakmail 26.04.201314:43 ответить ссылка 0.1
ну разница сказалась из-за keep-alive соединений, в основном. На фронтэнде 5 тредов нгинкса и каждый из них открывает 4 соединения. На этом и жрались ресурсы апача. А тут nginx фронтэнда подключается к nginx бэкэнда и тот уже без keep-alive (всё равно всё локально) работает с php-fpm
koka koka 26.04.201315:08 ответить ссылка 0.0
Через unix sockets хоть?
неа, tcp/ip
koka koka 26.04.201316:56 ответить ссылка 0.0
если локально, то зачем дополнительные tcpip ? переключай на сокеты смело.

З.ы. а я же говорил пробуй на php-cgi перейти, как видишь ресурсы освободились.
я знал, что они освободятся. Просто в тот момент они не нужны были =). А тут за счёт ещё одного эффекта - выигрыш составил не в полтора раза, а в 3 =).

Разницы между tcpip и socket по скорости почти нет. Но я уже наталкивался на багу nginx с сокетами. Правда при использовании модуля proxy, а не fastcgi. На данный момент бага не поправлена. Поэтому не хочу проверять, есть ли эта бага в модуле fastcgi ради мифических процентов скорости.
koka koka 26.04.201318:48 ответить ссылка 0.0
Эм, погоди. proxy это который proxy_pass? он не работает с сокетами, для этого fastcgi_pass
у тебя слишком большая каша в голове.
1) модуль proxy и fastcgi работают на совершенно разных протоколах. Первых - на Http. Второй - на cgi
2) Proxy замечательно работает с сокетами. См документацию http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_pass
koka koka 26.04.201318:57 ответить ссылка 0.0
Не так замечательно видимо если есть бага, как ты пишешь. А в чем баг то заключается? а то я не использую proxy_pass в контексте с сокетами, а с fastcgi_pass проблем никогда не наблюдалось.
при больших нагрузках время от времени рвётся соединение и запрос уходит в 499 ошибку. У меня проявлялось достаточно часто - раз в несколько секунд.
koka koka 26.04.201319:37 ответить ссылка 0.0
А версея Nginx какая?
последняя стабильная 1.2.8. Сейчас уже эту ошибку не найду - я перевёл всё на tcp/ip. Но в рассылке nginx она поднималась. Разработчики её подтверждали, но когда исправят - не говорили. С тех пор пара версий уже вышла без фиксов.
koka koka 26.04.201320:23 ответить ссылка 0.0
В последней версии nginx уже есть SPDY было бы интересно посмотреть как оно себя ведет в реальности...
c1615253 c1615253 19.05.201318:12 ответить ссылка 0.0
подозреваю, что для реактора будет медленее http. Тут итак всё разнесено на разные домены, поэтому загрузка идёт параллельно.
koka koka 19.05.201318:19 ответить ссылка 0.0
Ты вскользь про канал сказал: а хетз не расширяет клиентам каналы (1-10гбпс)?
c1615253 c1615253 19.05.201318:18 ответить ссылка 0.0
хетцнер до 1Гбит расширяет. Но он там стоит дороговато
koka koka 19.05.201318:21 ответить ссылка 0.0
А не интересовался как фб и вк с такими задачами справляются?
c1615253 c1615253 19.05.201318:41 ответить ссылка 0.0
подозреваю, что что-то похожее и возможно самописное. Там не сложно написать то =)
koka koka 19.05.201318:49 ответить ссылка 0.0
Примерно так - http://api.yandex.ru/elliptics/
Только у них тоже свои велосипеды.

Сорри за некропостинг, но вдруг ещё надо)
а как отдаются картиночки обратно из свифта? там же нет структуры каталогов и вообще..
я просто вижу несколько вариантов, но хочу услышать рабочий непосредственно)
чем подробнее, тем лучше
вся мета-информация о картинке хранится в БД. Отдаются через пхп. Запросом в БД узнаём какую именно картинку надо отдать, получаем её из свифта, отдаём. Nginx кэширует частозапрашиваемые картинки. При желании, можно соптимайзить, чтобы пхп делал редирект на свифт (чтобы nginx его обрабатывал), но вломы =).

По поводу структуры каталогов:
1) они её условно-поддерживают. Можно делать листинг внутри одного каталога и т.д.
2) в моём случае она совершенно не нужна =)
koka koka 22.05.201322:29 ответить ссылка 0.0
http://habrahabr.ru/post/180415/

а ты варниш используешь?
c1615253 c1615253 22.05.201323:18 ответить ссылка 0.0
я про ceph писал в админских историях =). Сырой и тормозной.

варниш на реакторе - не использую. В другом проекте - использую.
koka koka 23.05.201300:08 ответить ссылка 0.0
С ты пробовал монтировать свифт с помошью cloudfuse? Чета он у меня неприятно и непонятно падает
Не использую. Я бы вообще не рекомендовал использовать файловую систему для облачных хранилищ. Ибо добавляет тормозов/разсогласованности, а никаких плюсов не несёт (кроме очень небольшого облегчения работы с файлами). Намного лучше мета-данные хранить в БД, а в облачном хранилище только обезличенные данные, которые вытаскивать через rest-интерфейс когда надо.
koka koka 12.10.201309:50 ответить ссылка 0.0
Эт я понимаю, понял уже все минусы, только выхода особого нет. У радивы SSD на 40 гб. Для того чтобы перепилить радиву под рест надо будет оче дохуя трудозатрат. Какие есть альтернативы хранения тысяч аудиофайлов?
А эти файлы не поместятся на одном винте чтоль? =)
koka koka 13.10.201308:49 ответить ссылка 0.0
Ну в виртуалку винт не воткнешь, иначе не было бы таких проблем
На виртуалке свифт не поднимешь. Да и свифт сделан для того, чтобы запускать его как минимум на 5 нодах.
koka koka 13.10.201310:23 ответить ссылка 0.0
вернее, свифт ты поднимешь, но как только он начнёт хоть как-то серьёзно использоваться - тебя админы виртуалки сгонят с неё =). Ты топологию свою расскажи. Где у тебя винт с данными, где ты хочешь доступ к нему иметь?
koka koka 13.10.201310:25 ответить ссылка 0.0
Дык я не поднимаю свифт, я его покупаю =D
Суть такова: есть два сервера, на одном nginx отдающий исключительно статику, на втором вещалка(icecast/airtime/liquidsoap) и апач. Оба с крохотными SSD, тот что с вещалкой помощнее т.к. liquidsoap нещадно жрет ресурсы. С первым все норм, а вот второму нужно много места, где airtime будет хранить медиатеку и вероятно записи эфиров. Хранит он её на жестком диске в 4х каталогах. Вот оно - место проблем.
Естеснно я ищу внешнее хранилище данных, а первыми в глаза лезут у нас сейчас модные облачные сервисы
S3 не может в каталоги и одна тулза охуительнее другой просто(я вчера случайно невидимый каталог, в который зайти можно было, а в листинге его не было), с cloudfuse всё совсем печально(мейнтейнер полебался кудато почти полгода назад, но сегфолт мы ночью побороли).
Я уже на все согласен, хоть ftpfs, лишь бы не масштабируемая параша, непригодная для моих нужд
airtime это такая помесь из пхп(зенд фреймвёрк), питона, ликвидсоап и чьей то матери
((Cleaning Fork
Artifact — Equipment
“How I am going to clean the toilet with the fork?!”
— Epiphancev, the Brother
Equip 3
Equipped creature gains +3/+0 when blocking or been blocked by artifact creatures.
я бы арендовал сервак в каком-нибудь хецнере да подмонтировал его диск через iscsi или ftpfs (или nfs, или smbfs, вариантов куча =).

Облачные хранилища монтировать заипёшься имхо. У селектела вот список софта для работы со свифтом:

supload Linux (bash) Утилита для загрузки файлов в хранилище
Cyberduck Windows/Mac Комплексная система доступа к облачным хранилищам
FileZilla Windows/Linux/Mac Удобный бесплатный FTP-менеджер
Gladinet Windows Комплексная система доступа к облачным хранилищам
SMEStorage Windows/Mac/Mobile Набор программ для работы с облачным хранилищами
pycloudfuse Linux (fuse) Монтирование облачного хранилища через fuse
CloudFuse Linux (fuse) Монтирование облачного хранилища через fuse
ftp-cloudfs FTP FTP сервер для транслирования ftp запросов к облачному хранилищу
sftp-cloudfs SFTP SFTP сервер для транслирования sftp запросов к облачному хранилищу
swift client Windows/Linux/Mac (python) Утилита для работы с OpenStack Swift совместимыми хранилищами
koka koka 13.10.201311:09 ответить ссылка 0.0
> или ftpfs (или nfs, или smbfs, вариантов куча =).
Эх, как вам хорошо если у вас nfs не становится раком :(
И ты уверен, что у тебя медиатека не помещается в 40Гб? О_О
А записи эфиров можно хранить в свифте и сразу отдавать оттуда.
koka koka 13.10.201311:13 ответить ссылка 0.0
>pycloudfuse
Ночью ржали "Last updated 2 years ago" и такая ситуация почти со всем клиентским фьюз софтом. Вот еще ржака
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=703638
>CloudFuse
Аналогично, 4 месяца тишины. Сегфолт на 386й строке https://github.com/redbo/cloudfuse/blob/master/cloudfsapi.c

Я все же надеюсь найти нормальное хранилище, а не целый сервер, ведь мне нужны только ресурсы жесткого диска и узкий канал, да и за инфраструктуру будет отвечать Вован Суперлинуксадмин, а не я :3 Ну как люди до openstack то жили, неужели никто какой нибудь NAS не продает или типа того
Средненький исполнитель за свою карьеру делает 1Гб аудио, это ~200 треков. 40-200 исполнителей оче мало, нам под блоки(динамические плейлисты) с блюзо джазовым гавном даже не хватит
С записями все просто, их запись и складирование - мой liq скрипт, в свифт положить смогу.
ну дык выберите то, что не сильно гавно. Зачем шафлить всё, что исполнитель за свою карьеру написал =).

Часто хостеры предоставляют услугу бэкапа по фтп. Можешь спросить можно ли этот бэкап использовать для твоих нужд. Может разрешат =)
koka koka 13.10.201311:37 ответить ссылка 0.0
Да, нашел наконец http://www.adrive.com/plans
Подключили sshfs, полет нормальный. 500 гб за 12 баксов
а вы sshfs юзаете для считывания в 1 поток для радио да?

а то ж при серъезном использовании оно должно работать ещё хуже чем nfs по идее.
заббикс-хуябикс...
sauri sauri 14.03.201409:15 ответить ссылка 0.0
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты