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

十、总结 #

安装配置要点:

  1. 选择合适的安装方式:开发环境推荐Docker,生产环境推荐包管理器或二进制安装
  2. 合理配置资源:根据数据量和访问量配置内存和磁盘
  3. 集群规划:至少3节点,复制因子3
  4. 监控告警:配置日志和监控,及时发现和处理问题

下一步,让我们学习CQL基础语法!

最后更新:2026-03-27