Cassandra安装与配置 #
一、安装前准备 #
1.1 系统要求 #
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 4核+ |
| 内存 | 4GB | 16GB+ |
| 磁盘 | 50GB | SSD 500GB+ |
| 操作系统 | Linux/Windows/macOS | Linux (CentOS/Ubuntu) |
1.2 软件依赖 #
text
必需依赖
├── Java 8 或 Java 11 (推荐)
└── Python 2.7+ (用于cqlsh工具)
可选依赖
├── Docker (容器部署)
└── Kubernetes (集群部署)
1.3 验证Java环境 #
bash
# 检查Java版本
java -version
# 期望输出
openjdk version "11.0.x" 2023-xx-xx
OpenJDK Runtime Environment (build 11.0.x+x-Ubuntu-0ubuntu2)
OpenJDK 64-Bit Server VM (build 11.0.x+x-Ubuntu-0ubuntu2, mixed mode, sharing)
二、Linux安装 #
2.1 使用APT安装 (Debian/Ubuntu) #
bash
# 添加Apache Cassandra仓库
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
# 安装Cassandra
sudo apt install cassandra
# 启动服务
sudo systemctl start cassandra
sudo systemctl enable cassandra
2.2 使用YUM安装 (CentOS/RHEL) #
bash
# 添加Cassandra仓库
sudo cat > /etc/yum.repos.d/cassandra.repo << EOF
[cassandra]
name=Apache Cassandra
baseurl=https://downloads.apache.org/cassandra/redhat/40x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
EOF
# 安装Cassandra
sudo yum install cassandra
# 启动服务
sudo systemctl start cassandra
sudo systemctl enable cassandra
2.3 二进制安装 #
bash
# 下载二进制包
wget https://downloads.apache.org/cassandra/4.1.5/apache-cassandra-4.1.5-bin.tar.gz
# 解压
tar -xzf apache-cassandra-4.1.5-bin.tar.gz
cd apache-cassandra-4.1.5
# 启动Cassandra
bin/cassandra
# 后台启动
bin/cassandra -R
三、Docker安装 #
3.1 单节点部署 #
bash
# 拉取镜像
docker pull cassandra:latest
# 运行容器
docker run --name cassandra-node \
-p 9042:9042 \
-p 7000:7000 \
-d cassandra:latest
# 验证运行状态
docker ps | grep cassandra
3.2 Docker Compose集群部署 #
yaml
version: '3.8'
services:
cassandra-node1:
image: cassandra:4.1
container_name: cassandra-node1
environment:
- CASSANDRA_CLUSTER_NAME=MyCluster
- CASSANDRA_DC=datacenter1
- CASSANDRA_ENDPOINT_SNITCH=SimpleSnitch
- MAX_HEAP_SIZE=512M
- HEAP_NEWSIZE=100M
ports:
- "9042:9042"
- "7000:7000"
volumes:
- cassandra-data1:/var/lib/cassandra
networks:
- cassandra-net
cassandra-node2:
image: cassandra:4.1
container_name: cassandra-node2
environment:
- CASSANDRA_CLUSTER_NAME=MyCluster
- CASSANDRA_DC=datacenter1
- CASSANDRA_ENDPOINT_SNITCH=SimpleSnitch
- CASSANDRA_SEEDS=cassandra-node1
- MAX_HEAP_SIZE=512M
- HEAP_NEWSIZE=100M
ports:
- "9043:9042"
volumes:
- cassandra-data2:/var/lib/cassandra
depends_on:
- cassandra-node1
networks:
- cassandra-net
cassandra-node3:
image: cassandra:4.1
container_name: cassandra-node3
environment:
- CASSANDRA_CLUSTER_NAME=MyCluster
- CASSANDRA_DC=datacenter1
- CASSANDRA_ENDPOINT_SNITCH=SimpleSnitch
- CASSANDRA_SEEDS=cassandra-node1
- MAX_HEAP_SIZE=512M
- HEAP_NEWSIZE=100M
ports:
- "9044:9042"
volumes:
- cassandra-data3:/var/lib/cassandra
depends_on:
- cassandra-node1
networks:
- cassandra-net
volumes:
cassandra-data1:
cassandra-data2:
cassandra-data3:
networks:
cassandra-net:
driver: bridge
bash
# 启动集群
docker-compose up -d
# 查看集群状态
docker exec -it cassandra-node1 nodetool status
四、Windows安装 #
4.1 使用安装包 #
powershell
# 下载安装包
# https://cassandra.apache.org/download/
# 解压到目标目录
Expand-Archive -Path apache-cassandra-4.1.5-bin.tar.gz -DestinationPath C:\
# 设置环境变量
$env:CASSANDRA_HOME = "C:\apache-cassandra-4.1.5"
$env:PATH += ";$env:CASSANDRA_HOME\bin"
# 启动Cassandra
cd C:\apache-cassandra-4.1.5\bin
.\cassandra.bat
4.2 Windows服务安装 #
powershell
# 安装为Windows服务
.\cassandra.bat install
# 启动服务
net start Cassandra
# 停止服务
net stop Cassandra
# 卸载服务
.\cassandra.bat uninstall
五、macOS安装 #
5.1 使用Homebrew #
bash
# 安装Cassandra
brew install cassandra
# 启动服务
brew services start cassandra
# 停止服务
brew services stop cassandra
# 重启服务
brew services restart cassandra
5.2 手动安装 #
bash
# 下载二进制包
curl -O https://downloads.apache.org/cassandra/4.1.5/apache-cassandra-4.1.5-bin.tar.gz
# 解压
tar -xzf apache-cassandra-4.1.5-bin.tar.gz
mv apache-cassandra-4.1.5 /usr/local/cassandra
# 配置环境变量
echo 'export CASSANDRA_HOME=/usr/local/cassandra' >> ~/.zshrc
echo 'export PATH=$PATH:$CASSANDRA_HOME/bin' >> ~/.zshrc
source ~/.zshrc
# 启动
cassandra -f
六、配置文件详解 #
6.1 主配置文件 (cassandra.yaml) #
yaml
# 集群名称
cluster_name: 'Test Cluster'
# 种子节点列表
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
- seeds: "127.0.0.1:7000"
# 监听地址
listen_address: localhost
rpc_address: localhost
# 端口配置
native_transport_port: 9042
storage_port: 7000
# 数据目录
data_file_directories:
- /var/lib/cassandra/data
# 提交日志目录
commitlog_directory: /var/lib/cassandra/commitlog
# 缓存目录
saved_caches_directory: /var/lib/cassandra/saved_caches
# 内存配置
max_heap_size: 4G
heap_new_size: 800M
# 并发配置
concurrent_reads: 32
concurrent_writes: 32
# 压缩配置
compaction_throughput_mb_per_sec: 64
6.2 JVM配置 (jvm.options) #
text
# 堆内存设置
-Xms4G
-Xmx4G
# 年轻代大小
-Xmn800M
# GC配置
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
# GC日志
-Xlog:gc*:file=/var/log/cassandra/gc.log:time,uptime,level,tags
6.3 日志配置 (logback.xml) #
xml
<configuration>
<appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/cassandra/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>/var/log/cassandra/system.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="SYSTEMLOG"/>
</root>
</configuration>
七、验证安装 #
7.1 检查服务状态 #
bash
# 使用nodetool检查
nodetool status
# 期望输出
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 103.68 KB 16 100.0% xxx-xxx-xxx rack1
7.2 连接测试 #
bash
# 使用cqlsh连接
cqlsh localhost 9042
# 期望输出
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.1.5 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cqlsh>
7.3 基本操作测试 #
sql
-- 查看集群信息
cqlsh> DESC CLUSTER;
-- 查看键空间
cqlsh> DESC KEYSPACES;
-- 创建测试键空间
cqlsh> CREATE KEYSPACE test_ks
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
-- 使用键空间
cqlsh> USE test_ks;
-- 创建测试表
cqlsh:test_ks> CREATE TABLE test_table (
id UUID PRIMARY KEY,
name TEXT
);
-- 插入测试数据
cqlsh:test_ks> INSERT INTO test_table (id, name)
VALUES (uuid(), 'test');
-- 查询数据
cqlsh:test_ks> SELECT * FROM test_table;
-- 清理测试数据
cqlsh:test_ks> DROP KEYSPACE test_ks;
八、常见问题 #
8.1 启动失败 #
bash
# 检查日志
tail -f /var/log/cassandra/system.log
# 常见问题
# 1. 内存不足
# 解决: 调整jvm.options中的堆内存设置
# 2. 端口被占用
netstat -tlnp | grep 9042
netstat -tlnp | grep 7000
# 3. 权限问题
sudo chown -R cassandra:cassandra /var/lib/cassandra
8.2 连接失败 #
bash
# 检查服务是否运行
ps aux | grep cassandra
# 检查端口监听
netstat -tlnp | grep 9042
# 检查防火墙
sudo ufw status
sudo ufw allow 9042/tcp
sudo ufw allow 7000/tcp
8.3 性能问题 #
yaml
# cassandra.yaml 性能调优
concurrent_reads: 32
concurrent_writes: 32
concurrent_counter_writes: 32
# 压缩配置
compaction_throughput_mb_per_sec: 64
# 缓存配置
key_cache_size_in_mb: 100
row_cache_size_in_mb: 0
九、生产环境建议 #
9.1 硬件配置 #
text
推荐配置
├── CPU: 8核以上
├── 内存: 32GB以上
├── 磁盘: SSD,独立磁盘用于数据和提交日志
└── 网络: 千兆网卡以上
9.2 集群规划 #
text
最小生产集群
├── 节点数: 3+ (奇数)
├── 复制因子: 3
├── 一致性级别: QUORUM
└── 数据中心: 根据业务需求规划
9.3 安全配置 #
yaml
# cassandra.yaml 安全配置
authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer
# 启用SSL
client_encryption_options:
enabled: true
keystore: /path/to/keystore.jks
keystore_password: your_password
十、总结 #
安装配置要点:
- 选择合适的安装方式:开发环境推荐Docker,生产环境推荐包管理器或二进制安装
- 合理配置资源:根据数据量和访问量配置内存和磁盘
- 集群规划:至少3节点,复制因子3
- 监控告警:配置日志和监控,及时发现和处理问题
下一步,让我们学习CQL基础语法!
最后更新:2026-03-27