设为首页 加入收藏

TOP

Akka-CQRS(2)- 安装部署cassandra cluster,ubuntu-16.04.1-LTS and MacOS mojave(一)
2019-08-15 00:11:07 】 浏览:128
Tags:Akka-CQRS 安装 部署 cassandra cluster ubuntu-16.04.1-LTS and MacOS mojave

 对于akka-cluster这样的分布式软件系统来说,选择配套的数据库类型也是比较讲究的,最好也是分布式的,如cassandra,能保证良好的HA特性。前面的例子里示范akka-persistence时已经使用了cassandra作为journal和snapshot-store。一直以来基本上都在一部macbookpro上开发、测试akka-cluster相关软件。这次在腾讯云上租了两台8G,50G的服务器,安装了ubuntu 16.04.1 LTS操作系统,想着可以在一个真正的环境下试试cassandra cluster的安装部署和实际使用。先是试着在ubuntu上安装部署:

在ubuntu上安装cassandra,跟着下面的步骤做:

echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
 sudo apt-get update sudo apt-get install cassandra

cassandra 安装过程新增了一个默认的cassandra组和用户,需要把我的username加到cassandra组里:

 

sudo usermod -a -G cassandra myuser

 

我安装的是cassandra v3.11.3版本,所以用了debian 311x main来注明。安装完毕后可以用status看看cassandra是不是已经启动,start,stop cassandra可以用下面的命令:

sudo service cassandra status    //检查运行状态
 sudo service cassandra start //启动cassandra
 sudo service cassandra stop //停止cassandra

现在我们可以用 sudo service cassandra start  启动cassandra

然后开启cqlsh, 输入:

use system;    

describe table local

注意显示的system.local表列名:

CREATE TABLE system.local ( key text PRIMARY KEY, bootstrapped text, broadcast_address inet, cluster_name text, cql_version text, data_center text, gossip_generation int, host_id uuid, listen_address inet, native_protocol_version text, partitioner text, rack text, release_version text, rpc_address inet, schema_version uuid, thrift_version text, tokens set<text>, truncated_at map<uuid, blob> ...

列名里包括了配置文件cassandra.yaml中的许多配置如cluster_name,listen_address,rpc_address等。在安装cassandra时已经存放了cassandra.yaml的初始值。所以必须记住如果修改cassandra.yaml里涉及这些配置后必须把所有system表删掉让cassandra自己根据新的.yaml文件配置重新创建这些system表。

我尝试建一个两个节点node的cluster:

配置cluster:

server1   172.27.0.8 server2 172.27.0.7

用server1做seednode。配置cluster需要修改cassandra.yaml文件,具体路径如下:

sudo nano /etc/cassandra/cassandra.yaml

需要修改文件里的配置参数:

cluster_name  : 统一集群名称
seed_provider : seed节点地址清单(以,号分割) 
listen_address : 集群节点之间使用gossip协议通讯地址
rpc_address : 客户端连接地址
endpoint_snitch : 节点所属数据中心、机架

在修改cassandra.yaml文件之前先停了cassandra: sudo service cassandra stop

下面是server1的设置:

cluster_name: 'TestPOS Cluster' listen_address: 172.27.0.8 rpc_address: 172.27.0.8
- seeds: 172.27.0.8 endpoint_snitch: SimpleSnitch

切记!!!修改完毕在启动cassandra之前必须首先删除cassandra的系统数据表system*:

sudo rm -rf /var/lib/cassandra/data/system/*

然后启动cassandra:  sudo service cassandra start

好了,现在可以用nodetool命令来检查这个节点的启动状态:sudo nodetool status

结果显示server1已经成功启动了。

下面开始配置server2:

在修改cassandra.yaml文件之前先停了cassandra: sudo service cassandra stop

cluster_name: 'TestPOS Cluster' listen_address: 172.27.0.7 rpc_address: 172.27.0.7
- seeds: 172.27.0.8 endpoint_snitch: SimpleSnitch

删除cassandra的系统数据表system*:

sudo rm -rf /var/lib/cassandra/data/system/*

然后启动:  sudo service cassandra start

现在可以用nodetool命令来检查这个集群中所有节点的启动状态:sudo nodetool status

很遗憾,只能看到server2一个节点。

这种现象说明server1,server2之间没有沟通。它们应该是通过各自的7000端口交流的,估计是租赁的虚拟服务器没有开启这个端口。在server1上用 nc -vc 172.27.0.7 7000  得到证实。尝试用iptables, ufw等防火墙指令都无法解决问题,看来要留给网络管理部门了。

做了些调研,下面是cassandra需要使用的端口说明:

7199 JMX monitoring port 1024 - 65355 Random port required by JMX. Starting with Java 7u4 a specific port can be specified using
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spark笔记(一):错误总结 下一篇Scala_方法和函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目