如何设置cassandra集群
发布网友
发布时间:2022-04-10 04:43
我来回答
共2个回答
懂视网
时间:2022-04-10 09:04
kairosdb
(1)到/conf目录下,找到kairosdb.properties,修改datastore为cassandra
(2)设置cassandra的连接方式
(3) 设置用户名密码
4. 启动:到/bin目录下,直接跑./kairosdb.sh start,最后会看到 KairosDB service started 这样一句话,就OK了
172.16.101.25:8080 kairosdb客户端
cassandra
修改cassandra配置文件
conf/cassandra.yaml
启动
./bin/cassandra -R 用root用户启动
start.sh nohup sh cassandra -R > default.log
报错如下:
原因:GLIBC版本太低
升级GLIBC版本
按照http://stuart.blog.51cto.com/728677/1840205在172.16.110.25上按照改步骤升级GLIBC,可以,具体步骤如下:
一、安装glibc-2.14
1
2
3
4
5
6
7
8
9
10
|
[root@jrgc130 ~] # wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
[root@jrgc130 ~] # mv glibc-2.14.tar.gz /opt/software
[root@jrgc130 ~] # cd /opt/software
[root@jrgc130 software] # tar xf glibc-2.14.tar.gz
[root@jrgc130 software] # cd glibc-2.14
[root@jrgc130 glibc-2.14] # mkdir build
[root@jrgc130 glibc-2.14] # cd build
[root@jrgc130 build] # ../configure --prefix=/usr/local/glibc-2.14
[root@jrgc130 build] # make -j4
[root@jrgc130 build] # make install
|
二、拷贝链接库
1
2
|
[root@jrgc130 build] # cd /usr/local/glibc-2.14/lib
[root@jrgc130 lib] # cp libc-2.14.so /lib64/
|
三、创建链接
1
2
|
[root@jrgc130 lib] # cd /lib64
[root@jrgc130 lib64] # rm -rf libc.so.6
|
此后会报如下错误:
1
|
ls : error while loading shared libraries: libc.so.6: cannot open shared object file : No such file or directory
|
解决方法:
1
|
[root@example lib64] # /sbin/sln libc-2.14.so /lib64/libc.so.6
|
四、查看支持的版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@jrgc130 lib64] # strings /lib64/libc.so.6 |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_PRIVATE
|
通过ssh连接会报如下错误:
1
2
3
4
5
|
- bash : warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory
- bash : warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory
- bash : warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8): No such file or directory
- bash : warning: setlocale: LC_NUMERIC: cannot change locale (en_US.UTF-8): No such file or directory
- bash : warning: setlocale: LC_TIME: cannot change locale (en_US.UTF-8): No such file or directory
|
解决方法:
1
2
3
4
5
|
[root@example ~] # vim /etc/environment
LANG=en_US.utf-8
LC_ALL=
[root@example ~] # source /etc/environment
[root@example ~] # localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
|
集群化部署
cassandra中
vi cassandra.yaml
vi cassandra-topology.properties
vi cassandra-rackdc.properties
kairosdb中kairosdb.datastore.cassandra.host_list改成多ip形式
vi kairosdb.properties
Cassandra连接
./cqlsh -u cassandra -p cassandra 172.16.103.127
kairosdb+cassandra集群化安装
标签:sage tar directory hang example change start.s libc red
热心网友
时间:2022-04-10 06:12
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台机器,所以我挑选第一台作为种子节点,配置如下: seeds:
- 192.168.0.100
然后配置节点之前通信的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 各个节点以及集群管理
启动顺序没什么所谓,只要保证种子节点启动就可以了:$ bin/cassandra -f
参数 -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.