Skrypt upstart w Ubuntu dla mongodb

11

Jestem nowy w Linuksie i Mongodbie. Zainstalowałem już mongodb na Ubuntu, ale chcę uruchomić jeszcze jedną instancję na innym porcie. Jak zrozumiałem z innych pytań i forów, musi istnieć skrypt wstępny. /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

Ale nie mogę znaleźć ani zlokalizować skryptu upstart na moim serwerze. Jeśli utworzę skrypt upstart, gdzie powinienem go zlokalizować, aby rozpocząć jako usługa.

czy jest jakiś inny właściwy i łatwy sposób na uruchomienie innej instancji mongodb na tym samym serwerze, ale na innym porcie.

Erhan A.
źródło

Odpowiedzi:

8

Czy korzystasz z repozytorium 10gen lub z domyślnego repozytorium Debian / Ubuntu? Polecam korzystanie z oficjalnego repozytorium 10gen.

Sprawdź ten link - [10gen MongoDB How-To Install na Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ . Najlepiej jest odinstalować poprzednią instalację mongodb przed tą zmianą, która będzie również wymagać modyfikacji źródła repozytorium (w /etc/apt/source.list), ale jest to również szczegółowo opisane w powyższym linku. Polecam używać upstart zamiast sysvinit, a przetworzone jest opisane w How-To.

Przy konfiguracji 10gen Ubuntu plik konfiguracyjny znajduje się w /etc/mongodb.conf.

Istnieje kilka sposobów na uruchomienie osobnego procesu mongod, jednym z nich byłoby po prostu uruchomienie go z poziomu cli -

sudo -u mongodb mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001 &

który wyprodukuje (używając „ps”)

mongodb   2210  3.3  1.5 259012 15300 pts/0    Dl   11:48   0:00 mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001

i możesz połączyć się poprzez cli -> mongod --port 3001

Innym sposobem jest utworzenie kopii pliku /etc/mongodb.conf -

sudo cp /etc/mongodb.conf /etc/mongodbnew.conf and editing the following lines in the new file - 


# mongodbnew.conf

dbpath=/var/lib/mongodbnew

#where to log
logpath=/var/log/mongodb/mongodbnew.log

port = 27018

Zmieniłem ścieżkę db dbath (gdzie przechowywane są pliki mongodb) z / var / lib / mongodb na / var / lib / mongodbnew; ścieżka dziennika zmieniła się z mongodb.log na mongodbnew.log, a port zmienił się z domyślnej 27017 na 27018 (będziesz również musiał usunąć #, aby odkomentować linię).

Zmieniłem również górną linię, aby odzwierciedlić nową nazwę tego pliku konfiguracyjnego.

Będziesz także musiał utworzyć katalog danych, ponieważ on nie będzie istniał, a bez niego proces mongod nie rozpocznie się i upewni się, że właścicielem i grupą jest mongodb -

sudo mkdir /var/lib/mongodbnew
sudo chown -R mongodb:mongodb mongodbnew/

Ponadto utwórz i zmień ustawienia pliku dziennika -

sudo touch /var/log/mongodb/mongodbnew.log && sudo chown mongodb:mongodb /var/log/mongodb/mongodbnew.log

Aby rozpocząć nowy proces mongod (w tle) z cli, wpisz

sudo -u mongodb /usr/bin/mongod --config /etc/mongodbnew.conf &

które wysyłają następujące elementy na ekran -

„wszystkie dane wyjściowe będą: /var/log/mongodb/mongodbnew.log”

Sprawdź, czy procesy mongod działają z „ps” -

sysadmin@ubuntu:/var/lib$ ps auwx | grep mongo | egrep -v 'grep|sudo'
mongodb    921 11.3  1.5 627672 15608 ?        Ssl  10:56   4:30 /usr/bin/mongod --config /etc/mongodb.conf
mongodb   2137  7.8  1.5 627672 15880 pts/0    Sl   11:36   0:00 /usr/bin/mongod --config /etc/mongodbnew.conf

Aby sprawdzić, czy możesz się połączyć, uruchom powłokę Mongo -

$ mongo --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
> 

Z lsof powinieneś teraz zobaczyć swoje dwa procesy mongod, pierwotnie powiązane z 27017, a nowe powiązane z 27018.

$ sudo lsof -i :27017
COMMAND PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  921 mongodb    6u  IPv4   9066      0t0  TCP *:27017 (LISTEN)
sysadmin@ubuntu:/var/lib$ sudo lsof -i :27018
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  2137 mongodb    6r  IPv4  11923      0t0  TCP *:27018 (LISTEN)

Aby upewnić się, że dwa procesy działają podczas uruchamiania, skopiuj oryginalny plik konfiguracyjny init -

sudo cp /etc/init/mongodb.conf /etc/init/mongodbnew.conf

co powinno dać w wyniku dwa pliki, takie jak -

$ ls -lart /etc/init/mongo*
-rw-r--r-- 1 root root 536 May  8 15:51 /etc/init/mongodb.conf
-rw-r--r-- 1 root root 554 Jun 11 11:43 /etc/init/mongodbnew.conf

Edytuj nowy plik mongodbnew.conf za pomocą vi lub cokolwiek, co wolisz wyglądać w ten sposób -


## Ubuntu upstart file at /etc/init/mongodbnew.conf

limit nofile 20000 20000

kill timeout 300 # wait 300s between SIGTERM and SIGKILL.

pre-start script
    mkdir -p /var/lib/mongodbnew/
    mkdir -p /var/log/mongodbnew/
end script

start on runlevel [2345]

stop na poziomie pracy [06]

script
  ENABLE_MONGODB="yes"
  if [ -f /etc/default/mongodbnew ]; then . /etc/default/mongodbnew; fi
  if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec                /usr/bin/mongod -- --config /etc/mongodbnew.conf; fi

koniec skryptu

Przetestowałem to na Ubuntu 12.04 i wydaje się, że działa dobrze, w tym po ponownym uruchomieniu. Oczywiście nie uruchomiłem go w produkcji. Przepraszam, jeśli jest jakaś literówka powyżej, ale jest wiele informacji i mogłem coś przeoczyć.

Wreszcie, oto link do zestawów replik, który może ci pomóc, ponieważ zawiera przykłady uruchamiania wielu instancji mongod z cli - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial .

Mark Hillick
źródło
Link do install-mongodb-on-debian-or-ubuntu-linux został zmieniony na docs.mongodb.org/manual/tutorial/install-mongodb-on-debian i docs.mongodb.org/manual/tutorial/install-mongodb -on-ubuntu .
Fernando Kosh
2

Z powyższą odpowiedzią napotkałem problem polegający na tym, że demon stop-start-demon nie uruchamia nowego procesu o tej samej nazwie więcej niż jeden raz. Istnieje jednak --nameargument, który pozwala zmienić linię w skrypcie upstart w /etc/init/celu włączenia nowej nazwy, aby się zaczęła. Coś takiego:

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --name mongodb-shard2 --exec /usr/bin/mongod -- --config /etc/mongodb-shard2.conf; fi

W tym przypadku --nameargument sprawia, że ​​ta instancja jest unikalna i pozwala jej rozpocząć się oddzielnie od innych instancji mongod.

Michael Peterman
źródło
0

upstart skrypty znajdują się w /etc/init/

jjwchoy
źródło
Dzięki, istnieje plik mongodb.conf, ale jest to domyślny plik conf dla domyślnej działającej instancji
Właśnie miałem okiem na moje mongodb.conf to źródła / etc / default / MongoDB przypuszczalnie do konfiguracji, a następnie rozpoczyna MongoDB używając start-stop-daemon
możesz skopiować ten plik i zmodyfikować polecenie, aby uruchomić mongodb z innym portem. prawdopodobnie chcesz podać zupełnie nowy plik konfiguracyjny, aby móc zmieniać pliki dziennika itp.