如何在CoreOS虚拟机上运行Cassandra?

时间:2019-06-23 17:38:25

标签: docker cassandra coreos

我正在尝试在CoreOS虚拟机上安装Cassandra。我已经读到,在启动Cassandra docker容器之前,我必须通过位于虚拟机的/ etc / systemd / system文件夹中的Cassandra.service文件在CoreOS上启动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

但是当我执行

  

sudo systemctl启用Cassandra.service

  

sudo systemctl启动Cassandra.service

我得到一个不良单位文件设置结果,没有给出任何有用的信息。

我想知道我的配置出了什么问题,或者是否有任何一个简单的可以工作。

谢谢。

1 个答案:

答案 0 :(得分:0)

“%i”特殊变量可能是指模板单元,因此您必须说“ cassandra @ 1”。