最近在测试 Cassandra 这种分布式的 NoSql 数据库,配置还是有点麻烦。今天总结下具体的配置过程和注意事项,以下是如何在一台PC上运行一个两个节点的 Cassandra 集群。
配置之前,请确保以下必要条件,
- JDK/JRE, Cassandra 服务端是个 java 程序,你首先要装一个JDK
- 32/64 bit jvm
- 选择好三四个TCP 端口。
- Cassandra 存储端口
- 7000 是默认端口
- Thrift 侦听端口
- 用于跟客户端通讯
- 9160 默认
- 两个 JMX 监控的端口, 8080/ 9080
- JWDP 调试端口(可选)
- 需要两个 IP 地址
- 在windows下面你可以选择127.0.0.1 到127.0.0.255之间任何两个。如果是Linux 和MAC,参考 如何在 Linux/苹果系统MAC下面,设定多个 IP 地址用于测试 CASSANDRA
- 127.0.0.1
- 127.0.0.2
接下来,我们创建一个两个节点名字为 HelloCassendra 的群集。
- 下载cassandra的压缩文件 http://cassandra.apache.org/ , 我用的是 版本 0.6.3.
- 解压缩到 本地文件夹,比如 C:\apache-cassandra-0.6.3
- 复制 Conf 文件夹,两份Copy,分别为Conf1,conf2. 每个文件夹对应一个节点。
- C:\apache-cassandra-0.6.3\conf1
- C:\apache-cassandra-0.6.3\conf2
- 到文件夹 conf1 下面, 修改节点1的配置(Cassandra 使用一种gossip 集群协议,需要有一些种子节点,我们配置节点1为种子节点)
- C:\apache-cassandra-0.6.3\conf1\log4j.properties
- # Edit the next line to point to your logs directory
log4j.appender.R.File=/var/log/cassandra/system.log - 改为 =/var/log/cassandra/c1/system.log
- 这样会把log写道C1的目录 c:/var/log/cassandra/c1/system.log
- # Edit the next line to point to your logs directory
- C:\apache-cassandra-0.6.3\conf1\storage-conf.xml
- 把群集名字改为 HelloCassandra
- <ClusterName>
Test Cluster</ClusterName> - <ClusterName>HelloCassandra</ClusterName>
- <ClusterName>
- 改一下放置Log和数据的文件夹
- <CommitLogDirectory>/var/lib/cassandra/C1/commitlog</CommitLogDirectory>
<DataFileDirectories>
<DataFileDirectory>/var/lib/cassandra/C1/data</DataFileDirectory>
</DataFileDirectories> - 把Localhost 替换为 127.0.0.1.
- <ListenAddress>127.0.0.1</ListenAddress>
- <ThriftAddress>127.0.0.1</ThriftAddress>
- 把群集名字改为 HelloCassandra
- C:\apache-cassandra-0.6.3\conf1\log4j.properties
- 到文件夹 conf2 下面, 修改节点2的配置(Cassandra 使用一种gossip 集群协议,需要有一些种子节点,我们配置节点2为普通节点,通过给节点1通讯来建立群集)
- C:\apache-cassandra-0.6.3\conf2\log4j.properties
- # Edit the next line to point to your logs directory
log4j.appender.R.File=/var/log/cassandra/system.log - =/var/log/cassandra/c2/system.log
- 这样节点log写到C2目录 c:/var/log/cassandra/c2/system.log
- # Edit the next line to point to your logs directory
- C:\apache-cassandra-0.6.3\conf2\storage-conf.xml
- 群集名字修改为HelloCassandra
- <ClusterName>
Test Cluster</ClusterName> - <ClusterName>HelloCassandra</ClusterName>
- <ClusterName>
- 修改 commitlogdirectory and DataFileDirectory 文件夹
- <CommitLogDirectory>/var/lib/cassandra/C2/commitlog</CommitLogDirectory>
<DataFileDirectories>
<DataFileDirectory>/var/lib/cassandra/C3/data</DataFileDirectory>
</DataFileDirectories>
- <CommitLogDirectory>/var/lib/cassandra/C2/commitlog</CommitLogDirectory>
- 把localhost 替换为 127.0.0.2 ,每个节点需要不同的IP地址。节点2 使用127.0.0.2.
- <ListenAddress>127.0.0.2</ListenAddress>
- <ThriftAddress>127.0.0.2</ThriftAddress>
- 启动AutoBootTrap模式,自动从其他节点分配数据
- <AutoBootstrap>false</AutoBootstrap>
- 群集名字修改为HelloCassandra
- C:\apache-cassandra-0.6.3\conf2\log4j.properties
- 到文件 C:\apache-cassandra-0.6.3\bin 下面, 复制 cassandra.bat ,另存为 c1.bat, c2.bat.每一个批处理文件对应一个实例的启动脚本。
- C:\apache-cassandra-0.6.3\bin\c1.bat
- C:\apache-cassandra-0.6.3\bin\c2.bat
- 编辑 c1.bat,指向Conf1目录下面的配置,修改JMX 端口以及调试端口。这里我们禁用调试
- if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF=%CASSANDRA_HOME%\conf
- if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF=%CASSANDRA_HOME%\conf1
- 删除调试这一行
-Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n^- 对于实例1,保持默认端口8080
- -Dcom.sun.management.jmxremote.port=8080^
- 编辑 c2.bat,指向Conf2目录下面的配置,修改JMX 端口以及调试端口。这里我们禁用调试
- if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF=%CASSANDRA_HOME%\conf
- if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF=%CASSANDRA_HOME%\conf2
- 删除调试这一行
-Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n^
- 对于实例2,替换默认端口为9080
- -Dcom.sun.management.jmxremote.port=9080^
- if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF=%CASSANDRA_HOME%\conf
- 准备启动两个批处理。
启动C1.bat,你可以看到他是个Seed 节点。
Starting Cassandra Server |
这里7000是存储端口,8080是jmx端口,9160 是Thrift 端口。
这时候cluster中只有一个节点
C:\apache-cassandra-0.6.3>bin\nodetool --host 127.0.0.1 --port 8080 ring |
然后启动c2.bat,这里可能要等120秒。90秒load配置,30秒来分配数据
Starting Cassandra Server |
在看tcpview,你可以看到两个ip通过存储端口建立会话
时候就可以看到群集有两个成员了。
C:\apache-cassandra-0.6.3>bin\nodetool --host 127.0.0.1 --port 8080 ring |
你也可以用jconsole,端口8080/9080 来查看更细节的信息。如下图
Now, everything is set. enjoy you exploring.
No comments:
Post a Comment