加群联系作者vx:xiaoda0423
仓库地址:https://webvueblog.github.io/JavaPlusDoc/
✅ 一、环境要求
-
操作系统:建议 Ubuntu 20.04 / CentOS 7 / Rocky Linux / Mac
-
Java 版本:推荐 OpenJDK 8 or 11
-
Cassandra 版本:建议使用 Apache Cassandra 4.x
-
网络要求:所有节点间网络互通,端口默认
9042
,7000
,7001
,7199
等需开放
✅ 二、单机安装(适合开发测试)
🔹 1. 安装依赖
go
sudo apt update
sudo apt install openjdk-11-jdk -y
🔹 2. 添加 Apache Cassandra 仓库(Ubuntu)
go
echo "deb https://downloads.apache.org/cassandra/debian 40x 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 update
🔹 3. 安装 Cassandra
go
sudo apt install cassandra -y
🔹 4. 启动 Cassandra
go
sudo systemctl start cassandra
sudo systemctl enable cassandra
🔹 5. 测试连接
go
cqlsh
✅ 三、两节点集群部署(生产/测试集群)
假设两台服务器:
-
Node1:
192.168.1.101
-
Node2:
192.168.1.102
🔹 1. 安装 Cassandra(同上)
在 每台机器 安装 Java 和 Cassandra。
🔹 2. 修改配置文件 /etc/cassandra/cassandra.yaml
两台机器都要改,区别在于 IP 地址不同
👇 重点字段:
go
cluster_name: 'MyCluster'
listen_address: 本机IP # Node1 用 192.168.1.101, Node2 用 192.168.1.102
rpc_address: 0.0.0.0
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "192.168.1.101,192.168.1.102"
endpoint_snitch: GossipingPropertyFileSnitch
🔹 3. 修改 /etc/cassandra/cassandra-rackdc.properties
go
dc=datacenter1
rack=rack1
🔹 4. 清理数据目录(初次配置很重要)
go
sudo systemctl stop cassandra
sudo rm -rf /var/lib/cassandra/data/*
sudo rm -rf /var/lib/cassandra/commitlog/*
sudo rm -rf /var/lib/cassandra/saved_caches/*
🔹 5. 启动两台节点
go
sudo systemctl start cassandra
🔹 6. 查看集群状态(任意节点)
go
nodetool status
✅ 你应该看到两个节点都 UN
状态(Up + Normal)
✅ 四、创建副本为 2 的 Keyspace(例如用于业务主库)
go
CREATE KEYSPACE user_db
WITH replication = {
'class': 'NetworkTopologyStrategy',
'datacenter1': 2
};
✅ 五、常用命令
命令 | 说明 |
---|---|
cqlsh |
启动 CQL shell |
nodetool status |
查看节点状态 |
nodetool info |
查看节点信息 |
sudo systemctl stop/start cassandra |
停止/启动服务 |
cqlsh -e 'DESC KEYSPACES' |
查看所有 keyspace |
✅ 六、常见问题排查
问题 | 解决方式 |
---|---|
端口被防火墙拦截 | 开放 7000, 7001, 7199, 9042 |
nodetool 报错连接失败 |
确保 JMX 配置正确或绑定 localhost |
rpc_address 报冲突 |
用 0.0.0.0 ,或绑定实际 IP |
数据不同步 | seed 配置是否对,snitch 是否一致 |
Apache Cassandra 安装与部署指南(2025 年版)
适用对象:希望在生产环境(4 核 / 16 GB RAM 及以上)快速部署并维护 Apache Cassandra 的运维 / 开发人员。
1. 版本概览
版本 | 发布日期 | 状态 |
---|---|---|
5.0.4 | 2025‑02‑03 | 最新 GA 版本,建议新集群直接使用(需 Java 17) |
4.1.8 | 2025‑02‑03 | 上一稳定分支,维护至 5.2 发布 |
4.0.17 | 2025‑02‑07 | 长期稳定分支,维护至 5.1 发布 |
本文档后续步骤以 5.0 为例,其它版本除文件名差异外步骤一致。
2. 环境准备
资源 | 最低要求 | 建议生产配置 |
---|---|---|
CPU | 4 vCPU | ≥8 vCPU(物理机或 NUMA 关闭的 VM) |
内存 | 16 GB | ≥32 GB(留一半给 Heap,一半给 OS Cache) |
磁盘 | SSD / NVMe,单节点 ≥ 500 GB | RAID‑10 或多块 NVMe,noatime , deadline /none 调度器 |
OS | Ubuntu 22.04 LTS / AlmaLinux 9.x / CentOS Stream 9 | 同左,内核 ≥ 5.15 |
Java | Temurin 17 或 OpenJDK 17 | 与 Cassandra 官方测试版本保持一致 |
系统调优:
-
vm.swappiness = 1
-
fs.file-max = 100000
-
ulimit -n 100000
、ulimit -u 32768
-
关闭 SELinux / firewalld 或放通端口 7000/7001/7199/9042/9142(5.0+TLS) 。
3. 安装方式对比
方式 | 优点 | 缺点 |
---|---|---|
OS 包(APT/YUM) | 一条命令,自动创建 systemd 服务 | 版本更新稍慢,难以并行多版本 |
官方 tgz 包 | 最新版、路径可自控 | 需手动创建用户 / 服务脚本 |
Docker / K8s | 环境隔离、易扩容 | 需掌握持久化卷、运维复杂度略高 |
生产集群 推荐 二进制 tgz + systemd ,容器化建议使用 K8ssandra Operator。
4. 单节点快速安装(tarball)
go
# 4.1 下载
wget https://downloads.apache.org/cassandra/5.0.4/apache-cassandra-5.0.4-bin.tar.gz
# 4.2 创建用户与目录
useradd -r -M -s /bin/false cassandra
mkdir -p /opt/cassandra/{data,commitlog,saved_caches,hints}
chown -R cassandra:cassandra /opt/cassandra
# 4.3 解压并软链
tar -xzf apache-cassandra-5.0.4-bin.tar.gz -C /opt/cassandra
ln -s /opt/cassandra/apache-cassandra-5.0.4 /opt/cassandra/current
chown -R cassandra:cassandra /opt/cassandra
# 4.4 修改配置
vim /opt/cassandra/current/conf/cassandra.yaml
# 关键字段:
cluster_name: "DemoCluster"
listen_address: 192.168.1.10
seeds: "192.168.1.10"
endpoint_snitch: Ec2Snitch # 或 GossipingPropertyFileSnitch
# 4.5 创建 systemd 服务
cat >/etc/systemd/system/cassandra.service <<'EOF'
[Unit]
Description=Apache Cassandra
After=network.target
[Service]
Type=simple
User=cassandra
Group=cassandra
LimitNOFILE=100000
ExecStart=/opt/cassandra/current/bin/cassandra -f
Restart=on-failure
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now cassandra
# 4.6 自检
/opt/cassandra/current/bin/nodetool status
/opt/cassandra/current/bin/cqlsh -e "SELECT release_version FROM system.local;"
5. 多节点生产部署
5.1 架构
-
推荐奇数节点:3、5、7... 保证仲裁。
-
跨机架 / 机房 / 可用区,保证副本分散。
-
副本因子
NetworkTopologyStrategy
:同 DC ≥3,跨 DC 按需。
5.2 参数重点
go
num_tokens: 16 # 新集群 5.0 默认 16
commitlog_sync_period: 10000ms # SSD 推荐 10s
concurrent_reads: 32 # ≈ CPU×2
concurrent_writes: 32 # ≈ CPU×2
memtable_flush_writers: 8 # NVMe 可设 >4
start_native_transport: true
native_transport_port: 9042
server_encryption_options:
internode_encryption: all # 开启节点间 TLS
# authentication & authorization
authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer
5.3 系统优化
-
echo 3 > /proc/sys/vm/drop_caches
仅测试环境 -
echo deadline > /sys/block/<disk>/queue/scheduler
-
配置 RAID‑10 stripe 256 KB。
5.4 扩容 & 维护
-
加节点 → 修改
seeds
,启动后执行nodetool status
观察 JOINING -
滚动升级示例:
4.1 → 5.0
:停节点 → 备份配置 → 升级 JDK → 替换目录 → 启动 → 等 ring 绿 → 下一节点。
6. 安全加固
-
启用 TLS :在
conf
放置自签或 CA 证书,修改server_encryption_options
与client_encryption_options
。 -
强密码策略 :创建最小权限应用账号,禁用
cassandra/cassandra
默认账号。 -
审计日志 :在
cassandra.yaml
启用audit_logging_options
,配合 SIEM。
7. 监控与运维
-
nodetool :
status
,cfstats
,tpstats
,flush
,repair
。 -
JMX Exporter → Prometheus / Grafana。
-
关键指标 :
Read/Write Latency
,Pending Compactions
,Heap Usage
,Disk Space Used
,Dropped Mutations
。
8. 备份与恢复
-
快照:
nodetool snapshot [keyspace]
-
增量备份:
incremental_backups: true
+ 外部任务(rsync / object storage)。 -
恢复:停止节点 → 清理数据 → 拷贝快照 →
nodetool refresh
。
9. 常见问题
现象 | 排查步骤 |
---|---|
节点 UN 变 DN | 检查 system.log :OutOfMemoryError / disk full ;观察 GC 日志。 |
写入超时 | nodetool tpstats 查看 WRITE 队列,调整 concurrent_writes 、扩容节点 |
磁盘膨胀 | 定期 nodetool cleanup 、compact ,确认 TTL 数据正常删除 |
参考链接
-
官方下载页 (5.0.4) (cassandra.apache.org)
-
5.0 发行说明 (cassandra.apache.org)
完成! 如需容器化、Operator 部署或细化监控 Grafana Dashboard,可进一步补充。