Upstart скрипт в Ubuntu для Mongodb

11

Я новичок в Linux и Mongodb. Я уже установил mongodb в Ubuntu, но я хочу запустить еще один экземпляр на другом порту. Как я понял из других вопросов и форумов, там должен быть выскочка сценария. /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

Но я не могу найти или найти сценарий upstart на моем сервере. Если я создаю сценарий upstart, где я должен найти его для запуска в качестве службы.

или есть какой-то другой правильный и простой способ запустить другой экземпляр mongodb на том же сервере, но с другим портом.

Эрхан А
источник

Ответы:

8

Вы работаете из репозитория 10gen или из репозитория Debian / Ubuntu по умолчанию? Я рекомендую использовать официальный репозиторий 10gen.

Проверьте эту ссылку - [10gen MongoDB How-To Install на Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ . Лучше всего удалить предыдущую установку mongodb перед этим изменением, что также потребует от вас изменения источника репозитория (в /etc/apt/source.list), но это также подробно описано в ссылке выше. Я рекомендую использовать upstart по сравнению с sysvinit, и процесс описан в How-To.

С настройкой 10gen Ubuntu файл конфигурации находится в /etc/mongodb.conf.

Есть несколько способов, которыми вы можете запустить отдельный процесс mongod, просто запустите его из

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

который будет производить (используя «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

и вы можете подключиться через cli -> mongod --port 3001

Другим способом является создание копии /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

Я изменил dbpath (где хранятся файлы mongodb) с / var / lib / mongodb на / var / lib / mongodbnew; путь к журналу изменился с mongodb.log на mongodbnew.log, а порт был изменен с 27017 на 27018 по умолчанию (вам также придется удалить знак #, чтобы раскомментировать строку).

Я также изменил верхнюю строку, чтобы отразить новое имя этого файла конфигурации.

Вам также нужно будет создать каталог данных, потому что он не будет существовать, и без него процесс mongod не запустится и убедитесь, что владельцем и группой является mongodb -

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

Кроме того, создайте и измените разрешения вашего файла журнала -

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

Чтобы запустить новый процесс Mongod (в фоновом режиме) из cli, введите

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

которые отправляют следующее на экран -

"весь вывод идет в: /var/log/mongodb/mongodbnew.log"

Убедитесь, что процессы mongod работают с "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

Чтобы убедиться, что вы можете подключиться, запустите оболочку Mongo -

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

С помощью lsof вы должны увидеть два процесса mongod: исходный, привязанный к 27017, и новый, привязанный к 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)

Чтобы убедиться, что оба процесса запускаются при запуске, скопируйте исходный файл конфигурации init -

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

что должно привести к двум файлам, таким как -

$ 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

Отредактируйте новый файл mongodbnew.conf, используя vi или любой другой формат, который вы предпочитаете


## 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]

остановка на уровне выполнения [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

конец сценария

Я проверил это на Ubuntu 12.04, и он, кажется, работает хорошо, в том числе после перезагрузки. Я не запускал его в производство, очевидно. Извините, если есть какие-либо опечатки выше, но есть много информации, и я, возможно, что-то пропустил.

Наконец, вот ссылка на наборы реплик, которая может помочь вам, так как она содержит примеры запуска нескольких экземпляров mongod из клика - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial .

Марк Хиллик
источник
Ссылка для install-mongodb-on-debian-or-ubuntu-linux была изменена на docs.mongodb.org/manual/tutorial/install-mongodb-on-debian и docs.mongodb.org/manual/tutorial/install-mongodb -на Убунту .
Фернандо Кош
2

Я столкнулся с проблемой с ответом выше, где stop-start-daemon не запускает новый процесс с тем же именем более одного раза. Однако, есть --nameаргумент, который позволяет вам изменить строку в вашем сценарии выскочки, /etc/init/чтобы включить новое имя, чтобы оно началось. Что-то вроде этого:

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

В этом случае --nameаргумент делает этот экземпляр уникальным и позволяет запускать его отдельно от других экземпляров mongod.

Майкл Петерман
источник
0

upstart сценарии находятся в /etc/init/

jjwchoy
источник
Thnx, есть mongodb.conf, но это файл конфигурации по умолчанию для работающего по умолчанию экземпляра
Я только что посмотрел на мой mongodb.conf, он исходит из файла / etc / default / mongodb, предположительно для настройки, а затем запускает mongodb с помощью start-stop-daemon
Вы можете скопировать этот файл и изменить команду для запуска mongodb с другим портом. вы, вероятно, хотите указать совершенно новый конфигурационный файл, так что вы можете изменить файлы журналов и т. д.