Size: a a a

2019 December 24

DG

Dmitriy Gumeniuk in DevOps
https://delex-conf.com
DevOps and TestAutomation Conference.
14-15.02.2020 - Минск, Беларусь
конференция об DevOps практиках, автоматизациии тестирования, ТестОпс.
1.5 дня конференци с happy-hour и 32 докладчиками, в первую очередь направленные на senior аудиторию, без менеджерских и junior докладов.
SIEM, AWS миграции, секьюрити и аудит процессы, мультиакканутность и так далее.
Доклады имеют пересечение с процессами автоматизации и тестовыми инфраструтурами.
источник

PK

Phil Kulin in DevOps
Я разрешил
источник

A

Andrey in DevOps
George Gaál
forking поставить. вроде так
я использую type=forking
[Unit]
Description=Resque Service
[Service]
Type=forking
PIDFile=/home/deploy/shared/tmp/pids/resque_work_1.pid
User=deploy
WorkingDirectory=/home/deploy/current
Environment="RAILS_ENV=stage"
ExecStart=/home/deploy/.rbenv/shims/bundle exec rake COUNT=5 QUEUE=sms PIDFILE=tmp/pids/resque_work_1.pid BACKGROUND=yes INTERVAL=5 resque:workers
[Install]
WantedBy=multi-user.target


в итоге я получаю
systemctl status resque.service
● resque.service - Resque Service
  Loaded: loaded (/etc/systemd/system/resque.service; disabled; vendor preset: enabled)
  Active: active (running) since Tue 2019-12-24 12:49:24 UTC; 3min 16s ago
 Process: 1713 ExecStart=/home/deploy/.rbenv/shims/bundle exec rake COUNT=5 QUEUE=metro PIDFILE=tmp/pids/resque_work_1.pid BACKGROUND=yes INTERVAL=5 resque:workers (code=exited, status=0/SUCCESS)
Main PID: 1965 (ruby)
   Tasks: 31 (limit: 4704)
  CGroup: /system.slice/resque.service
          ├─1881 resque-1.27.4: Waiting for metro
          ├─1892 resque-1.27.4: Waiting for metro
          ├─1905 resque-1.27.4: Waiting for metro
          ├─1937 resque-1.27.4: Waiting for metro
          └─1965 resque-1.27.4: Waiting for metro


но pid файл 1, а процессов 5
источник

A

Andrey in DevOps
можно конечно отдельно создать каждый процесс resque service и потом через target запускать
[Unit]
Wants=resque1.service resque2.service resque3.service


но проблема с pid файлами все равно сохраняется, через capistrano оно в разнобой берет очереди и запускает, а через systemd будет прописан pid и будут не состыковки при передеплое
источник

GG

George Gaál in DevOps
Andrey
я использую type=forking
[Unit]
Description=Resque Service
[Service]
Type=forking
PIDFile=/home/deploy/shared/tmp/pids/resque_work_1.pid
User=deploy
WorkingDirectory=/home/deploy/current
Environment="RAILS_ENV=stage"
ExecStart=/home/deploy/.rbenv/shims/bundle exec rake COUNT=5 QUEUE=sms PIDFILE=tmp/pids/resque_work_1.pid BACKGROUND=yes INTERVAL=5 resque:workers
[Install]
WantedBy=multi-user.target


в итоге я получаю
systemctl status resque.service
● resque.service - Resque Service
  Loaded: loaded (/etc/systemd/system/resque.service; disabled; vendor preset: enabled)
  Active: active (running) since Tue 2019-12-24 12:49:24 UTC; 3min 16s ago
 Process: 1713 ExecStart=/home/deploy/.rbenv/shims/bundle exec rake COUNT=5 QUEUE=metro PIDFILE=tmp/pids/resque_work_1.pid BACKGROUND=yes INTERVAL=5 resque:workers (code=exited, status=0/SUCCESS)
Main PID: 1965 (ruby)
   Tasks: 31 (limit: 4704)
  CGroup: /system.slice/resque.service
          ├─1881 resque-1.27.4: Waiting for metro
          ├─1892 resque-1.27.4: Waiting for metro
          ├─1905 resque-1.27.4: Waiting for metro
          ├─1937 resque-1.27.4: Waiting for metro
          └─1965 resque-1.27.4: Waiting for metro


но pid файл 1, а процессов 5
не понимаю
источник

GG

George Gaál in DevOps
ты что хочешь получить, а еще я не понимаю как капистрана работает
источник

GG

George Gaál in DevOps
> но pid файл 1, а процессов 5
тебе пид для чего нужен? Чтобы системди мониторил сервис? Или чтобы они коммуницировали друг с другом?
источник

GG

George Gaál in DevOps
у меня строгое ощущение, что ты не понимаешь как системди работает - честно, это не проблема. Посидеть и разобраться. Тем более с хорошими коллегами )
источник

GG

George Gaál in DevOps
лет 10 назад я тоже.... офигел бы
источник

A

Andrey in DevOps
George Gaál
> но pid файл 1, а процессов 5
тебе пид для чего нужен? Чтобы системди мониторил сервис? Или чтобы они коммуницировали друг с другом?
хотелось бы их коммуницировать друг с другом
источник

GG

George Gaál in DevOps
Andrey
хотелось бы их коммуницировать друг с другом
опция PIDFILE в системди юните не для этого
источник

GG

George Gaál in DevOps
🤦‍♂️ а для чего - я объяснил
источник

ЖС

Жук Самсаед in DevOps
используй сокет, люк
источник

GG

George Gaál in DevOps
если очень хочется - можно даже шаблонизированные системди юниты писать
источник

GG

George Gaál in DevOps
источник

GG

George Gaál in DevOps
типо так. Оно может тебе помочь из одного шаблона хоть 5, хоть 10, хоть 20 рескью запускать. Но все равно не понимаю как тебе это поможет
источник

A

Alexander in DevOps
Andrey
подскажите, как тогда лучше сделать старт/стоп процессов resque, если resque сейчас запускается вот так
desc "Start Resque workers"
 task :start do
   for_each_workers do |role, workers|
     on roles(role) do
       create_pid_path
       worker_id = 1
       workers.each_pair do |queue, number_of_workers|
         info "Starting #{number_of_workers} worker(s) with QUEUE: #{queue}"
         number_of_workers.times do
           pid = "#{fetch(:resque_pid_path)}/resque_work_#{worker_id}.pid"
           within current_path do
             execute :nohup, %{#{SSHKit.config.command_map[:rake]} RACK_ENV=#{rails_env} RAILS_ENV=#{rails_env} #{fetch(:resque_extra_env)} QUEUE="#{queue}" PIDFILE=#{pid} BACKGROUND=yes #{"VERBOSE=1 " if fetch(:resque_verbose)}INTERVAL=#{fetch(:interval)} #{"environment " if fetch(:resque_environment_task)}resque:work #{output_redirection}}
           end
           worker_id += 1
         end
       end
     end
   end
 end

т.е. pid файлы создаются при старте/рестарте через capistrano resque_work_1.pid resque_work_2.pid resque_work_3.pid и т.д., а если я буду запускать руками команду в systemd
bundle exec rake COUNT=5 QUEUE=sms PIDFILE=tmp/pids/resque.pid BACKGROUND=yes INTERVAL=5 resque:workers

то у меня запускается 5 процессов resque c одним pid файлом в tmp/pids/resque.pid и у меня получается разнобой с pid файлами
Думаю, тебе нужен вот этот механизм, если хочешь иметь возможность рулить инстансами по отдельности
http://0pointer.de/blog/projects/instances.html
источник

GG

George Gaál in DevOps
Alexander
Думаю, тебе нужен вот этот механизм, если хочешь иметь возможность рулить инстансами по отдельности
http://0pointer.de/blog/projects/instances.html
👍 так я про тот же механизм по сути
источник

I

Ivan in DevOps
приветствую коллеги.
кто нибудь настраивал триггеры в гитлабе?
https://gitlab.mtsai.tk/help/ci/multi_project_pipelines.md#mirroring-status-from-triggered-pipeline
источник

I

Ivan in DevOps
у меня джоба падает в пендинг и дальше тишина. не могу понять чего нехватает
источник