1. 首页 > Cassandra教程 > 正文

Cassandra教程FG002-Cassandra官方标准安装及生产环境初始化配置实战

本文档风哥主要介绍Cassandra数据库官方标准安装及生产环境初始化配置,包括安装方式介绍、版本选择、安装前准备、安装规划、目录规划、用户规划、二进制包安装、配置文件初始化、服务启动与验证、安装后配置、单节点安装实战、集群初始化配置、安装常见问题处理等内容,风哥教程参考Cassandra官方文档Installation Guides内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 Cassandra数据库安装方式介绍

Cassandra数据库提供多种安装方式,满足不同场景需求:

1.1.1 Cassandra数据库安装方式对比

# Cassandra安装方式对比

# 1. 二进制包安装(Tarball)
优点: 灵活性高,可自定义安装路径
缺点: 需要手动配置环境和服务
适用: 生产环境、自定义部署

# 2. RPM包安装
优点: 系统集成好,服务管理方便
缺点: 安装路径固定,灵活性较低
适用: RHEL/CentOS/Oracle Linux系统

# 3. Debian包安装
优点: 依赖自动解决,升级方便
缺点: 安装路径固定
适用: Ubuntu/Debian系统

# 4. Docker容器安装
优点: 快速部署,环境隔离
缺点: 性能有损耗,持久化需配置
适用: 开发测试、容器化环境

# 生产环境推荐
二进制包安装(Tarball)- 灵活可控

1.1.2 Cassandra数据库安装架构

Cassandra数据库安装架构说明:

  • 单节点安装:适用于开发测试环境,快速验证功能
  • 集群安装:适用于生产环境,提供高可用性
  • 多数据中心安装:适用于跨地域部署,提供容灾能力
风哥提示:生产环境建议使用二进制包安装方式,便于统一管理安装路径和配置文件。安装前务必做好系统环境准备工作。更多视频教程www.fgedu.net.cn

1.2 Cassandra数据库版本选择

Cassandra数据库版本选择建议:

1.2.1 Cassandra数据库版本说明

# Cassandra版本说明

# 当前主要版本
4.0.x – 稳定版本,长期支持
4.1.x – 最新稳定版本,推荐生产使用
5.0.x – 开发版本,新特性预览

# 版本选择建议
生产环境: 4.1.x (推荐)
测试环境: 4.1.x 或 4.0.x
学习环境: 4.1.x

# 版本命名规则
主版本.次版本.补丁版本
例如: 4.1.0
主版本: 重大架构变更
次版本: 新功能添加
补丁版本: Bug修复

1.2.2 Cassandra数据库版本兼容性

# Cassandra版本兼容性说明

# Java版本要求
Cassandra 4.0: Java 8 或 Java 11
Cassandra 4.1: Java 11 (推荐) 或 Java 8
Cassandra 5.0: Java 11 或 Java 17

# 操作系统兼容性
Oracle Linux 7.x/8.x/9.x – 完全支持
RHEL 7.x/8.x/9.x – 完全支持
CentOS 7.x/8.x/Stream – 完全支持
Ubuntu 18.04/20.04/22.04 – 完全支持
Kylin v10 SP3 – 兼容测试通过
openEuler 20.03/22.03 – 兼容测试通过

# 客户端驱动兼容性
DataStax Java Driver 4.x
DataStax Python Driver 3.x/4.x
DataStax Node.js Driver 4.x

1.3 Cassandra数据库安装前准备

Cassandra数据库安装前需要完成以下准备工作:

1.3.1 Cassandra数据库系统环境检查

# 系统环境检查脚本
#!/bin/bash
# pre_install_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

echo “========== 系统环境检查 ==========”

# 检查操作系统版本
echo “1. 操作系统版本:”
cat /etc/os-release | grep -E “NAME|VERSION”

# 检查内核版本
echo -e “\n2. 内核版本:”
uname -r

# 检查系统架构
echo -e “\n3. 系统架构:”
uname -m

# 检查CPU核心数
echo -e “\n4. CPU核心数:”
nproc

# 检查内存大小
echo -e “\n5. 内存大小:”
free -h

# 检查磁盘空间
echo -e “\n6. 磁盘空间:”
df -h | grep -E “Filesystem|/$|/cassandra”

# 检查Java版本
echo -e “\n7. Java版本:”
java -version 2>&1 | head -3

# 检查网络配置
echo -e “\n8. 网络配置:”
ip addr show | grep -E “inet ” | grep -v “127.0.0.1”

# 检查主机名
echo -e “\n9. 主机名:”
hostname

# 检查时间同步
echo -e “\n10. 时间同步:”
timedatectl status | grep -E “Local time|System clock|NTP”

echo -e “\n========== 检查完成 ==========”

1.3.2 Cassandra数据库依赖软件安装

# 安装依赖软件

# 安装基础工具
# yum install -y wget curl vim net-tools lsof

# 安装Java运行环境
# yum install -y java-11-openjdk java-11-openjdk-devel

# 验证Java安装
# java -version
openjdk version “11.0.21” 2023-10-17 LTS
OpenJDK Runtime Environment (build 11.0.21+9-LTS-193)
OpenJDK 64-Bit Server VM (build 11.0.21+9-LTS-193, mixed mode, sharing)

# 配置JAVA_HOME环境变量
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

# 使配置生效
# source /etc/profile.d/java.sh

# 验证JAVA_HOME
# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk

Part02-生产环境规划与建议

2.1 Cassandra数据库安装规划

Cassandra数据库安装规划要点:

2.1.1 Cassandra数据库安装规划清单

# Cassandra安装规划清单

# 集群信息
集群名称: fgedu_cluster
数据中心: dc1
机架: rack1

# 节点信息(3节点示例)
节点1: 192.168.1.101 cassandra-node1.fgedu.net.cn
节点2: 192.168.1.102 cassandra-node2.fgedu.net.cn
节点3: 192.168.1.103 cassandra-node3.fgedu.net.cn

# 端口规划
内部通信端口: 7000 (TCP)
SSL内部通信: 7100 (TCP)
JMX监控端口: 7199 (TCP)
CQL客户端端口: 9042 (TCP)

# 副本策略
副本因子: 3
分区器: Murmur3Partitioner

# 安装版本
版本: Apache Cassandra 4.1.0

2.2 Cassandra数据库目录规划

Cassandra数据库目录规划建议:

2.2.1 Cassandra数据库目录结构

# Cassandra目录规划

# 安装目录
/cassandra/app # Cassandra安装目录
/cassandra/app/bin # 可执行文件目录
/cassandra/app/conf # 配置文件目录
/cassandra/app/lib # 库文件目录
/cassandra/app/tools # 工具目录

# 数据目录
/cassandra/fgdata # 数据文件目录
/cassandra/fgdata/data # SSTable数据文件
/cassandra/fgdata/hints # Hint文件
/cassandra/fgdata/cdc # CDC日志

# 提交日志目录
/cassandra/commitlog # 提交日志目录

# 缓存目录
/cassandra/saved_caches # 保存的缓存目录

# 日志目录
/cassandra/logs # 日志目录
/cassandra/logs/system.log # 系统日志
/cassandra/logs/debug.log # 调试日志
/cassandra/logs/gc.log # GC日志

# 备份目录
/cassandra/backup # 备份目录

2.2.2 Cassandra数据库目录创建

# 创建目录脚本
#!/bin/bash
# create_dirs.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 创建安装目录
mkdir -p /cassandra/app
mkdir -p /cassandra/fgdata/data
mkdir -p /cassandra/fgdata/hints
mkdir -p /cassandra/fgdata/cdc
mkdir -p /cassandra/commitlog
mkdir -p /cassandra/saved_caches
mkdir -p /cassandra/logs
mkdir -p /cassandra/backup

# 设置目录权限
chown -R cassandra:cassandra /cassandra

# 验证目录创建
ls -ld /cassandra/*

2.3 Cassandra数据库用户规划

Cassandra数据库用户规划建议:

2.3.1 Cassandra数据库操作系统用户

# 创建Cassandra操作系统用户

# 创建用户组
# groupadd -g 2000 cassandra

# 创建用户
# useradd -u 2000 -g cassandra -d /cassandra -s /bin/bash cassandra

# 设置用户密码(可选)
# passwd cassandra

# 验证用户创建
# id cassandra
uid=2000(cassandra) gid=2000(cassandra) groups=2000(cassandra)

# 配置sudo权限(可选)
# visudo
cassandra ALL=(ALL) NOPASSWD: /bin/systemctl start cassandra
cassandra ALL=(ALL) NOPASSWD: /bin/systemctl stop cassandra
cassandra ALL=(ALL) NOPASSWD: /bin/systemctl restart cassandra
cassandra ALL=(ALL) NOPASSWD: /bin/systemctl status cassandra

2.3.2 Cassandra数据库应用用户

# Cassandra数据库用户规划

# 超级管理员用户
用户名: cassandra (默认)
密码: 初始无密码,需首次登录后设置

# 应用用户
用户名: fgedu
密码: Fgedu@2024
权限: 读写指定Keyspace

# 只读用户
用户名: fgedu_readonly
密码: FgeduRead@2024
权限: 只读指定Keyspace

# 运维用户
用户名: fgedu_ops
密码: FgeduOps@2024
权限: 运维管理权限

生产环境建议:创建专用的操作系统用户运行Cassandra服务,避免使用root用户。数据库用户应遵循最小权限原则,为不同应用创建独立用户。学习交流加群风哥微信: itpux-com

Part03-生产环境项目实施方案

3.1 Cassandra数据库二进制包安装

使用二进制包安装Cassandra数据库的详细步骤:

3.1.1 Cassandra数据库软件下载

# 下载Cassandra二进制包

# 创建下载目录
# mkdir -p /tmp/cassandra
# cd /tmp/cassandra

# 下载Cassandra 4.1.0
# wget https://archive.apache.org/dist/cassandra/4.1.0/apache-cassandra-4.1.0-bin.tar.gz

# 验证下载文件
# ls -lh apache-cassandra-4.1.0-bin.tar.gz
-rw-r–r– 1 root root 45M Jan 15 10:00 apache-cassandra-4.1.0-bin.tar.gz

# 验证文件完整性(可选)
# wget https://archive.apache.org/dist/cassandra/4.1.0/apache-cassandra-4.1.0-bin.tar.gz.sha512
# sha512sum -c apache-cassandra-4.1.0-bin.tar.gz.sha512
apache-cassandra-4.1.0-bin.tar.gz: OK

3.1.2 Cassandra数据库软件安装

# 解压安装包
# cd /tmp/cassandra
# tar -xzf apache-cassandra-4.1.0-bin.tar.gz

# 移动到安装目录
# mv apache-cassandra-4.1.0 /cassandra/app

# 创建软链接(便于版本管理)
# ln -s /cassandra/app /cassandra/cassandra-current

# 查看安装目录结构
# ls -l /cassandra/app/
total 24
drwxr-xr-x 2 cassandra cassandra 4096 Jan 15 10:00 bin
drwxr-xr-x 3 cassandra cassandra 4096 Jan 15 10:00 conf
drwxr-xr-x 2 cassandra cassandra 4096 Jan 15 10:00 lib
drwxr-xr-x 3 cassandra cassandra 4096 Jan 15 10:00 pylib
drwxr-xr-x 4 cassandra cassandra 4096 Jan 15 10:00 tools
-rw-r–r– 1 cassandra cassandra 11558 Jan 15 10:00 LICENSE.txt
-rw-r–r– 1 cassandra cassandra 2315 Jan 15 10:00 NEWS.txt
-rw-r–r– 1 cassandra cassandra 8459 Jan 15 10:00 NOTICE.txt

# 设置目录权限
# chown -R cassandra:cassandra /cassandra

# 配置环境变量
# vi /etc/profile.d/cassandra.sh
export CASSANDRA_HOME=/cassandra/app
export PATH=$CASSANDRA_HOME/bin:$PATH

# 使配置生效
# source /etc/profile.d/cassandra.sh

# 验证安装
# cassandra -v
4.1.0

3.2 Cassandra数据库配置文件初始化

Cassandra数据库配置文件初始化步骤:

3.2.1 Cassandra数据库主配置文件

# 编辑cassandra.yaml配置文件
# vi /cassandra/app/conf/cassandra.yaml

# 集群名称配置
cluster_name: ‘fgedu_cluster’

# 数据目录配置
data_file_directories:
– /cassandra/fgdata/data

# 提交日志目录
commitlog_directory: /cassandra/commitlog

# 缓存目录
saved_caches_directory: /cassandra/saved_caches

# Hints目录
hints_directory: /cassandra/fgdata/hints

# CDC目录
cdc_directory: /cassandra/fgdata/cdc

# 种子节点配置(集群模式)
seed_provider:
– class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
– seeds: “192.168.1.101,192.168.1.102,192.168.1.103”

# 监听地址配置
listen_address: 192.168.1.101
rpc_address: 192.168.1.101

# 端口配置
native_transport_port: 9042
storage_port: 7000

# 数据中心配置
endpoint_snitch: GossipingPropertyFileSnitch

# 分区器配置
partitioner: org.apache.cassandra.dht.Murmur3Partitioner

# 副本策略(创建Keyspace时配置)
# 默认不在此配置

3.2.2 Cassandra数据库机架配置

# 编辑cassandra-rackdc.properties配置文件
# vi /cassandra/app/conf/cassandra-rackdc.properties

# 数据中心和机架配置
dc=dc1
rack=rack1

# 多数据中心示例
# 节点1 (数据中心1)
# dc=dc1
# rack=rack1

# 节点2 (数据中心1)
# dc=dc1
# rack=rack2

# 节点3 (数据中心2)
# dc=dc2
# rack=rack1

3.2.3 Cassandra数据库JVM配置

# 编辑JVM配置文件
# vi /cassandra/app/conf/jvm-server.options

# 堆内存配置(根据系统内存调整)
-Xms8G
-Xmx8G

# 新生代大小
-Xmn2G

# 垃圾回收器
-XX:+UseG1GC

# G1参数
-XX:MaxGCPauseMillis=200
-XX:InitiatingHeapOccupancyPercent=35
-XX:G1HeapRegionSize=16M

# 元空间配置
-XX:MaxMetaspaceSize=256M
-XX:MetaspaceSize=64M

# GC日志配置
-Xlog:gc=info,heap*=debug,age*=trace:file=/cassandra/logs/gc.log:time,uptime,level,tags:filecount=10,filesize=10M

# 其他参数
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/cassandra/logs/

3.2.4 Cassandra数据库日志配置

# 编辑logback配置文件
# vi /cassandra/app/conf/logback.xml

# 日志级别配置(默认INFO级别)




# 日志文件路径配置

# 日志滚动策略

${cassandra.logdir}/system.log.%d{yyyy-MM-dd}.%i.zip
50MB
7
1GB

3.3 Cassandra数据库服务启动与验证

Cassandra数据库服务启动与验证步骤:

3.3.1 Cassandra数据库服务启动

# 启动Cassandra服务(前台启动,用于调试)
# su – cassandra
$ /cassandra/app/bin/cassandra -f

# 后台启动Cassandra服务
# su – cassandra
$ /cassandra/app/bin/cassandra

# 查看启动日志
$ tail -f /cassandra/logs/system.log

# 启动日志示例
INFO [main] 2024-01-15 10:30:00,000 CassandraDaemon.java:XXX – Starting Cassandra server
INFO [main] 2024-01-15 10:30:05,000 YamlConfigurationLoader.java:XXX – Loading settings from file:///cassandra/app/conf/cassandra.yaml
INFO [main] 2024-01-15 10:30:10,000 Config.java:XXX – Node configuration:[cluster_name=fgedu_cluster, …]
INFO [main] 2024-01-15 10:30:15,000 StorageService.java:XXX – Loading persisted ring state
INFO [main] 2024-01-15 10:30:20,000 Gossiper.java:XXX – Waiting for gossip to settle before accepting client requests…
INFO [main] 2024-01-15 10:30:25,000 Gossiper.java:XXX – No gossip backlog; proceeding
INFO [main] 2024-01-15 10:30:30,000 CassandraDaemon.java:XXX – Starting listening for CQL clients on /192.168.1.101:9042 (unencrypted)…
INFO [main] 2024-01-15 10:30:35,000 CassandraDaemon.java:XXX – Cassandra startup complete

3.3.2 Cassandra数据库服务验证

# 检查Cassandra进程
# ps -ef | grep cassandra
cassandra 12345 1 3 10:30 ? 00:00:15 /usr/lib/jvm/java-11-openjdk/bin/java -ea -da:net.openhft… org.apache.cassandra.service.CassandraDaemon

# 检查端口监听
# netstat -tlnp | grep java
tcp6 0 0 :::9042 :::* LISTEN 12345/java
tcp6 0 0 :::7000 :::* LISTEN 12345/java
tcp6 0 0 :::7199 :::* LISTEN 12345/java

# 检查节点状态
# nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
— Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.1.101 103.45 KB 256 100.0% 8e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8a9b rack1

# 连接Cassandra
# cqlsh 192.168.1.101 9042
Connected to fgedu_cluster at 192.168.1.101:9042
[cqlsh 6.8.0 | Cassandra 4.1.0 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.

# 查看集群信息
cqlsh> DESC CLUSTER;

Cluster: fgedu_cluster
Partitioner: Murmur3Partitioner
Snitch: GossipingPropertyFileSnitch

# 退出cqlsh
cqlsh> exit

3.3.3 Cassandra数据库服务管理

# 配置systemd服务
# vi /etc/systemd/system/cassandra.service
[Unit]
Description=Cassandra Service
After=network.target

[Service]
Type=forking
User=cassandra
Group=cassandra
Environment=”JAVA_HOME=/usr/lib/jvm/java-11-openjdk”
Environment=”CASSANDRA_HOME=/cassandra/app”
Environment=”CASSANDRA_CONF=/cassandra/app/conf”
ExecStart=/cassandra/app/bin/cassandra -p /cassandra/cassandra.pid
ExecStop=/cassandra/app/bin/cassandra-stop -p /cassandra/cassandra.pid
PIDFile=/cassandra/cassandra.pid
Restart=on-failure
RestartSec=30
LimitNOFILE=65536
LimitMEMLOCK=infinity

[Install]
WantedBy=multi-user.target

# 重载systemd配置
# systemctl daemon-reload

# 启动服务
# systemctl start cassandra

# 查看服务状态
# systemctl status cassandra
● cassandra.service – Cassandra Service
Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2024-01-15 10:30:00 CST; 5min ago
Main PID: 12345 (java)
Tasks: 45 (limit: 4915)
Memory: 4.5G
CGroup: /system.slice/cassandra.service
└─12345 /usr/lib/jvm/java-11-openjdk/bin/java…

# 设置开机自启
# systemctl enable cassandra
Created symlink /etc/systemd/system/multi-user.target.wants/cassandra.service → /etc/systemd/system/cassandra.service.

# 停止服务
# systemctl stop cassandra

# 重启服务
# systemctl restart cassandra

3.4 Cassandra数据库安装后配置

Cassandra数据库安装后需要进行必要的配置:

3.4.1 Cassandra数据库用户配置

# 连接Cassandra
# cqlsh 192.168.1.101 9042
Connected to fgedu_cluster at 192.168.1.101:9042
[cqlsh 6.8.0 | Cassandra 4.1.0 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.

# 修改默认超级用户密码
cqlsh> ALTER ROLE cassandra WITH PASSWORD = ‘Cassandra@2024’;

# 创建应用用户
cqlsh> CREATE ROLE fgedu WITH PASSWORD = ‘Fgedu@2024’ AND LOGIN = true AND SUPERUSER = false;

# 创建只读用户
cqlsh> CREATE ROLE fgedu_readonly WITH PASSWORD = ‘FgeduRead@2024’ AND LOGIN = true AND SUPERUSER = false;

# 创建Keyspace
cqlsh> CREATE KEYSPACE fgedudb
… WITH replication = {‘class’: ‘SimpleStrategy’, ‘replication_factor’: 3}
… AND durable_writes = true;

# 授权应用用户
cqlsh> GRANT ALL PERMISSIONS ON KEYSPACE fgedudb TO fgedu;

# 授权只读用户
cqlsh> GRANT SELECT ON KEYSPACE fgedudb TO fgedu_readonly;

# 查看用户列表
cqlsh> LIST ROLES;

role | super | login | options
—————–+——-+——-+———
cassandra | True | True | {}
fgedu | False | True | {}
fgedu_readonly | False | True | {}

(3 rows)

3.4.2 Cassandra数据库测试表创建

# 使用应用用户连接
# cqlsh 192.168.1.101 9042 -u fgedu -p Fgedu@2024
Connected to fgedu_cluster at 192.168.1.101:9042
[cqlsh 6.8.0 | Cassandra 4.1.0 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.

# 切换到fgedudb
cqlsh> USE fgedudb;
cqlsh:fgedudb>

# 创建测试表
cqlsh:fgedudb> CREATE TABLE fgedu_test (
… id uuid PRIMARY KEY,
… name text,
… value int,
… created_at timestamp
… );

# 插入测试数据
cqlsh:fgedudb> INSERT INTO fgedu_test (id, name, value, created_at)
… VALUES (uuid(), ‘test1’, 100, toTimestamp(now()));
cqlsh:fgedudb> INSERT INTO fgedu_test (id, name, value, created_at)
… VALUES (uuid(), ‘test2’, 200, toTimestamp(now()));

# 查询数据
cqlsh:fgedudb> SELECT * FROM fgedu_test;

id | created_at | name | value
————————————–+———————————-+——-+——-
8e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8a9b | 2024-01-15 10:35:00.123000+0000 | test1 | 100
9f6g7b8c-9d0e-1f2a-3b4c-5d6e7f8a9b0c | 2024-01-15 10:35:01.234000+0000 | test2 | 200

(2 rows)

风哥提示:安装完成后务必修改默认用户密码,创建应用专用用户并授予最小权限。生产环境建议启用认证和加密功能。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 Cassandra数据库单节点安装实战

完整的单节点安装实战案例:

4.1.1 Cassandra数据库安装环境信息

# 安装环境信息
操作系统: Oracle Linux 9.3
主机名: cassandra-node1.fgedu.net.cn
IP地址: 192.168.1.101
CPU: 8核
内存: 32GB
磁盘: 500GB SSD
Java版本: OpenJDK 11
Cassandra版本: 4.1.0

# 目录规划
安装目录: /cassandra/app
数据目录: /cassandra/fgdata
日志目录: /cassandra/logs

4.1.2 Cassandra数据库安装完整流程

# 步骤1: 系统环境准备
# 关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld

# 关闭SELinux
# setenforce 0
# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

# 配置主机名
# hostnamectl set-hostname cassandra-node1.fgedu.net.cn

# 配置hosts文件
# vi /etc/hosts
192.168.1.101 cassandra-node1.fgedu.net.cn cassandra-node1

# 步骤2: 内核参数优化
# 关闭透明大页
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag

# 配置内核参数
# vi /etc/sysctl.conf
vm.max_map_count = 1048575
vm.swappiness = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

# sysctl -p

# 步骤3: 创建用户和目录
# groupadd -g 2000 cassandra
# useradd -u 2000 -g cassandra -d /cassandra -s /bin/bash cassandra

# mkdir -p /cassandra/app
# mkdir -p /cassandra/fgdata/data
# mkdir -p /cassandra/commitlog
# mkdir -p /cassandra/saved_caches
# mkdir -p /cassandra/logs

# chown -R cassandra:cassandra /cassandra

# 步骤4: 安装Java
# yum install -y java-11-openjdk java-11-openjdk-devel

# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

# source /etc/profile.d/java.sh

# 步骤5: 下载安装Cassandra
# cd /tmp
# wget https://archive.apache.org/dist/cassandra/4.1.0/apache-cassandra-4.1.0-bin.tar.gz
# tar -xzf apache-cassandra-4.1.0-bin.tar.gz
# mv apache-cassandra-4.1.0 /cassandra/app
# chown -R cassandra:cassandra /cassandra

# 步骤6: 配置Cassandra
# vi /cassandra/app/conf/cassandra.yaml
cluster_name: ‘fgedu_cluster’
data_file_directories:
– /cassandra/fgdata/data
commitlog_directory: /cassandra/commitlog
saved_caches_directory: /cassandra/saved_caches
listen_address: 192.168.1.101
rpc_address: 192.168.1.101
seed_provider:
– class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
– seeds: “192.168.1.101”

# vi /cassandra/app/conf/cassandra-rackdc.properties
dc=dc1
rack=rack1

# 步骤7: 配置JVM
# vi /cassandra/app/conf/jvm-server.options
-Xms8G
-Xmx8G
-Xmn2G
-XX:+UseG1GC

# 步骤8: 启动服务
# su – cassandra
$ /cassandra/app/bin/cassandra

# 步骤9: 验证安装
$ nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
— Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.1.101 103.45 KB 256 100.0% 8e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8a9b rack1

4.2 Cassandra数据库集群初始化配置

Cassandra数据库集群初始化配置实战:

4.2.1 Cassandra数据库集群配置

# 集群节点信息
节点1: 192.168.1.101 cassandra-node1.fgedu.net.cn
节点2: 192.168.1.102 cassandra-node2.fgedu.net.cn
节点3: 192.168.1.103 cassandra-node3.fgedu.net.cn

# 在所有节点上执行相同的安装步骤
# 区别在于配置文件中的listen_address和rpc_address

# 节点1配置
# vi /cassandra/app/conf/cassandra.yaml
cluster_name: ‘fgedu_cluster’
listen_address: 192.168.1.101
rpc_address: 192.168.1.101
seed_provider:
– class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
– seeds: “192.168.1.101,192.168.1.102”

# 节点2配置
# vi /cassandra/app/conf/cassandra.yaml
cluster_name: ‘fgedu_cluster’
listen_address: 192.168.1.102
rpc_address: 192.168.1.102
seed_provider:
– class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
– seeds: “192.168.1.101,192.168.1.102”

# 节点3配置
# vi /cassandra/app/conf/cassandra.yaml
cluster_name: ‘fgedu_cluster’
listen_address: 192.168.1.103
rpc_address: 192.168.1.103
seed_provider:
– class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
– seeds: “192.168.1.101,192.168.1.102”

# 启动顺序
# 1. 先启动种子节点(节点1和节点2)
# 2. 再启动非种子节点(节点3)

# 查看集群状态
# nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
— Address Load Tokens Owns (effective) Host ID Rack
UN 192.168.1.101 125.45 KB 256 100.0% 8e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8a9b rack1
UN 192.168.1.102 130.12 KB 256 100.0% 9f6g7b8c-9d0e-1f2a-3b4c-5d6e7f8a9b0c rack1
UN 192.168.1.103 128.78 KB 256 100.0% 0g7h8c9d-0e1f-2a3b-4c5d-6e7f8a9b0c1d rack1

4.3 Cassandra数据库安装常见问题处理

Cassandra数据库安装常见问题与解决方案:

4.3.1 Cassandra数据库启动失败

# 问题现象
# systemctl start cassandra
Job for cassandra.service failed because the control process exited with error code.

# 排查步骤
# 1. 查看系统日志
# journalctl -u cassandra -n 50

# 2. 查看Cassandra日志
# tail -100 /cassandra/logs/system.log

# 3. 常见错误及解决方案

# 错误1: Java版本不兼容
ERROR [main] CassandraDaemon.java:XXX – Cannot start Cassandra with Java 8, please use Java 11
解决方案: 安装Java 11
# yum install -y java-11-openjdk java-11-openjdk-devel

# 错误2: 端口被占用
ERROR [main] CassandraDaemon.java:XXX – Unable to bind to address 192.168.1.101:9042
解决方案: 检查端口占用
# netstat -tlnp | grep 9042
# kill -9

# 错误3: 目录权限问题
ERROR [main] CassandraDaemon.java:XXX – Permission denied: /cassandra/fgdata/data
解决方案: 修改目录权限
# chown -R cassandra:cassandra /cassandra

# 错误4: 内存不足
ERROR [main] CassandraDaemon.java:XXX – Cannot allocate memory
解决方案: 调整JVM堆内存
# vi /cassandra/app/conf/jvm-server.options
-Xms4G
-Xmx4G

# 错误5: 集群名称冲突
ERROR [main] CassandraDaemon.java:XXX – Cannot start node with cluster_name ‘fgedu_cluster’ because it is already in use
解决方案: 清理数据目录或修改集群名称
# rm -rf /cassandra/fgdata/*
# rm -rf /cassandra/commitlog/*

4.3.2 Cassandra数据库连接失败

# 问题现象
# cqlsh 192.168.1.101 9042
Connection error: (‘Unable to connect to any servers’, {‘192.168.1.101’: error(111, “Tried connecting to [(‘192.168.1.101’, 9042)]. Last error: Connection refused”)})

# 排查步骤
# 1. 检查服务状态
# systemctl status cassandra

# 2. 检查端口监听
# netstat -tlnp | grep 9042

# 3. 检查防火墙
# firewall-cmd –list-all

# 4. 检查配置文件
# grep -E “listen_address|rpc_address|native_transport_port” /cassandra/app/conf/cassandra.yaml

# 常见原因及解决方案

# 原因1: 服务未启动
解决方案: 启动服务
# systemctl start cassandra

# 原因2: rpc_address配置错误
解决方案: 修改rpc_address配置
# vi /cassandra/app/conf/cassandra.yaml
rpc_address: 192.168.1.101

# 原因3: 防火墙阻止
解决方案: 开放端口
# firewall-cmd –add-port=9042/tcp –permanent
# firewall-cmd –reload

# 原因4: 客户端驱动版本不兼容
解决方案: 升级客户端驱动
# pip install –upgrade cassandra-driver

生产环境建议:安装前仔细阅读官方文档,按照规划步骤执行。遇到问题时,首先查看日志文件定位问题原因。更多学习教程公众号风哥教程itpux_com

Part05-风哥经验总结与分享

5.1 Cassandra数据库安装最佳实践

Cassandra数据库安装最佳实践总结:

  • 安装方式选择:生产环境推荐二进制包安装,便于版本管理和路径定制
  • 版本选择:选择稳定版本(如4.1.x),避免使用开发版本
  • 安装前准备:充分做好系统环境检查和优化
  • 目录规划:数据目录、提交日志目录、缓存目录分离存储
  • 用户管理:创建专用操作系统用户,避免使用root
  • 配置优化:根据硬件资源合理配置JVM参数
  • 服务管理:配置systemd服务,便于统一管理
  • 安全配置:安装后立即修改默认密码,创建应用用户

5.2 Cassandra数据库初始化检查清单

# Cassandra初始化检查清单

# 1. 系统环境检查
[ ] 操作系统版本符合要求
[ ] 内核版本符合要求
[ ] CPU核心数满足要求
[ ] 内存大小满足要求
[ ] 磁盘空间充足
[ ] 网络配置正确

# 2. 软件依赖检查
[ ] Java版本正确安装
[ ] JAVA_HOME环境变量配置
[ ] 必要的系统工具安装

# 3. 内核参数优化
[ ] 透明大页已关闭
[ ] NUMA已关闭(可选)
[ ] 文件描述符限制已配置
[ ] 内核参数已优化

# 4. 用户和目录
[ ] Cassandra用户已创建
[ ] 目录结构已创建
[ ] 目录权限已设置

# 5. 配置文件
[ ] cassandra.yaml已配置
[ ] cassandra-rackdc.properties已配置
[ ] jvm-server.options已配置
[ ] logback.xml已配置

# 6. 服务启动
[ ] 服务正常启动
[ ] 端口正常监听
[ ] 节点状态正常

# 7. 功能验证
[ ] cqlsh连接正常
[ ] 创建Keyspace正常
[ ] 创建表正常
[ ] 数据读写正常

# 8. 安全配置
[ ] 默认用户密码已修改
[ ] 应用用户已创建
[ ] 权限已正确授予

5.3 Cassandra数据库安全初始化配置

Cassandra数据库安全初始化配置建议:

5.3.1 Cassandra数据库认证配置

# 启用认证
# vi /cassandra/app/conf/cassandra.yaml

# 启用认证器
authenticator: PasswordAuthenticator

# 启用授权器
authorizer: CassandraAuthorizer

# 启用角色管理
role_manager: CassandraRoleManager

# 重启服务
# systemctl restart cassandra

# 使用默认用户登录
# cqlsh 192.168.1.101 9042 -u cassandra -p cassandra

# 修改默认密码
cqlsh> ALTER ROLE cassandra WITH PASSWORD = ‘Cassandra@2024’;

# 创建管理员用户
cqlsh> CREATE ROLE fgedu_admin WITH PASSWORD = ‘FgeduAdmin@2024’ AND LOGIN = true AND SUPERUSER = true;

# 创建应用用户
cqlsh> CREATE ROLE fgedu WITH PASSWORD = ‘Fgedu@2024’ AND LOGIN = true AND SUPERUSER = false;

# 授权
cqlsh> GRANT ALL PERMISSIONS ON KEYSPACE fgedudb TO fgedu;

5.3.2 Cassandra数据库加密配置

# 启用节点间加密
# vi /cassandra/app/conf/cassandra.yaml

server_encryption_options:
internode_encryption: all
keystore: /cassandra/app/conf/.keystore
keystore_password: cassandra
truststore: /cassandra/app/conf/.truststore
truststore_password: cassandra

# 启用客户端加密
client_encryption_options:
enabled: true
optional: false
keystore: /cassandra/app/conf/.keystore
keystore_password: cassandra

# 生成密钥库
# keytool -genkeypair -alias cassandra -keyalg RSA -keysize 2048 -validity 365 -keystore /cassandra/app/conf/.keystore -storepass cassandra -keypass cassandra -dname “CN=cassandra, OU=IT, O=FGEDU, L=Beijing, ST=Beijing, C=CN”

# 重启服务
# systemctl restart cassandra

# 使用SSL连接
# cqlsh 192.168.1.101 9042 –ssl

风哥提示:生产环境必须启用认证功能,建议启用加密功能。定期审计用户权限,及时清理无用账户。from Cassandra视频:www.itpux.com

本文档详细介绍了Cassandra数据库官方标准安装及生产环境初始化配置,包括安装方式介绍、版本选择、安装前准备、安装规划、目录规划、用户规划、二进制包安装、配置文件初始化、服务启动与验证、安装后配置、单节点安装实战、集群初始化配置、安装常见问题处理、安装最佳实践、初始化检查清单、安全初始化配置等内容。通过学习本文档,读者可以掌握Cassandra数据库的安装部署技能,为后续运维管理打下坚实基础。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息