Хайбане.ru — Новости
No news is good news
Упал
Reply to 198 thread [ Back ]
[ Reply ]
 
Attach file
  • Supported file types are jpg, jpeg, png, gif, webm, swf, rar, zip, 7z, mp3, flac, ogv, txt, mp4
  • Bump limit is ∞
  • Max files size allowed is 25 MB
  • Images greater than 200x200 will be thumbnailed.
[ Close form | Show rules Hide Rules ]
Упал Ракка 01 August 2018 (Wed) 19:44:53
#198 Reply
jpg, 93.29 KB, 604x489
В ближайшее время (сутки-двое) будет небольшой downtime: перенесу хайбань на докер а потом и на кластер.

Upd. Перенес пока что без поиска и без тора.
Last modified 02 August 2018 (Thu) 00:44:29
Ракка 01 August 2018 (Wed) 21:02:47 #199 1 Reply
>>198
Зачем? Тут какая-то большая нагрузка или угроза национальной безопасности?
Если ты перенесешь хайбане в докер, то проблема с логами и невозможностью постить будет встречаться чаще, а чинить это будет сложнее.
Ракка 01 August 2018 (Wed) 21:58:43 #200 2 Reply
>>199
>Зачем?
Затем, чтобы можно было спокойно заниматься разработкой, а не тратить время на:
1. Настройку окружения и разрешение конфликтов разных версий Haskell и его библиотек
2. Сборку бинарника на локальной машине
3. Попытки запустить этот бинарник на сервере, ибо версии используемых либ не сходятся
4. Доставку нового бинарника на сервер, перезапуск, обновление конфигурационных файлов и т.п.
Именно это в большинстве случаев и отбивало у меня желание что-то делать в принципе. Алсо, процесс поднятия Борды упростился настолько, что теперь с этим справится любой школьник, сумевший установить Линукс уровня Ubuntu.
> то проблема с логами и невозможностью постить будет встречаться чаще,
Обоснуй. Не понимаю, с чего ты такое решил.
Ракка 01 August 2018 (Wed) 22:22:46 #201 3 Reply
>>200
Это называется "не очень хороший цикл разработки". Должны быть какие-то минимальные требования к зависимостям и окружению, чтобы не ебать себе этим мозг каждый раз, делая паблиш. И да, как будто докер сейчас взял и решил эту конкретную проблему.
> обоснуй
Я бы хотел, чтобы это сделал ты. С месяц назад здесь нельзя было постить и выбивало ошибку с кучей кракозябр. Прогнав её через две кодировки, я выяснил, что на винте кончилось месте, после чего кто-то писал, что всё забили логи. У меня закралось подозрение, что кто-то не выключает дебаг-логи, заливая бинарник на сервер, и пишутся их гигабайты. И как ты будешь это решать через докер? У него самого с логами проблемы, не то что внутренние смотреть.
Я не против докера, но всё равно не вижу в нём смысла в данном случае. Впрочем, как тебе легче, лишь бы постить можно было.
Ракка 01 August 2018 (Wed) 22:38:36 #202 4 Reply
jpg, 112.77 KB, 1280x720
>>201
>Должны быть какие-то минимальные требования к зависимостям и окружению, чтобы не ебать себе этим мозг каждый раз, делая паблиш.
Они и есть. Просто ты не представляешь, что такое разработка на (почти что legacy, кстати) Haskell с его dependency hell и кривыми пакетами, а так же чудесными cabal, cabal-install и stack. Не говоря уже о подводных камнях с компиляцией и кроссплатформенностью.
>И да, как будто докер сейчас взял и решил эту конкретную проблему.
Почитай что такое Docker, зачем он нужен и какие проблемы решает.
>И как ты будешь это решать через докер?
Я это уже решил, выключив дебаг логи для tor. Docker тут ни при чем. Хотя с ним логи теперь пишутся в stdout, а не в файл.
> но всё равно не вижу в нём смысла в данном случае.
Это странно, где же ты видишь в нем смысл тогда?
Ракка 01 August 2018 (Wed) 23:39:44 #203 5 Reply
>>202
Я пользовался докером. Он не решает проблем с зависимостями.
> дебаг логи
О них я и говорил.
Тем более, stdout - очень удобно, конечно (сарказм).
Я вижу смысл в докере, когда у тебя развернуто множество приложений или веб-платформ, которые не должны зависеть друг от друга или быть сгруппированы, находиться в изолированной среде и не слишком зависеть от хоста (что, как я уже говорил, не решает само по себе проблем с окружением). Вот ты запихнул борду в докер и тебе кажется это хорошим решением, ведь борда - это такой себе отдельный самостоятельный объект, но какие плюсы это принесёт самой борде и тебе в том числе? Тебе придётся париться ещё и с надстройкой, производительность неминуемо упадёт, и с моего личного опыта - просто узнать причину проблемы, возникшей в приложении в докере, сложнее, у тебя усложнён доступ к нему.
Ракка 02 August 2018 (Thu) 00:22:30 #204 6 Reply
jpg, 61.68 KB, 600x399
>>203
Если ты пользовался докером, тогда я в недоумении, почему ты не видишь его плюсов использования в данном случае. Давай еще раз попробую объяснить.
1. Окружение. Когда-то давно я пользовался дистрибутивом Gentoo, а на сервере стоял Debian. Пакеты, содержащие необходимые для сборки и запуска библиотеки, назывались по-разному, а зачастую и версии были не совместимы. Некоторых версий вообще не было в репах. Поэтому приходилось подгонять бинарник под те либы, что стояли на сервере. Следом у меня был Mint, сейчас MacOS –– и проблемы все те же. Либо что-то не устанавливается, либо не запускается на сервере. Только если раньше в зависимости от версии cabal/ghc/yesod и платформы могли не установиться зависимости к движку, то на MacOS у они не устанавливаются вообще ни в каких комбинациях, сколько бы я не перебирал. Иногда я вообще обновляю сервер, из-за чего Monaba тоже обычно перестает запускаться и требует пересборки. И это всё без докера. С докером я один раз написал Dockerfile, где указал нужный дистрибутив и пакеты и всё. Всё работает без проблем на любой системе и автоматизировано собирается в одну команду, а не в пару десятков как раньше.
2. Сборка. Выжирает почти всю память со свопом и грузит процессор. Делать что-то еще во время сборки нереально, а сервер такое компилить не тянет. Зато теперь есть GitLab с его CI/CD, который сам производит сборку после каждого коммита и пушит образы докера в реестр. Я о сборке теперь вообще не задумываюсь.
3. Deploy. Деревянный скрипт на Perl, который по scp закидывает архив с Monaba на сервер, заходит по ssh, вырубает старую версию, поднимает новую.
Сейчас всем рулит swarm, всё происходит в одну команду и даже без простоя.
>Тем более, stdout - очень удобно, конечно (сарказм).
Э, ну поудобнее, чем в файлах (не сарказм).
>у тебя усложнён доступ к нему.
Разве что необходимостью сперва зайти в шел контейнера.
test Ракка 02 August 2018 (Thu) 00:42:32 #205 7 Reply
#!/usr/bin/perl
use v5.12;
####################################################
my $user = "ahushh";
my $host = "haibane.ru";
my $path = "/home/ahushh/haibane/Monaba/dist/build/Monaba/";
my $key  = "$ENV{HOME}/.ssh/id_rsa";
#systemd
my $start_cmd = "systemctl --user start monaba";
my $stop_cmd = "systemctl --user stop monaba";
#openrc
#my $start_cmd = "sudo /etc/init.d/monaba start";
#my $stop_cmd = "sudo /etc/init.d/monaba stop";
####################################################
die "usage: ./upload.pl [version] [build|pack|upload|restart|clean|all]" unless defined $ARGV[0] && defined $ARGV[1];
my $v = $ARGV[0];
my $_ = $ARGV[1];
my $build  = /build|all/    ? "cabal clean && yesod build" : 'echo "skip building"';
my $pack   = /pack|all/     ? "cd dist/build/Monaba && strip Monaba && cp Monaba Monaba-$v && apack Monaba-$v.7z Monaba-$v" : 'echo "skip packing"';
my $upload = (/upload/      ? "cd dist/build/Monaba &&" : "") .
             (/upload|all/  ? "scp ". ($key ? "-i $key" : "") ." Monaba-$v.7z ${user}\@${host}:${path}" : 'echo "skip uploading"');
my $restart= (/restart/     ? "cd dist/build/Monaba &&" : "") .
             (/restart|all/ ? "ssh ". ($key ? "-i $key" : "") ." -t ${user}\@${host} 'cd $path && aunpack Monaba-$v.7z && $stop_cmd && cp Monaba-$v Monaba && $start_cmd && echo done'" : 'echo "skip restarting"');
my $clean =  (/clean|all/   ? "ssh -i $key -t ${user}\@${host} 'cd $path && rm Monaba-$v.7z Monaba-$v && echo done cleaning'" : 'echo "skip cleaning"');
system "$build && $pack && $upload && $restart && $clean";
 
Ракка 02 August 2018 (Thu) 00:43:22 #206 8 Reply
jpg, 64.30 KB, 604x482
Ракка 02 August 2018 (Thu) 01:31:13 #207 9 Reply
>>204
Ну хорошо, в чём-то ты меня убедил. Я не знаю особенностей обращения с хаскелем. Про гитлаб ты не упоминал, но там в принципе достаточно один раз конфиг сгенерить. А вот деплой-скрипт напоминает костыль, но видимо работает и ладно.
Понимаешь ли, для меня это всё равно оверхед, но я уже сказал - это не придирка, просто мнение, тебе-то удобнее наверное. Мне вообще докер не очень понравился, хотя я понимаю его плюсы. Как-то проблем слишком много с ним возникало в неожиданных местах (хотя и использовал я его с плохо тестированными вещами).
> поудобнее, чем файлах
Ну не знаю. Ты ведь перенаправил stdout или оно у тебя так и пишет в консоль? Она просто не бесконечная и как бы искать там потом в этом потоке что-то сложно. Хотя зачем тут вообще логи.
Ракка 02 August 2018 (Thu) 01:33:25 #208 10 Reply
>>204
Кстати, картинка выдаёт 404.
Ракка 02 August 2018 (Thu) 21:37:58 #209 11 Reply
>>208
Всё починил.
[ Reply ]
[ Get new posts ] [ Back ]
[ Mark all posts ]