加群联系作者vx:xiaoda0423
仓库地址:https://webvueblog.github.io/JavaPlusDoc/
https://1024bat.cn/
✅ 一、环境要求
操作系统:建议 Ubuntu 20.04 / CentOS 7 / Rocky Linux / Mac
Java 版本:推荐 OpenJDK 8 or 11
Cassandra 版本:建议使用 Apache Cassandra 4.x
网络要求:所有节点间网络互通,端口默认
9042
,7000
,7001
,7199
等需开放
✅ 二、单机安装(适合开发测试)
🔹 1. 安装依赖
sudo apt update
sudo apt install openjdk-11-jdk -y
🔹 2. 添加 Apache Cassandra 仓库(Ubuntu)
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
sudo apt install cassandra -y
🔹 4. 启动 Cassandra
sudo systemctl start cassandra
sudo systemctl enable cassandra
🔹 5. 测试连接
cqlsh
✅ 三、两节点集群部署(生产/测试集群)
假设两台服务器:
Node1:
192.168.1.101
Node2:
192.168.1.102
🔹 1. 安装 Cassandra(同上)
在 每台机器 安装 Java 和 Cassandra。
🔹 2. 修改配置文件 /etc/cassandra/cassandra.yaml
两台机器都要改,区别在于 IP 地址不同
👇 重点字段:
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
dc=datacenter1
rack=rack1
🔹 4. 清理数据目录(初次配置很重要)
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. 启动两台节点
sudo systemctl start cassandra
🔹 6. 查看集群状态(任意节点)
nodetool status
✅ 你应该看到两个节点都 UN
状态(Up + Normal)
✅ 四、创建副本为 2 的 Keyspace(例如用于业务主库)
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 报冲突 |
用 |
数据不同步 |
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, |
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)
# 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 参数重点
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 |
检查 |
写入超时 |
nodetool tpstats 查看 |
磁盘膨胀 |
定期 |
参考链接
官方下载页 (5.0.4) (cassandra.apache.org)
5.0 发行说明 (cassandra.apache.org)
完成! 如需容器化、Operator 部署或细化监控 Grafana Dashboard,可进一步补充。