1、基本配置
首先需要准备3台或以上的计算机。下面假定有3台运行 Linux 操作系统的计算机,IP地址分别为 192.168.0.100, 192.168.0.101 和 192.168.0.102。 系统需要安装好 Java 运行时环境,然后到这里下载 0.7 版本的 Cassandra 二进制发行包。
挑选其中的一台机开始配置,先展开 cassandra 发行包:
$ tar -zxvf apache-cassandra-$VERSION.tar.gz
$ cd apache-cassandra-$VERSION
其中的 conf/cassandra.yaml 文件为主要配置文件,0.7 版以后不再采用XML格式配置文件了,如果对 YAML 格式不熟悉的话最好先到这里了解一下。
Cassandra 在配置文件里默认设定了几个目录:
data_file_directories: /var/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
saved_caches_directory: /var/lib/cassandra/saved_caches
data_file_directories 可以一次同时设置几个不同目录,cassandra 会自动同步所有目录的数据。另外在日志配置文件 log4j-server.properties 也有一个默认设定日志文件的目录:
log4j.appender.R.File=/var/log/cassandra/system.log
一般情况下采用默认的配置即可,除非你有特殊的储存要求,所以现在有两种方案:一是按照默认配置创建相关的目录,二是修改配置文件采用自己指定的目录。
下面为了简单起见采用第一种方案:
$ sudo mkdir -p /var/log/cassandra
$ sudo chown -R `whoami` /var/log/cassandra
$ sudo mkdir -p /var/lib/cassandra
$ sudo chown -R `whoami` /var/lib/cassandra
上面的 `whoami` 是 Linux 指令用于获取当前登录的用户名,如果你不准备用当前登录用户运行 Cassandra,那么需要把 `whoami` 替换成具体的用户名。
2、有关集群的配置
由于 Cassandra 采用去中心化结构,所以当集群里的一台机器(节点)启动之后需要一个途径通知当前集群(有新节点加入啦),Cassandra 的配置文件里有一个 seeds 的设置项,所谓的 seeds 就是能够联系集群中所有节点的一台计算机,假如集群中所有的节点位于同一个机房同一个子网,那么只要随意挑选几台比较稳定的计算机即可。在当前的例子中因为只有3台机器,所以我挑选第一台作为种子节点,配置如下:
然后配置节点之前通信的IP地址:
listen_address: 192.168.0.100
需要注意的是这里必须使用具体的IP地址,而不能使用 0.0.0.0 这样的地址。
配置 Cassandra Thrift 客户端(应用程序)访问的IP地址:
rpc_address: 192.168.0.100
这项可以使用 0.0.0.0 监听一台机器所有的网络接口。
Cassandra 的 Keyspaces 和 ColumnFamilies 不再需要配置了,他们将在运行时创建和维护。
把配置好的 Cassandra 复制到第2和第3台机器,同时创建相关的目录,还需要修改 listen_address 和 rpc_address 为实际机器的IP地址。至此所有的配置完成了。
3、启动 Cassandra 各个节点以及集群管理
启动顺序没什么所谓,只要保证种子节点启动就可以了:
参数 -f 的作用是让 Cassandra 以前端程序方式运行,这样有利于调试和观察日志信息,而在实际生产环境中这个参数是不需要的(即 Cassandra 会以 daemon 方式运行)。
所有节点启动后可以通过 bin/nodetool 工具管理集群,比如查看所有节点运行情况:
$ bin/nodetool -host 192.168.0.101 ring
运行结果类似如下:
Address Status State Load Owns Token
159559...
192.168.0.100 Up Normal 49.27 KB 39.32% 563215...
192.168.0.101 Up Normal 54.42 KB 16.81% 849292...
192.168.0.102 Up Normal 73.14 KB 43.86% 159559...
命令中 -host 参数用于指定 nodetool 跟哪一个节点通信,对于 nodetool ring 命令来说,跟哪个节点通信都没有区别,所以可以随意指定其中一个节点。
从上面结果列表可以看到运行中的节点是否在线、State、数据负载量以及节点Token(可以理解为节点名称,这个是节点第一次启动时自动产生的)。我们可以使用 nodetool 组合 token 对具体节点进行管理,比如查看指定节点的详细信息:
$ bin/nodetool -host 192.168.0.101 info
运行的结果大致如下:
84929280487220726989221251643883950871
Load : 54.42 KB
Generation No : 1302057702
Uptime (seconds) : 591
Heap Memory (MB) : 212.14 / 1877.63
查看指定节点的数据结构信息:
$ bin/nodetool -host 192.168.0.101 cfstats
运行结果:
Keyspace: Keyspace1
Read Count: 0
Write Count: 0
Pending Tasks: 0
Column Family: CF1
SSTable count: 1
使用下面命令可以移除一个已经下线的节点(比如第2台机器关机了或者坏掉了)
$ bin/nodetool -host 192.168.0.101 removetoken 84929280487220726989221251643883950871
下了线的节点如何重新上线呢?什么都不用做,只需启动 Cassandra 程序它就会自动加入集群了。
在实际运作中我们可能会需要隔一段时间备份一次数据(创建一个快照),这个操作在 Cassandra 里非常简单:
$ bin/nodetool -host 192.168.0.101 snapshot
4、测试数据的读写
使用客户端组件加单元测试是首选的,如果仅想知道集群是否正常读写数据,可以用cassandra-cli 作一个简单测试:
$ bin/cassandra-cli -host 192.168.0.101
接着输入如下语句:
create keyspace Keyspace1;
use Keyspace1;
create column family Users with comparator=UTF8Type and default_validation_class=UTF8Type;
set Users[jsmith][first] = 'John';
set Users[jsmith][last] = 'Smith';
get Users[jsmith];
上面语句创建了一个名为“Keyspace1”的 keyspace,还创建了一个名为“Users”的 Column Family,最后向 Users 添加了一个 item。正常的话应该看到类似下面的结果:
=> (column=first, value=John, timestamp=1302059332540000)
=> (column=last, value=Smith, timestamp=1300874233834000)
Returned 2 results.
原文地址:
分享到:
相关推荐
Cassandra 集群配置详解 本文将通过实例介绍 Cassandra 的简单配置,包括基本配置、集群配置、启动 Cassandra 和集群管理等方面的内容。 一、基本配置 在 Cassandra 中,需要准备 3 台或以上的计算机,并且每台...
### Cassandra集群应用知识点详解 #### 一、Cassandra简介 ##### 1、基础描述 Cassandra是一款开源的分布式NoSQL数据库系统,最初由Facebook开发,主要用于处理简单的数据格式,如邮箱信息等。随着时间的发展,因...
### Apache Cassandra 2.06 集群配置详解 #### 一、基础知识与概念 Cassandra 是一款分布式、去中心化的 NoSQL 数据库系统,主要用于处理大规模数据,并且能够跨多个数据中心提供高可用性和高性能的服务。其数据...
了解这些配置参数对部署和优化Cassandra集群至关重要。 首先,cluster_name参数定义了集群的名称,这有助于防止不同逻辑集群中的机器相互加入,确保集群间的数据隔离。 num_tokens参数指定了随机分配给每个节点的...
根据实际的 Cassandra 集群配置进行调整。 **4. 使用 Eloquent ORM** "laravel-cassandra" 扩展包提供了类似 Laravel Eloquent ORM 的功能,允许你创建模型来操作 Cassandra 表。定义一个模型,例如 `User`: ```...
1. **创建集群**:通过简单的命令,你可以创建一个包含任意数量节点的Cassandra集群,这些节点可以分布在多个数据中心或 racks 中。 2. **启动和停止节点**:你可以独立启动或停止集群中的任何节点,模拟节点故障或...
### 数据源管理与分布式NoSQL系统——Cassandra集群管理 #### Cassandra简介 **1.1 基础描述** Cassandra是一款开源的分布式NoSQL数据库系统,最初由Facebook开发,旨在为诸如收件箱这样的简单格式数据提供高效的...
一个带有 Docker-compose 的小型多直流 Cassandra 集群 :party_popper: 是的,另一个 Docker-Cassandra 集群... Docker 镜像 映像基于并进行了更改以支持多个数据中心。 Ops Center 目前已禁用,但我希望有时间...
Cassandra-Operator的核心功能是通过Kubernetes的Operator模式来管理Cassandra的数据节点和集群配置。Operator是一种在Kubernetes上构建复杂、有状态应用的策略,它扩展了Kubernetes API,使得对特定应用的生命周期...
尽管目前仅支持Linux平台,但其提供了直观的界面和丰富的功能,包括性能监控、故障排查、集群配置等,极大地简化了Cassandra集群的运维工作。 #### 三、Cassandra集群部署规划详解 在规划Cassandra集群部署时,...
3. **Cassandra集群配置**: 在vagrant-cassandra-cluster项目中,你需要配置每台虚拟机的Cassandra节点,包括节点间通信的端口、种子节点、数据存储路径等。Cassandra的配置文件通常为`cassandra.yaml`,在虚拟机...
在这个"**Cassandra 监控脚本**"中,我们关注的是如何在Linux环境下通过Python和shell脚本来管理和维护Cassandra集群的健康状况。以下是这些脚本涉及的关键知识点: 1. **Cassandra 集群监控**: - **节点状态检查...
在本场景中,我们关注的是"盐-cassandra-formula",这是一个专门为配置Apache Cassandra集群设计的SaltStack公式。Apache Cassandra是一个分布式NoSQL数据库系统,广泛用于处理大规模数据分发和高可用性需求。 首先...
7. **集群管理和连接**:DevCenter可以轻松连接到多个Cassandra集群,并提供了一种统一的方式来管理这些集群的节点、拓扑和配置。 8. **教学和学习工具**:对于初学者,DevCenter提供了一个学习Cassandra和CQL的...
在`application.properties`或`application.yml`中,提供Cassandra集群的信息,如主机地址、端口、键空间等: ```properties cassandra.contact-points=localhost cassandra.port=9042 cassandra.keyspace-name=...
在使用`cassandra-jdbc-driver-0.8.2.jar`文件时,开发人员需要将其添加到项目的类路径中,以便在代码中通过`Class.forName()`加载驱动,并通过`DriverManager.getConnection()`建立到Cassandra集群的连接。...
### Linux 下 Cassandra 的安装与配置 #### 一、Java 的安装 Cassandra 是基于 Java 开发的分布式数据库管理系统,因此在安装 Cassandra 之前,需要确保系统已安装 Java 环境。 1. **下载 Java** 首先通过 wget...
在"一组Cassandra工具,用于备份、恢复、监控、修复和管理Apache Cassandra Datastax集群_Jinj.zip"这个压缩包中,我们可能找到了一系列实用的工具,这些工具可以帮助管理员更有效地管理和维护Cassandra集群。...