加群联系作者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
等需开放
sudo apt update
sudo apt install openjdk-11-jdk -y
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
sudo apt install cassandra -y
sudo systemctl start cassandra
sudo systemctl enable cassandra
cqlsh
假设两台服务器:
Node1: 192.168.1.101
Node2: 192.168.1.102
在 每台机器 安装 Java 和 Cassandra。
/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
/etc/cassandra/cassandra-rackdc.properties
dc=datacenter1
rack=rack1
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/*
sudo systemctl start cassandra
nodetool status
✅ 你应该看到两个节点都 UN
状态(Up + Normal)
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 是否一致 |
适用对象:希望在生产环境(4 核 / 16 GB RAM 及以上)快速部署并维护 Apache Cassandra 的运维 / 开发人员。
版本 |
发布日期 |
状态 |
---|---|---|
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 为例,其它版本除文件名差异外步骤一致。
资源 |
最低要求 |
建议生产配置 |
---|---|---|
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) 。
方式 |
优点 |
缺点 |
---|---|---|
OS 包(APT/YUM) |
一条命令,自动创建 systemd 服务 |
版本更新稍慢,难以并行多版本 |
官方 tgz 包 |
最新版、路径可自控 |
需手动创建用户 / 服务脚本 |
Docker / K8s |
环境隔离、易扩容 |
需掌握持久化卷、运维复杂度略高 |
生产集群 推荐 二进制 tgz + systemd,容器化建议使用 K8ssandra Operator。
# 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;"
推荐奇数节点:3、5、7… 保证仲裁。
跨机架 / 机房 / 可用区,保证副本分散。
副本因子NetworkTopologyStrategy
:同 DC ≥3,跨 DC 按需。
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
echo 3 > /proc/sys/vm/drop_caches
仅测试环境
echo deadline > /sys/block/
配置 RAID‑10 stripe 256 KB。
加节点 → 修改 seeds
,启动后执行 nodetool status
观察 JOINING
滚动升级示例:4.1 → 5.0
:停节点 → 备份配置 → 升级 JDK → 替换目录 → 启动 → 等 ring 绿 → 下一节点。
启用 TLS:在 conf
放置自签或 CA 证书,修改 server_encryption_options
与 client_encryption_options
。
强密码策略:创建最小权限应用账号,禁用 cassandra/cassandra
默认账号。
审计日志:在 cassandra.yaml
启用 audit_logging_options
,配合 SIEM。
nodetool:status
, cfstats
, tpstats
, flush
, repair
。
JMX Exporter → Prometheus / Grafana。
关键指标:Read/Write Latency
, Pending Compactions
, Heap Usage
, Disk Space Used
, Dropped Mutations
。
快照:nodetool snapshot [keyspace]
增量备份:incremental_backups: true
+ 外部任务(rsync / object storage)。
恢复:停止节点 → 清理数据 → 拷贝快照 → nodetool refresh
。
现象 |
排查步骤 |
---|---|
节点 UN 变 DN |
检查 |
写入超时 |
nodetool tpstats 查看 |
磁盘膨胀 |
定期 |
官方下载页 (5.0.4) (cassandra.apache.org)
5.0 发行说明 (cassandra.apache.org)
完成! 如需容器化、Operator 部署或细化监控 Grafana Dashboard,可进一步补充。