Cassandra群集管理器

ccm的Python项目详细描述


ccm(cassandra cluster manager)的目标是使在本地主机上创建、启动和删除apache cassandra集群的脚本/库变得容易创建、管理和销毁小型cassandra cl乌斯特在一个本地盒子上。它是用来测试Cassandra集群的。



需求
----


-一个正在运行的python安装(测试为与python 2.7一起运行)。
-pyyaml(http://pyyaml.org/--`sudo easy廑u install pyyaml`)
-six(https://pypi.python.org/pypi/six--`sudo easy廑u install six`)< BR/> -Ant(http://ANT.ApACH.OG/Mac OS X,‘BREW安装ANT’)
-PSUTIL(http://pypy.python .org/pyPI/pSUTIL)
-Java(哪个版本取决于您打算使用的卡桑德拉版本)。如果
不确定,使用Java 7,因为它已知与CasDANRA的当前版本一起工作。
-如果要创建多个节点群集,最简单的方法是使用
多个回环别名。在现代Linux发行版上,您可能不需要做任何事情,但是在Mac OS X上,您需要创建别名,其中


sudo ifconfig lo0 alias 127.0.0.2 up
sudo ifconfig lo0 alias 127.0.0.3 up



至少有127.0.0.1、127.0.0.2和
127.0.0.3可用。


必须为ine配置ssh服务器和工作的
ccm。当使用多个节点时,每个公开的IP地址必须按顺序
。例如,ipv4地址的第4个八位字节中的最后一个数字必须以"1"开头(例如192.168.33.11)。有关远程
ccm计算机配置的帮助,请参阅
[vagrantfile](misc/vagrantfile)。



ompt
-非基于nodetool的命令行选项失败(sstablesplit、scrub等)
-要安装psutil,必须使用pypi中的.msi。pip install psutil将无法工作
-您将需要ant.bat才能从源代码构建c*
-如果使用Cassandra 2.1.0+
-CCM找不到通过[巧克力](https://chococoley.org/)安装的Ant,则必须使用不受限制的powershell执行策略运行,因此y必须创建符号链接才能解决此问题(以管理员身份):
-cmd/c mklink c:\programdata\chocoley\bin\ant.bat c:\programdata\chocoley\bin\ant.exe

/>预期;由于配置目录和安装目录包含大量文件,因此不会将它们复制到远程计算机
与群集和节点操作的大多数其他选项一样
-使用远程执行从ccm启动的cqlsh不会启动
正确(例如'ccm--ssh host 192.168.33.11 node1 cqlsh`);但是
`-x<;cmds>;`或'--exec=cmds`仍然可以用于在远程节点上执行cqlsh命令


/>sudo./setup.py install

ccm可在[python包索引][pip]上找到:



还有一个[homebrew包][brew]可用:


[pip]:https://pypi.python.org/pypi/ccm
[brew]:https://github.com/homebreew/homebrew/blob/master/library/formula/ccm.rb


用法
----

光泽。

ccm create test-v 2.0.5-n 3-s



有两种方法可以告诉ccm如何找到源:
1。如果您下载了*和*编译的cassandra源代码,您可以通过以下方式请求ccm使用这些代码:



估计

2.你可以要求ccm使用cassandra的发布版本。例如,要使用cassandra 2.0.5,运行ccm create test-v 2.0.5


ccm将下载二进制文件(从http://archive.apache.org/dist/cassandra),
,并将新集群设置为使用它。这意味着第一次为给定版本创建集群时,此命令可能需要几分钟时间。ccm将编译后的
源文件保存在`~/.ccm/repository/`,因此,在第二次运行
版本时,为该版本创建群集的速度会快得多(但是,请注意,如果使用不同的
版本创建许多群集,这将占用磁盘空间)。创建集群时,您可以用以下命令填充3个节点:

ccm populate-n 3


对于mac osx,为第一个节点之外的每个节点创建一个新接口,例如,如果用3个节点填充集群,则为127.0.0.2和127.0.0.3创建接口,如下所示:

sudo ifconfig lo0 alias 127.0.0.2
sudo ifconfig lo0 alias 127.0.0.3

请注意,这些别名将在重新启动时消失。有关Mac OSX上的永久网络别名,请参阅![网络别名](./network_aliases.md)。

er是用



>正确设置的,然后可以用



(populate只是最初添加多个节点的快捷方式)

ccm提供了许多便利,例如刷新所有
群集的节点:



或只有一个节点:



您还可以使用以下命令轻松查看给定节点的日志文件:

ccm node1 showlog

/>删除所有数据)使用

ccm remove

>可以通过


>获取其他提供的命令列表,然后通过"-h"(或"-help"标志记录每个命令。for
instance`ccm add-h`描述了"ccm add"的选项。


\e执行ccm命令前的计算机:

|string用于用户名/密码或公钥身份验证的用户名
--ssh password string用于使用公钥身份验证的用户名/密码或私钥密码短语的密码
--ssh私钥filename用于ssh连接的私钥

####特殊处理

某些命令要求文件位于远程服务器上。这些命令是预处理的文件传输启动,并更新ccm命令的远程执行的
参数值:


到远程服务器
`--ssl `


35 35 35 35













ccm短版本

ccm-ccm-ssh=ssh-ssh-ssh-host=192.168.33.33.11-ssh-ssh是的x在创建过程中,为了确保
节点使用其节点的正确IP地址进行通信

refix cassandra version with`source:`,例如:

```
ccm create test-v source:2.0.5-n 3-s
````

\如果git无法访问apache镜像,则从git获取信息。

\git和github

使用[canonical apache git repository]的最新版本(https://git-wip-us.apache.org/repos/asf?p=cassandra.git),使用版本名"git:branch name",例如:

`````
ccm create trunk-v git:trunk-n 5
````

:jbellis/trunk-n 1
```

此外,由于集群或节点名称过长,命令行可能会很长。

利用bash的*可编程完成*功能,使ccm使用起来更加方便。将"misc/ccm completion.bash"复制到主目录中的某个位置(如果希望让系统的所有用户都可以访问,则可以使用/etc),并将其源代码保存在"bash配置文件"中:
``
。~/scripts/ccm completion.bash
``

>设置完成后,"ccm sw<;tab>;"将展开为"ccm switch"。"switch"子命令有额外的完成逻辑来帮助完成集群名称。因此,如果cluster-58是名称以"cl"开头的唯一集群,则"ccm switch cl<;tab>;"将扩展到"ccm switch cluster-58"。如果有歧义,再次按`<;tab>;`将显示匹配的选项:
```
$ccm switch cl<;tab>;
…变成…
$ccm交换机群集-
…然后按tab键两次…
cluster-56 cluster-85 cluster-96
$ccm switch cluster-8<;tab>;
…变成…
$ccm switch cluster-85
```


它根据调用的ccm动态确定可用的子命令。因此,运行多个ccm(或使用新命令不断更新的ccm)的用户将自动工作。


完成脚本依赖于具有两个隐藏子命令的ccm:
*show cluster cmds-发出群集子命令的名称。
*show node cmds-发出e节点子命令的名称。

因此,它将无法与足够旧的ccm版本一起工作。


te命令:

ccm populate-d-n 3

您也可以指定一个远程端口h添加节点时的"-r"(或"--远程调试端口")标志



h每个命令。

----

选项必须与"ccm create"命令一起使用。请参阅"ccm create-h"帮助以获取帮助。

ccm lib
----

ccm设施通过ccmlib以编程方式提供。这可以用来对卡桑德拉进行自动化测试。如何使用ccmlib的简单示例如下:


import ccmlib.cluster

cluster路径="."
cluster=ccmlib.cluster.cluster(cluster路径,"test",cassandra廑version='2.1.14')
cluster.populate(3).start()
[node1,node2,node3]=cluster.nodelist()

要通过thrift连接到节点,
可以通过
node.network\u interfaces['thrift']

node2.compact()

但是保留数据(在cluster路径/测试中),或者使用cluster.remove()删除所有内容

--
sylvain lebresne<;sylvain@datasax.com>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将jaxb插件扩展与gradlejaxbplugin一起使用   java Hibernate列表<Object[]>到特定对象   java使用多态性显示arraylist的输出   java水平堆叠卡,带有一定偏移量   java错误:找不到符号方法liesInt()   java客户机/服务器文件收发中的多线程流管理   在java中可以基于访问重载方法吗?   包含空元素的java排序数组   swing Java按钮/网格布局   java BottomNavigationView getmaxitemcount   java空指针异常字符串生成器   java Xamarin升级导致“类文件版本错误52.0,应为50.0”错误   java我正在尝试打印它,而不只是对每一行进行println   Tomcat7中的java是否需要复制上下文。将xml转换为conf/Catalina/locahost以使其生效   带有注入服务的java REST端点在何处引发自定义WebServiceException?   在Java中使用GPS数据   java如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?   内置Eclipse期间的Java 8堆栈溢出   java在GWT编译的JavaScript中如何表示BigDecimal