Cassandra安装配置详解

一、环境准备

  1. 操作系统:建议使用 Ubuntu、CentOS 或类似的 Linux 发行版。
  2. JDK:Cassnadra 需要 Java 8(部分新版本支持 Java 11)。

二、安装 Cassandra

1. 安装 Java 环境

假设安装 OpenJDK 8:

sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version  # 确认安装成功

2. 导入 Cassandra 仓库

以 Ubuntu 为例:

echo "deb https://debian.cassandra.apache.org 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update

如遇网络问题,可直接下载二进制包解压安装

wget https://downloads.apache.org/cassandra/4.1.3/apache-cassandra-4.1.3-bin.tar.gz
tar -xvf apache-cassandra-4.1.3-bin.tar.gz
cd apache-cassandra-4.1.3

3. 安装 Cassandra

如果用 apt:

sudo apt-get install cassandra

或者直接运行解压的二进制包:

cd apache-cassandra-4.1.3
bin/cassandra -f  # 前台启动

三、Cassandra 基本配置

修改 conf/cassandra.yaml 文件。

重点参数:

  • cluster_name:集群名称,所有节点需一致。
  • listen_address:本地监听地址,填写你的主机 IP。
  • rpc_address:客户端访问地址,通常与 listen_address 一样。
  • seed_nodes:种子节点(集群启动时用来发现其他节点)。

单机示例

cluster_name: 'MyCassandraCluster'
listen_address: 127.0.0.1
rpc_address: 127.0.0.1
seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "127.0.0.1"

集群示例(3节点)

假设有3台机器,IP 分别为:192.168.0.101, 192.168.0.102, 192.168.0.103

每台节点都配置:

cluster_name: 'MyCassandraCluster'
listen_address: 本机IP (例如 192.168.0.101)
rpc_address: 本机IP (如 192.168.0.101)
seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "192.168.0.101,192.168.0.102"

种子节点至少指定两台机器的 IP,所有节点配置一致(都写两台即可,不必都写三台)。

其他参数(可按需求调整):

  • data_file_directories:数据存储路径
  • commitlog_directory:日志存储路径

四、启动 Cassandra

# 单机/每个节点都执行
bin/cassandra  # 后台启动
bin/cassandra -f  # 前台启动
bin/nodetool status   # 查看节点状态

如需关闭:

bin/nodetool stopdaemon

五、常用管理命令

进入 Cassandra Shell(cqlsh):

bin/cqlsh

集群管理:

bin/nodetool status        # 查看节点和集群状态
bin/nodetool ring          # 查看数据分布
bin/nodetool info          # 查看节点信息

六、高级配置建议

  1. JVM 内存参数
    修改 conf/jvm-server.options,如:

    -Xms2G
    -Xmx2G
    
  2. 防火墙配置
    确保 7000(TCP), 9042(CQL), 7199(JMX)等端口开放。

  3. 集群扩容
    新节点只需加入合适的 IP、配置种子节点后启动即可自动加入集群。


七、常见问题

  • 配置文件中的 IP 写错,启动失败
    需确保 IP 可被其他节点访问。
  • Java 版本不兼容
    用 java -version 检查并切换至兼容版本。

九、常用进阶配置

1. 节点压缩与数据分区(分片策略)

  • 分区器(partitioner)

    • 常用:Murmur3Partitioner(默认,性能好);老版本可能写 RandomPartitioner 或 ByteOrderedPartitioner

    • 配置示例(cassandra.yaml):

      partitioner: org.apache.cassandra.dht.Murmur3Partitioner
      
  • 数据压缩

    • 可在建表时选择压缩算法,例如:

      CREATE TABLE users (
        id UUID PRIMARY KEY,
        name TEXT,
        ...
      ) WITH compression = {
        'class': 'org.apache.cassandra.compress.LZ4Compressor'
      };
      

2. 副本数与容错设置

  • 副本因子(replication_factor)
    • 决定每份数据存储的节点数。

    • 推荐大于等于3,这保证高可用。

    • 建 keyspace 时指定:

      CREATE KEYSPACE myks WITH REPLICATION = {
        'class': 'SimpleStrategy',
        'replication_factor': 3
      };
      
    • 如果是多数据中心:

      CREATE KEYSPACE myksdc WITH REPLICATION = {
        'class' : 'NetworkTopologyStrategy',
        'dc1' : 3,
        'dc2' : 2
      };
      

3. 节点间通信加密和认证

  • 启用 SSL/TLS

    • 修改 conf/cassandra.yaml 及 conf/cassandra-env.sh,按官方文档配置 SSL 证书。
    • 配置相关参数(如 client_encryption_optionsserver_encryption_options)。
  • 用户认证与权限

    • Cassandra 支持内置用户认证。编辑 cassandra.yaml

      authenticator: PasswordAuthenticator
      authorizer: CassandraAuthorizer
      
    • 进入 cqlsh,初始账号为 cassandra,可管理角色,如:

      CREATE ROLE admin WITH PASSWORD = 'yourpassword' AND LOGIN = true AND SUPERUSER = true;
      

十、数据备份与恢复

1. 备份数据

  • 快照备份

    bin/nodetool snapshot
    

    快照文件保存在数据目录下的 snapshots 文件夹。

  • 恢复快照

    1. 停止 Cassandra 服务
    2. 拷贝快照文件至数据目录
    3. 启动 Cassandra,数据即可自动恢复

2. 导入/导出表数据

  • 使用 cqlsh 导出表数据

    bin/cqlsh -e "COPY myks.mytable TO 'mytable.csv';"
    
  • 导入数据

    bin/cqlsh -e "COPY myks.mytable FROM 'mytable.csv';"
    

十一、监控与维护

1. Cassandra 自带工具

  • nodetool

    • nodetool status:查看节点健康
    • nodetool repair:修复副本一致性
    • nodetool flush:强制写磁盘
    • nodetool cleanup:清理无用数据
  • 日志文件

    • 日志默认在 logs/ 目录,启动与错误日志对排查故障很重要。

2. 集群扩容与瘦身

  • 添加节点

    • 新节点准备好后,配置 seed 节点和 cluster_name 后启动即可自动加入。
  • 移除节点

    bin/nodetool decommission
    

十二、高级参数优化(性能调优建议)

  1. 内存与JVM调参

    • conf/jvm-server.options 文件设置 JVM 堆大小。建议:
      -Xmx 和 -Xms 设为服务器物理内存50-70%。如8G内存可设为4G。
  2. 磁盘与缓存参数

    • 数据目录和 commitlog 最好分不同物理盘,提高 IO 性能。
    • 默认磁盘参数即可,特殊场合可调大缓存。
  3. 定期 repair 操作

    • 多副本情况下,建议定期执行 nodetool repair 保证一致性。

十三、常见故障排查

  • 启动报错多半是IP、端口冲突或内存不足。
  • 用 nodetool status、日志文件分析节点状态。
  • 端口未开放或防火墙问题导致集群无法互相识别。
  • 数据库突然挂起,需检查磁盘空间和 JVM 内存日志。

十四、Cassandra 生产环境运维建议

1. 节点上下线 & 数据再均衡

  • 扩容节点步骤

    1. 新机安装好 Cassandra,配置为同一个 cluster_name 和种子节点。
    2. 新节点启动后会自动发现集群,其数据分片会自动均衡,整个 ring 结构会发生轻微变化。
    3. 建议扩容后,执行 nodetool repair 和 nodetool cleanup 增强集群一致性。
  • 安全下线节点
    在要移除的节点上执行:

    nodetool decommission
    

    等待迁移数据完成即可关停。

2. 动态配置参数调整

很多参数(如日志级别、JVM调优等)需重启服务才生效。部分参数可热加载(参见官方配置说明)。

热点 Key(分区)问题
  • Cassandra采用分区键做数据路由,热点分区(比如某些分区写入极多)会影响性能。
  • 优化建议:合理设计 RowKey,避免集中写入;如果有时间序列数据可加随机前缀或 hash。

3. 日常监控工具推荐

  • 官方 JMX 和 Nodetool(适合小型集群)
  • Prometheus + Grafana
    Cassandra 支持导出 JMX 到 Prometheus,结合 Grafana 可实现集群性能可视化。
  • 第三方工具:如 Datastax OpsCenter(更适合大型集群)。
关键监控指标
  • 节点状态(Up/Down)
  • Pending Tasks(写入/读取挂起数量)
  • Heap Usage(堆内存利用率)
  • Disk Latency(磁盘读写延迟)
  • Compaction 信息(数据压缩与整理进度)

十五、Cassandra 高可用与多数据中心部署

1. 多数据中心配置

  • NetworkTopologyStrategy:适合数据中心部署。
    可为每个数据中心指定副本数,实现异地容灾和跨机房高可用。

    CREATE KEYSPACE mydc WITH REPLICATION = {
      'class': 'NetworkTopologyStrategy',
      'dc1': 3,
      'dc2': 3
    };
    
  • 各数据中心设置自己的种子节点,但种子需要可以互通(网络打通)。

2. 跨地域同步与读写策略

  • Cassandra 采用 最终一致性,可调节一致性等级(Consistency Level):

    • ONE:只需一个副本响应
    • QUORUM:多数副本响应
    • ALL:所有副本都需成功

    读写性能、强一致性与可用性的权衡由此决定。


十六、安全防护实践

  • 启用 authenticator: PasswordAuthenticator

  • 密码和密钥文件做好权限控制。

  • 集群间流量建议开启 TLS 加密(配置 client_encryption_options, server_encryption_options)

  • 生产环境关闭未用端口(如 Thrift),保证只暴露必要端口(CQL, JMX)。


十七、常见数据模型设计误区

  • 大宽表:不建议单表含百万级列,容易引发读写瓶颈。
  • 过度小表/频繁查询表结构变化:Cassandra适合 Schema 稳定的大数据访问,不适合频繁 alter、DDL。
  • 不适合高事务场景:不推荐直接用于高ACID事务处理。

十八、常用故障诊断思路

    1. 节点宕机无法启动:检查日志(logs/system.log),抓取异常信息;常见原因是端口冲突、配置错误、磁盘空间用光。
    1. 写入延迟高:聚焦 Heap 用量、SSD 磁盘性能、Compaction 速率。
    1. 数据不一致/丢失疑问:查看 Consistency Level、定期 repair;设置合理副本数和 read/write consistency。

十九、Cassandra 版本升级注意事项

  • 停止写入,逐步滚动升级(逐个节点),确保数据兼容。
  • 备份数据目录和配置文件。
  • 检查升级文档有无参数变化,部分 YAML 参数名会有更改。

二十、运维脚本与自动化建议

  1. 运维常用脚本

    • 定时触发 nodetool repair
    • 备份脚本(快照目录复制到备份服务器)
    • 简单监控报警(利用 Nodetool status 定时巡检)
  2. 自动化配置管理

    • 推荐用 SaltStack、Ansible 运维 Cassandra 集群。批量改配置、扩容、上线脚本能大大提升可靠性。

总结

Cassandra 是一套高度可扩展、分布式 NoSQL 数据库系统,配置和维护多以配置文件参数和命令行为主。你可以根据实际生产需求调整副本策略、加密认证等高级参数,建议每次修改配置后都备份数据目录测试节点状态

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猩火燎猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值