如何在coreos虚拟机上运行cassandra?

3yhwsihp  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(510)

我正在尝试在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
我得到了一个糟糕的单位文件设置结果,没有提供任何有用的信息。
我想知道我的配置有什么问题,或者是否有一个更简单的可以工作。
谢谢您。

yshpjwxd

yshpjwxd1#

“%i”特殊变量可能引用模板单位,因此cassandra@1".

相关问题