Created
September 18, 2015 14:01
-
-
Save s0undt3ch/969b744d3d7b88c29cba to your computer and use it in GitHub Desktop.
CentOS 7 Cassandra systemd service file
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /usr/lib/systemd/system/cassandra.service | |
[Unit] | |
Description=Cassandra | |
After=network.target | |
[Service] | |
PIDFile=/var/run/cassandra/cassandra.pid | |
User=cassandra | |
Group=cassandra | |
ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid | |
StandardOutput=journal | |
StandardError=journal | |
LimitNOFILE=100000 | |
LimitMEMLOCK=infinity | |
LimitNPROC=32768 | |
LimitAS=infinity | |
Restart=always | |
[Install] | |
WantedBy=multi-user.target |
After some tries I've created upgraded version of this unit file.
Changes:
- use background run +
Type=forking
because-p
works only without-f
- use CASSANDRA_* env variables to load cassandra configs from /etc/cassandra/conf, those are created by cassandra RPM package
- upd 28.08.2020: add stop timeout
- upd 28.08.2020: set successful exit code
Tested with cassandra 3.11.5 & centos 7.7
# /usr/lib/systemd/system/cassandra.service
[Unit]
Description=Cassandra
After=network.target
[Service]
RuntimeDirectory=cassandra
PIDFile=/var/run/cassandra/cassandra.pid
Environment=CASSANDRA_HOME=/usr/share/cassandra
Environment=CASSANDRA_CONF=/etc/cassandra/conf
Environment=CASSANDRA_INCLUDE=/usr/share/cassandra/cassandra.in.sh
Environment=CASSANDRA_OWNR=cassandra
User=cassandra
Group=cassandra
Type=forking
ExecStart=/usr/sbin/cassandra -p /var/run/cassandra/cassandra.pid
StandardOutput=journal
StandardError=journal
LimitNOFILE=100000
LimitMEMLOCK=infinity
LimitNPROC=32768
LimitAS=infinity
Restart=always
TimeoutStopSec=180
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Tested on CentOS 8, works!
On my sysV file I call the following command when stopping cassandra:
nodetool -u cass** -pw pass** -h 127.0.0.1 decommission
Do I need to do this in systemd file as a ExecStopPost command?
Should be useful in forking mode:
TimeoutStartSec=300
But foreground mode seems more stable (imho).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Not sure why a PID file is being set if the unit is left to default to simple?