我正在试图在CoreOS虚拟机上安装Cassandra。我已经读过,在启动Cassandra容器之前,我必须通过位于虚拟机/etc/systemd/system文件夹中的一个Cassandra.service文件在Cassandra.service上启动Cassandra服务。
我尝试过对Cassandra.service文件进行以下配置
[Unit]
Description=cassandra
After=docker.service
Requires=docker.service
[Service]
Environment=CASSANDRA_CLUSTERNAME=cluster
CASSANDRA_SSL_STORAGE_PORT=7002
EnvironmentFile=-/etc/environment
ExecStartPre=-/usr/bin/docker kill %p-%i
ExecStartPre=-/usr/bin/docker rm %p-%i
ExecStartPre=/usr/bin/docker pull endocode/%p
ExecStartPre=/usr/bin/bash -c "echo $${COREOS_PUBLIC_IPV4:-$$(hostname - i)} | /usr/bin/etcdctl set /cassandra_%i"
ExecStartPre=/usr/bin/bash -c "while [[ ! $$(/usr/bin/etcdctl get /cassandra_1) ]]; do echo 'Waiting for Cassandra Seed node'; sleep 1; done; echo 'Cassandra Seed node is UP'; /usr/bin/etcdctl get /cassandra_1"
ExecStart=/usr/bin/bash -c "BROADCAST_ADDR=$${COREOS_PUBLIC_IPV4:- $$(hostname -i)} && CASSANDRA_SEEDS=$(/usr/bin/etcdctl get /cassandra_1 | /usr/bin/tr -d '\n') && exec /usr/bin/docker run --rm --name %p-%i
-e CASSANDRA_CLUSTERNAME=${CASSANDRA_CLUSTERNAME}
-e CASSANDRA_SEEDS=\"$CASSANDRA_SEEDS\"
-e BROADCAST_ADDR=$BROADCAST_ADDR
-e CASSANDRA_SSL_STORAGE_PORT=$CASSANDRA_SSL_STORAGE_PORT --publish 7000:7000 --publish
$CASSANDRA_SSL_STORAGE_PORT:$CASSANDRA_SSL_STORAGE_PORT -- publish 9160:9160 --publish 9042:9042 --publish 7199:7199 endocode/%p"
ExecStop=/usr/bin/docker stop %p-%i
ExecStopPost=/usr/bin/etcdctl rm /cassandra_%i
TimeoutStartSec=900s
[X-Fleet]
Conflicts=%p@*.service
但当我执行
systemctl启用Cassandra.service
或
sudo系统启动Cassandra.service
我得到了一个坏单元文件设置结果,它提供了任何有用的信息。
我想知道我的配置有什么问题,或者是否有更简单的方法可以工作。
谢谢。
发布于 2019-06-23 18:33:51
"%i“特殊变量可能引用模板单元,因此您必须说"cassandra@1”。
https://stackoverflow.com/questions/56726353
复制相似问题