2016-03-23 9 views
0

Я устанавливал Systemd блок для DataStax Enterprise 4.8.5:Datastax & Systemd

### /etc/systemd/system/dse1.service 

[Unit] 
Description=DataStax Enterprise 

[Service] 
User=cassandra 
ExecStart=/opt/dse/dse1/bin/dse cassandra -k 
ExecStop=/opt/dse/dse1/bin/dse cassandra-stop 

, когда я исполняю sudo systemctl start dse1, если я немедленно сделать status после этого, я получаю:

● dse1.service - DataStax Enterprise 1 
    Loaded: loaded (/etc/systemd/system/dse1.service; static; vendor preset: disabled) 
    Active: active (running) since Wed 2016-03-23 13:47:57 EDT; 1s ago 
Main PID: 31699 (cassandra) 
    CGroup: /system.slice/dse1.service 
      ├─31699 /bin/sh /opt/dse/dse1/resources/cassandra/bin/cassandra -k -Djava.library.path=:/opt/dse/dse1/resources/hadoop/native... 
      ├─31894 /bin/java -cp :/opt/dse/dse1/lib/dse-core-4.8.5.jar:/opt/dse/dse1/lib/dse-hadoop-4.8.5.jar:/opt/dse/dse1/lib/dse-hive... 
      └─31895 grep -q Error: Exception thrown by the agent : java.lang.NullPointerException 

Если Затем я подождал несколько секунд и попробую еще раз:

● dse1.service - DataStax Enterprise 1 
    Loaded: loaded (/etc/systemd/system/dse1.service; static; vendor preset: disabled) 
    Active: inactive (dead) 

Mar 23 13:34:28 pspldsea01p.fleet.ad systemd[1]: Started DataStax Enterprise 1. 
Mar 23 13:34:28 pspldsea01p.fleet.ad systemd[1]: Starting DataStax Enterprise 1... 
Mar 23 13:38:33 pspldsea01p.fleet.ad systemd[1]: Started DataStax Enterprise 1. 
Mar 23 13:38:33 pspldsea01p.fleet.ad systemd[1]: Starting DataStax Enterprise 1... 
Mar 23 13:47:41 pspldsea01p.fleet.ad systemd[1]: Started DataStax Enterprise 1. 
Mar 23 13:47:41 pspldsea01p.fleet.ad systemd[1]: Starting DataStax Enterprise 1... 
Mar 23 13:47:44 pspldsea01p.fleet.ad dse[31267]: nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused'. 
Mar 23 13:47:57 pspldsea01p.fleet.ad systemd[1]: Started DataStax Enterprise 1. 
Mar 23 13:47:57 pspldsea01p.fleet.ad systemd[1]: Starting DataStax Enterprise 1... 
Mar 23 13:48:01 pspldsea01p.fleet.ad dse[32004]: nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused'. 
Hint: Some lines were ellipsized, use -l to show in full. 

Если я просто выполнил /opt/dse/dse1/bin/dse cassandra -k как пользователь cassandra, он отлично работает.

Я не могу найти какое-либо дополнительное протоколирование в нормальных местах лесозаготовок или с sudo journalctl -u dse1

Любых идеями? Благодаря!

ответ

2

К сожалению, DataStax Enterprise не поставляется с системным файлом systemd, чтобы иметь возможность использовать systemctl. Однако он имеет скрипт init. Полная документация доступна по адресу: docs

В принципе у вас есть два варианта. Первый из них заключается в использовании init.d непосредственно, начав службу:

sudo service dse start 

Я, однако, слишком привык к systemctl теперь вернуться к этому. Так что это мой системный файл службы

[Unit] 
Description=DataStax Enterprise 
After=network.target 

[Service] 
PIDFile=/var/run/dse/dse.pid 
ExecStart=/etc/init.d/dse start 
ExecStop=/etc/init.d/dse stop 
SuccessExitStatus=143 
TimeoutSec=300 

[Install] 
WantedBy=multi-user.target 

Сценарий инициализации имеет множество опций конфигурации. Для простоты может быть разумно просто использовать их непосредственно в скрипте. Например, вы указываете пользователя в файле службы systemd. Это давало мне проблемы, пока я не заметил, что пользователь уже указан в скрипте. Не нужно дублировать параметры.

Опция SucessExitStatus=143 является общей конфигурацией для приложений Java.

Вы, возможно, придется адаптировать расположение сценария, если вы не установили DSE с менеджера пакетов

+0

FWIW - я не мог заставить его работать с Systemd, поэтому я вернулся к использованию инициализации скрипт. Все-таки пришлось сделать несколько настроек, чтобы заставить его работать правильно. –

Смежные вопросы