Systemd: mongodb sonrası otomatik başlatma servisi


2

ubuntu16.04.1, sistemd

Bir uygulama mongodb'a bağlıdır. Uygulama ve mongodb, servisler olarak önyüklemeye başlar. app.service sonraki satırı içerir:

After=network.target mongod.service

Ne yazık ki, uygulama başarısız olur (veritabanı hatasıyla bağlantılı olarak), mongodb'un başlatılması ve bağlantıya hazır olması için biraz zamana ihtiyacı olduğu için (uygulamayı daha sonra başlatırsam, her şey yolundadır) sanırım.

Benziyor Type=notify (içinde [Service] bölümü mongod.service ) eğer mongodb sisteme uygun bir bildirim gönderirse sorunu çözecektir. Ancak bunun hakkında herhangi bir belge bulamadım.

Soru, mongodb'un gelen bağlantılar için hazır olacağından, uygulamanın otomatik olarak nasıl başlatılacağı.

Yanıtlar:


2

Benzer bir sorunla karşılaştım ... MongoDB bağlantıyı kabul etmeye hazır olduğunda Mongo-Connector'u başlatmak istedim.

Düzeltmeyi biraz gezdikten sonra buldum. Düzeltme, mongodb birim dosyasında ExecStart satırından sonra aşağıdaki ExecStartPost satırını ekleyecekti.

ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
ExecStartPost=/bin/sh -c 'while ! /usr/bin/mongo --eval "db.version()" > /dev/null 2>&1; do sleep 0.1; done'

Bu Ubuntu 16.04 sunucumda başarıyla test edildi.


1

Gelecekte başvurmak için bu çözümü işe aldım: https://gist.github.com/jwilm/5842956#gistcomment-2706797 Bu şekilde mongodb, systemd bir sonraki servise başlamadan önce veritabanına erişilinceye kadar engeller. Ve bir uyku içermez.

Mongodb'a bağlı servisleriniz varsa, config mongodb servisi veri tabanı çevrimiçi olmadan önce geri döndüğü için config biraz daha zordur. Bu hızlı uygulamaların denemesine ve veritabanına bağlanmamasına neden olabilir. Bunu önlemek için, /etc/mongod.conf dosyasına şunu ekleyin:

processManagement:
    fork: true

Ardından, /etc/systemd/system/mongod.service.d/mongod.conf (varolan / lib/systemd/system/mongod.service) 'ı aşağıdaki içerikle oluşturun:

[Service]
Type=oneshot
RemainAfterExit=yes

Bu, sudo systemctl start mongod'un sunucuyu çatallı bir işlemle başlatmasına ve sadece veritabanı hazır ve bağlantılara hazır olduktan SONRA döndürmesine neden olur. Bu şekilde, bağımlı hizmetler yalnızca db canlı olduktan sonra çağrılır.


1
Süper Kullanıcıya Hoşgeldiniz! Buradaki çözüme ilişkin ilgili adımları buraya ekleyebilir misiniz? :)
bertieb

@bertieb Bağlantıdaki içeriği blockquote olarak ekledim: thumbsup:
WilbaltSlayerOfGargoyles
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.