Cassandra容器化部署

轻云Cassandra标准软件基于Bitnami cassandra 构建。当前版本为4.0.12

你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取 配置文件地址: qingcloud-platform: 一站式、开箱即用、可扩展的组件化软件工厂!高效易用 低代码 组件化 软件开发设计器。助力中小微企业低成本快速实现数字化转型,提高开发人员工作效率。

qinghub自动安装部署配置库

什么是 Apache Cassandra?

Apache Cassandra 是一种开源分布式数据库管理系统,旨在处理跨多个服务器的大量数据,提供高可用性且无单点故障。

快速启动

docker run --name cassandra bitnami/cassandra:latest

持久化数据

如果删除容器,所有数据和配置都将丢失,并且下次运行映像时,数据库将重新初始化。为了避免这种数据丢失,您应该安装一个即使在容器被删除后仍然存在的卷。

为了持久化,您应该在指定路径上挂载一个目录/bitnami。如果挂载的目录为空,则首次运行时会对其进行初始化。

docker run \
    -v /path/to/cassandra-persistence:/bitnami \
    bitnami/cassandra:latest

或使用 Docker Compose:

cassandra:
  image: bitnami/cassandra:latest
  volumes:
    - /path/to/cassandra-persistence:/bitnami

注意:由于这是一个非根容器,因此安装的文件和目录必须具有 UID 的适当权限1001。

配置

环境变量

可定制的环境变量

名称

描述

Default Value

CASSANDRA_VOLUME_DIR

Cassandra 持久性目录。

/bitnami/cassandra

CASSANDRA_DATA_DIR

Cassandra 存储数据目录.

${CASSANDRA_VOLUME_DIR}/data

CASSANDRA_COMMITLOG_DIR

Cassandra 提交日志目录。

${CASSANDRA_DATA_DIR}/commitlog

CASSANDRA_MOUNTED_CONF_DIR

Cassandra 用于挂载置文件目录。

${CASSANDRA_VOLUME_DIR}/conf

CASSANDRA_CLIENT_ENCRYPTION

启用客户端加密。

false

CASSANDRA_CLUSTER_NAME

Cassandra 集群名称。

My Cluster

CASSANDRA_DATACENTER

Cassandra 数据中心名称。

dc1

CASSANDRA_ENABLE_REMOTE_CONNECTIONS

启用来自远程位置的连接。

true

CASSANDRA_ENABLE_RPC

在 Cassandra 中启用 RPC 端点。

true

CASSANDRA_ENABLE_USER_DEFINED_FUNCTIONS

启用用户定义的功能。

false

CASSANDRA_ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS

启用脚本化的用户定义函数。

false

CASSANDRA_ENDPOINT_SNITCH

集群端点告密者的名称。

SimpleSnitch

CASSANDRA_INTERNODE_ENCRYPTION

节点间加密类型。

none

CASSANDRA_NUM_TOKENS

集群连接中的令牌数量。

256

CASSANDRA_PASSWORD_SEEDER

将节点设置为集群中的密码播种者。

no

CASSANDRA_SEEDS

簇种子列表。

$CASSANDRA_HOST

CASSANDRA_PEERS

cluster peers.

$CASSANDRA_SEEDS

CASSANDRA_RACK

Cassandra 机架名称。

rack1

CASSANDRA_AUTOMATIC_SSTABLE_UPGRADE

升级后自动升级sstables。

false

CASSANDRA_IGNORE_INITDB_SCRIPTS

忽略初始化脚本的执行

no

CASSANDRA_CQL_PORT_NUMBER

CQL port.

9042

CASSANDRA_JMX_PORT_NUMBER

JMX port.

7199

CASSANDRA_TRANSPORT_PORT_NUMBER

Transport port.

7000

CASSANDRA_CQL_MAX_RETRIES

CQL 启动操作的最大重试次数。

20

CASSANDRA_CQL_SLEEP_TIME

CQL 启动操作的休眠时间。

5

CASSANDRA_INIT_MAX_RETRIES

init 启动操作的最大重试次数。

100

CASSANDRA_INIT_SLEEP_TIME

init 启动操作的睡眠时间。

5

CASSANDRA_PEER_CQL_MAX_RETRIES

peer启动操作的最大重试次数。

100

CASSANDRA_PEER_CQL_SLEEP_TIME

对等启动操作的睡眠时间。

10

CASSANDRA_DELAY_START_TIME

将 Cassandra 启动延迟所提供的秒数。

0

CASSANDRA_AUTO_SNAPSHOT_TTL

在截断键空间或删除表之前自动拍摄数据快照

30d

ALLOW_EMPTY_PASSWORD

默认不允许空密码。

no

CASSANDRA_AUTHORIZER

Cassandra 连接授权者。

CassandraAuthorizer

CASSANDRA_AUTHENTICATOR

Cassandra 连接验证器。

PasswordAuthenticator

CASSANDRA_USER

Cassandra username.

cassandra

CASSANDRA_KEYSTORE_PASSWORD

Cassandra keystore password.

cassandra

CASSANDRA_TRUSTSTORE_PASSWORD

Cassandra truststore password.

cassandra

CASSANDRA_KEYSTORE_LOCATION

Cassandra keystore location.

${CASSANDRA_VOLUME_DIR}/secrets/keystore

CASSANDRA_TRUSTSTORE_LOCATION

Cassandra truststore location.

${CASSANDRA_VOLUME_DIR}/secrets/truststore

CASSANDRA_SSL_VALIDATE

对证书执行 SSL 验证。

false

SSL_VERSION

连接时使用的 TLS 版本。

TLSv1_2

只读环境变量

Name

Description

Value

CASSANDRA_BASE_DIR

Cassandra 安装目录.

${BITNAMI_ROOT_DIR}/cassandra

CASSANDRA_BIN_DIR

Cassandra 二进制目录.

${CASSANDRA_BASE_DIR}/bin

CASSANDRA_CONF_DIR

Cassandra 配置目录.

${CASSANDRA_BASE_DIR}/conf

CASSANDRA_DEFAULT_CONF_DIR

Cassandra 配置目录 .

${CASSANDRA_BASE_DIR}/conf.default

CASSANDRA_INITSCRIPTS_DIR

Cassandra 初始化脚本目录.

/docker-entrypoint-initdb.d

CASSANDRA_LOG_DIR

Cassandra 日志目录

${CASSANDRA_BASE_DIR}/logs

CASSANDRA_TMP_DIR

Cassandra 临时文件目录

${CASSANDRA_BASE_DIR}/tmp

JAVA_BASE_DIR

Java 根目录。

${BITNAMI_ROOT_DIR}/java

JAVA_BIN_DIR

Java 二进制目录。

${JAVA_BASE_DIR}/bin

PYTHON_BASE_DIR

Python 根目录。

${BITNAMI_ROOT_DIR}/python

PYTHON_BIN_DIR

Python 二进制目录。

${PYTHON_BASE_DIR}/bin

CASSANDRA_CONF_FILE

Cassandra 配置文件的路径。.

${CASSANDRA_CONF_DIR}/cassandra.yaml

CASSANDRA_LOG_FILE

Cassandra 日志文件的路径。

${CASSANDRA_LOG_DIR}/cassandra.log

CASSANDRA_FIRST_BOOT_LOG_FILE

Cassandra 首次启动日志文件的路径。

${CASSANDRA_LOG_DIR}/cassandra_first_boot.log

CASSANDRA_INITSCRIPTS_BOOT_LOG_FILE

Cassandra 首次启动日志文件的路径。

${CASSANDRA_LOG_DIR}/cassandra_init_scripts_boot.log

CASSANDRA_PID_FILE

PID 文件的路径。

${CASSANDRA_TMP_DIR}/cassandra.pid

CASSANDRA_DAEMON_USER

Cassandra system user.

cassandra

CASSANDRA_DAEMON_GROUP

Cassandra system group.

cassandra

CASSANDRA_TMP_P12_FILE

Cassandra 临时 p12 文件位置。

${CASSANDRA_TMP_DIR}/keystore.p12

CASSANDRA_SSL_CERT_FILE

Cassandra SSL 证书位置。

${CASSANDRA_VOLUME_DIR}/client.cer.pem

此外,以以下前缀开头的任何环境变量都将映射到正确文件中相应的 Apache Cassandra 键:

  • CASSANDRA_CFG_ENV_: 将相应的键和提供的值添加到cassandra-env.sh。
  • CASSANDRA_CFG_RACKDC_: 将相应的键和提供的值添加到cassandra-rackdc.properties。
  • CASSANDRA_CFG_COMMITLOG_: 将相应的键和提供的值添加到commitlog_archiving.properties。
  • CASSANDRA_CFG_YAML_: 将相应的键和提供的值添加到cassandra.yaml。

例如,在cassandra-rackdc.properties中进行配置使用CASSANDRA_CFG_RACKDC_PREFER_LOCAL=true。或者,在cassandra.yaml中使用CASSANDRA_CFG_YAML_INTERNODE_COMPRESSION=all以便设置internode_compression为all。

NOTE: 挂载配置文件时会省略环境变量

当您启动 cassandra image时,您可以通过在 docker-compose 文件或命令行上传递一个或多个环境变量来调整实例的配置docker run。如果要添加新的环境变量:

  • 对于 docker-compose,在应用程序部分下添加变量名称和值:
cassandra:
  image: bitnami/cassandra:latest
  environment:
    - CASSANDRA_TRANSPORT_PORT_NUMBER=7000
  • 对于手动执行,-e为每个变量和值添加一个选项:
$ docker run --name cassandra -d -p 7000:7000 --network=cassandra_network \
    -e CASSANDRA_TRANSPORT_PORT_NUMBER=7000 \
    -v /your/local/path/bitnami/cassandra:/bitnami \
    bitnami/cassandra

首次运行时设置服务器密码

Passing the CASSANDRA_PASSWORD environment variable along with CASSANDRA_PASSWORD_SEEDER=yes when running the image for the first time will set the Apache Cassandra server password to the value of CASSANDRA_PASSWORD.

首次运行时传递CASSANDRA_PASSWORD环境变量会将 Apache Cassandra 服务器密码设置为CASSANDRA_PASSWORD的值。需要设置CASSANDRA_PASSWORD_SEEDER=yes

docker run --name cassandra \
    -e CASSANDRA_PASSWORD_SEEDER=yes \
    -e CASSANDRA_PASSWORD=password123 \
    bitnami/cassandra:latest

或使用 Docker Compose:

cassandra:
  image: bitnami/cassandra:latest
  environment:
    - CASSANDRA_PASSWORD_SEEDER=yes
    - CASSANDRA_PASSWORD=password123
Step 1: 创建新网络

docker network create cassandra_network

Step 2: 创建第一个节点
docker run --name cassandra-node1 \
  --net=cassandra_network \
  -p 9042:9042 \
  -e CASSANDRA_CLUSTER_NAME=cassandra-cluster \
  -e CASSANDRA_SEEDS=cassandra-node1,cassandra-node2 \
  -e CASSANDRA_PASSWORD_SEEDER=yes \
  -e CASSANDRA_PASSWORD=mypassword \
  bitnami/cassandra:latest

在上面的命令中,容器被添加到cassandra-cluster使用CASSANDRA_CLUSTER_NAME. 该CASSANDRA_CLUSTER_HOSTS参数设置设置集群的节点的名称,因此我们需要为第二个节点启动其他容器。最后,该CASSANDRA_NODE_NAME参数允许指示节点的已知名称,否则 cassandra 将生成一个随机名称。

Step 3: 创建第二个节点
docker run --name cassandra-node2 \
  --net=cassandra_network \
  -e CASSANDRA_CLUSTER_NAME=cassandra-cluster \
  -e CASSANDRA_SEEDS=cassandra-node1,cassandra-node2 \
  -e CASSANDRA_PASSWORD=mypassword \
  bitnami/cassandra:latest

在上面的命令中,一个新的 cassandra 节点被添加到由 指示的 cassandra 集群中CASSANDRA_CLUSTER_NAME。

您现在已经启动并运行了一个两节点 Apache Cassandra 集群,可以通过添加/删除节点来扩展该集群。

通过 Docker Compose,可以使用以下命令设置集群配置:

version: '2'
services:
  cassandra-node1:
    image: bitnami/cassandra:latest
    environment:
      - CASSANDRA_CLUSTER_NAME=cassandra-cluster
      - CASSANDRA_SEEDS=cassandra-node1,cassandra-node2
      - CASSANDRA_PASSWORD_SEEDER=yes
      - CASSANDRA_PASSWORD=password123

  cassandra-node2:
    image: bitnami/cassandra:latest
    environment:
      - CASSANDRA_CLUSTER_NAME=cassandra-cluster
      - CASSANDRA_SEEDS=cassandra-node1,cassandra-node2
      - CASSANDRA_PASSWORD=password123

使用自定义脚本进行初始化

当容器第一次执行时,它将执行带有扩展名的文件.sh,.cql或者.cql.gz按/docker-entrypoint-initdb.d文件名排序的文件。通过将环境变量设置为或 以外CASSANDRA_IGNORE_INITDB_SCRIPTS的值可以跳过此行为。yestrue

为了将自定义文件放入 docker 映像中,您可以将它们安装为卷。

docker run --name cassandra \
  -v /path/to/init-scripts:/docker-entrypoint-initdb.d \
  -v /path/to/cassandra-persistence:/bitnami
  bitnami/cassandra:latest

或者使用 docker-compose

cassandra:
  image: bitnami/cassandra:latest
  volumes:
    - /path/to/init-scripts:/docker-entrypoint-initdb.d
    - /path/to/cassandra-persistence:/bitnami

配置文件

该image在/bitnami/cassandra/conf/中查找配置。

Step 1: 运行 Apache Cassandra 映像

运行 Apache Cassandra 映像,从主机安装目录。

docker run --name cassandra \
    -v /path/to/cassandra-persistence:/bitnami \
    bitnami/cassandra:latest

或使用 Docker Compose:

cassandra:
  image: bitnami/cassandra:latest
  volumes:
    - /path/to/cassandra-persistence:/bitnami
Step 2: 编辑配置

使用您喜欢的编辑器编辑主机上的配置。

vi /path/to/cassandra-persistence/cassandra/conf/cassandra.yaml

Step 3: 重新启动 Apache Cassandra

更改配置后,重新启动 Apache Cassandra 容器以使更改生效。

docker restart cassandra

或使用 Docker Compose:

docker-compose restart cassandra

Refer to the configuration manual for the complete list of configuration options.

传输层安全性 (TLS) 加密

Apache Cassandra Docker 映像允许在节点之间以及服务器客户端之间配置 TLS 加密。这是通过安装/bitnami/cassandra/secrets两个文件来完成的:

  • keystore: 带有服务器密钥库的文件
  • truststore: 带有服务器信任库的文件

除此之外,还必须设置以下环境变量:

  • CASSANDRA_KEYSTORE_PASSWORD: 访问密钥库的密码。
  • CASSANDRA_TRUSTSTORE_PASSWORD: 访问信任库的密码。
  • CASSANDRA_INTERNODE_ENCRYPTION: 设置节点之间的加密类型。默认值为none。可设置为all、none、dc或rack。
  • CASSANDRA_CLIENT_ENCRYPTION: 启用客户端-服务器加密。默认值为false。

日志

Apache Cassandra Docker 映像将容器日志发送到stdout. 要查看日志:

docker logs cassandra

或使用 Docker Compose:

docker-compose logs cassandra

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cassandra是一个开源的分布式NoSQL数据库系统,而Docker是一种容器平台,可以方便地部署和管理应用程序。在Docker中安装Cassandra可以提供更加灵活和可扩展的部署方式。 以下是在Docker中安装Cassandra的步骤: 1. 首先,确保你已经安装了DockerDocker Compose。你可以在官方网站上找到相应的安装指南。 2. 创建一个新的目录,用于存放Cassandra的配置文件和数据。例如,你可以在命令行中执行以下命令来创建一个名为cassandra的目录: ``` mkdir cassandra ``` 3. 在cassandra目录下创建一个名为docker-compose.yml的文件,并将以下内容复制到文件中: ``` version: '3' services: cassandra: image: cassandra:latest container_name: cassandra ports: - "9042:9042" volumes: - ./data:/var/lib/cassandra ``` 4. 保存并关闭docker-compose.yml文件。 5. 在命令行中,进入到cassandra目录,并执行以下命令来启动Cassandra容器: ``` docker-compose up -d ``` 这将会下载Cassandra镜像并启动一个名为cassandra容器Cassandra将会监听主机的9042端口,你可以通过该端口连接到Cassandra。 6. 等待一段时间,直到Cassandra容器启动完成。你可以使用以下命令来检查容器的状态: ``` docker ps ``` 如果看到cassandra容器正在运行,说明安装成功。 现在,你已经成功在Docker中安装了Cassandra。你可以使用CQLSH或其他Cassandra客户端工具连接到Cassandra并开始使用它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值