【发布时间】:2019-09-11 02:22:05
【问题描述】:
我在 docker 环境下工作,并执行了docker exec -it mycassandra cqlsh。然后,我正在插入数据,并且出现以下错误:
WriteTimeout - Error from server: code=1100
this 告诉我,我需要找出 cassandra.yaml 文档并修改写入时间,但在我的 MAC 上找不到。
你能告诉我如何找到它以及如何修改文件吗? 谢谢。
【问题讨论】:
我在 docker 环境下工作,并执行了docker exec -it mycassandra cqlsh。然后,我正在插入数据,并且出现以下错误:
WriteTimeout - Error from server: code=1100
this 告诉我,我需要找出 cassandra.yaml 文档并修改写入时间,但在我的 MAC 上找不到。
你能告诉我如何找到它以及如何修改文件吗? 谢谢。
【问题讨论】:
对于安装为brew install cassandra的用户,yaml文件将位于usr/local/etc/cassandra
【讨论】:
如果您正在运行官方 cassandra 映像,则可以在容器中的 /etc/cassandra/cassandra.yaml 找到 cassandra.yaml。如果你想创建一个自定义的cassandra.yaml 文件,那么你可以尝试在你的Dockerfile 或docker-compose.yml 文件中覆盖它。例如,在我的 docker-compose.yml 文件中,我有类似的内容:
services:
cassandra:
image: cassandra:3.11.4
volumes:
- ./cassandra.yaml:/etc/cassandra/cassandra.yaml
这会导致容器中的cassandra.yaml 文件被我的本地cassandra.yaml 覆盖。
我希望这会有所帮助。
【讨论】:
从提供的示例中,似乎数据库是从容器内部执行的。因此,您要查找的 cassandra.yaml 将在容器启动时根据您提供的配置动态创建。
我们已经在 Kubernetes 中设置了 Cassandra Containers,并在 docker 中执行它们,根据找到的指令here,并且能够在 statefulset 的配置中修改 cassandra.yaml 文件的设置,更新变量env 用于容器的规格。
例如,修改种子列表、集群名称和名为c-test-qa的C*集群的机架:
apiVersion: apps/v1
kind: StatefulSet
...
spec:
serviceName: c-test-qa
replicas: 1
selector:
matchLabels:
app: c-test-qa
template:
metadata:
labels:
app: c-test-qa
spec:
containers:
- name: c-test-qa
image: cassandra:3.11
imagePullPolicy: IfNotPresent
...
env:
- name: CASSANDRA_SEEDS
value: c-test-qa-0.c-test-qa.qa.svc.cluster.local
- name: CASSANDRA_CLUSTER_NAME
value: "testqa"
- name: CASSANDRA_RACK
value: "DC1"
- name: CASSANDRA_RACK
value: "CustomRack1"
...
【讨论】:
在 MacOS 上:
它可以在以下任一位置找到:
Cassandra 软件包安装:/etc/cassandra
Cassandra tarball 安装:install_location/conf
DataStax Enterprise 软件包安装:/etc/dse/cassandra
DataStax Enterprise tarball 安装:install_location/resources/cassandra/conf
【讨论】: