我的cassandra版本是3.11.17
时间: 2025-09-02 10:24:31 AIGC 浏览: 17
# Cassandra 3.11.17 跨平台集群搭建指南(Windows+Ubuntu)
## 一、版本特性说明
Cassandra 3.11.17是3.x系列的最后一个维护版本,主要特性:
- 稳定的SSTable格式(3.x系列兼容)
- 改进的修复操作性能
- 更好的二级索引支持
- 与4.x系列不兼容(数据格式和协议有差异)
## 二、跨平台集群搭建(Windows+Ubuntu)
### 2.1 环境准备
| 组件 | Windows节点 | Ubuntu节点 |
|------------|----------------------------------|--------------------------------|
| IP地址 | 192.168.1.2 | 192.168.1.3 |
| Java版本 | JDK 8u301+(3.11.17推荐) | OpenJDK 8 |
| Cassandra | 3.11.17 Windows版 | 3.11.17 Debian包 |
### 2.2 安装配置
**Windows节点配置**:
1. 下载Cassandra 3.11.17 Windows版
2. 修改`conf/cassandra.yaml`:
```yaml
cluster_name: 'LegacyCrossPlatform'
listen_address: 192.168.1.2
rpc_address: 0.0.0.0
broadcast_rpc_address: 192.168.1.2 # 3.11.x特有配置
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "192.168.1.2,192.168.1.3"
endpoint_snitch: GossipingPropertyFileSnitch # 推荐用于多数据中心
```
**Ubuntu节点安装**:
```bash
# 安装Java 8
sudo apt update
sudo apt install openjdk-8-jdk
# 添加Cassandra仓库
echo "deb http://www.apache.org/dist/cassandra/debian 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 update
# 安装特定版本
sudo apt install cassandra=3.11.17
```
**Ubuntu节点配置**:
```yaml
# /etc/cassandra/cassandra.yaml
cluster_name: 'LegacyCrossPlatform'
listen_address: 192.168.1.3
rpc_address: 0.0.0.0
broadcast_rpc_address: 192.168.1.3
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "192.168.1.2,192.168.1.3"
```
### 2.3 关键配置差异(3.11.x特有)
1. **内存设置**(`conf/jvm.options`):
```
# Windows(4GB内存示例)
-Xms2G
-Xmx2G
# Ubuntu
-Xms1G
-Xmx1G
```
2. **Gossip配置**:
```yaml
# 确保两个节点使用相同的dc和rack配置
# 创建或修改/etc/cassandra/cassandra-rackdc.properties
dc=DC1
rack=RAC1
```
## 三、启动与验证
### 3.1 启动顺序
1. 先启动Windows节点(作为seed节点之一)
2. 等待30秒后再启动Ubuntu节点
### 3.2 验证集群状态
```bash
# 在任一节点执行
nodetool status
```
预期输出:
```
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.1.2 125.32 KiB 256 50.0% 1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p RAC1
UN 192.168.1.3 98.21 KiB 256 50.0% 7q8r9s0t-1u2v-3w4x-5y6z-7a8b9c0d1e2f RAC1
```
## 四、3.11.x特有的一致性测试
### 4.1 创建Keyspace
```cql
CREATE KEYSPACE legacy_ks
WITH replication = {
'class': 'NetworkTopologyStrategy',
'DC1': 2 # 2个副本
};
USE legacy_ks;
CREATE TABLE consistency_test (
id UUID PRIMARY KEY,
platform TEXT,
value TEXT,
ts TIMESTAMP
);
```
### 4.2 一致性级别测试(3.11.x)
**LOCAL_QUORUM测试**:
```cql
-- 在Windows节点执行
CONSISTENCY LOCAL_QUORUM;
INSERT INTO consistency_test (id, platform, value, ts)
VALUES (uuid(), 'Windows', 'Test from Windows', toTimestamp(now()));
-- 在Ubuntu节点执行
CONSISTENCY LOCAL_QUORUM;
SELECT * FROM consistency_test WHERE platform = 'Windows';
```
**ONE级别测试**:
```cql
-- 在Ubuntu节点执行
CONSISTENCY ONE;
INSERT INTO consistency_test (id, platform, value, ts)
VALUES (uuid(), 'Ubuntu', 'Test from Ubuntu', toTimestamp(now()));
-- 在Windows节点执行
CONSISTENCY ONE;
SELECT * FROM consistency_test WHERE platform = 'Ubuntu';
```
### 4.3 3.11.x特有行为
1. **修复操作**:
```bash
# 模拟数据不一致后执行修复
nodetool repair legacy_ks
```
2. **读取修复**:
```cql
-- 3.11.x中READ REPAIR CHANCE默认为0.1
ALTER TABLE consistency_test WITH read_repair_chance = 0.2;
```
## 五、常见问题解决方案(3.11.x)
### 5.1 启动失败问题
**错误现象**:
```
org.apache.cassandra.exceptions.ConfigurationException:
Unable to gossip with any seeds
```
**解决方案**:
1. 检查`seeds`配置是否包含两个节点的IP
2. 确保`listen_address`和`broadcast_rpc_address`配置正确
3. 检查防火墙是否放行7000(TCP)和7199(JMX)端口
### 5.2 节点不同步问题
**表现**:
```
nodetool status显示节点状态为DN(Down/Normal)
```
**解决方案**:
1. 执行手动修复:
```bash
nodetool repair -pr legacy_ks
```
2. 检查系统日志:
```bash
# Ubuntu
tail -f /var/log/cassandra/system.log
# Windows
Get-Content "C:\Program Files\Cassandra\log\system.log" -Wait
```
### 5.3 性能优化建议
1. **JVM调优**(3.11.x默认配置较保守):
```
# Windows conf/jvm.options
-Xms2G
-Xmx2G
-XX:+UseG1GC
# Ubuntu /etc/cassandra/jvm.options
-Xms1G
-Xmx1G
```
2. **缓存配置**:
```yaml
# cassandra.yaml
key_cache_size_in_mb: 100
row_cache_size_in_mb: 0
```
## 六、3.11.x与4.x差异说明
| 特性 | 3.11.17 | 4.x |
|--------------------|----------------------------------|----------------------------------|
| 数据格式 | SSTable 5 | SSTable 6(不兼容) |
| 一致性级别 | LOCAL_QUORUM/QUORUM | 新增LOCAL_ONE |
| 修复操作 | 较慢 | 增量修复优化 |
| 轻量级事务 | 使用Paxos但性能较低 | 优化后的Paxos实现 |
| 二级索引 | 仅支持ALIVE列 | 支持SASI索引 |
## 七、测试结果记录示例(3.11.x)
| 测试场景 | 写入节点 | 读取节点 | 一致性 | 结果 | 延迟 | 备注 |
|------------------------|----------|----------|--------------|--------|--------|--------------------------|
| Windows→Windows | Win | Win | LOCAL_QUORUM | 成功 | 15ms | 默认修复概率0.1 |
| Windows→Ubuntu | Win | Ubuntu | LOCAL_QUORUM | 成功 | 28ms | 跨平台延迟较高 |
| Ubuntu→Windows | Ubuntu | Win | ONE | 成功 | 12ms | 可能读到过时数据 |
| 模拟网络分区后写入 | Win | Win | QUORUM | 失败 | - | 需要至少2个节点可用 |
| 执行nodetool repair | - | - | - | 成功 | 120s | 3.11.x修复较慢 |
## 八、升级建议
虽然3.11.17是稳定版本,但考虑:
1. **升级路径**:
```
3.11.x → 4.0.x(需要数据迁移)
```
2. **升级准备**:
- 先在测试环境验证`sstableupgrade`工具
- 准备回滚方案
阅读全文
相关推荐



















