我的Ubuntu服务器上运行的Cassandra服务现在只有一个节点。我想把它变成一个有3个节点的环形集群,让人感觉多节点集群都在同一台服务器上。按照此链接https://www.youtube.com/watch?v=oHMJrhMtv3c中的步骤,我尝试创建一个新的群集,而不停止已经运行的cassandra服务。但它抛出了地址引起的:java.net.BindException:地址已经在使用中。所以我尝试将种子ip更改为已经运行的cassandra ip地址,并尝试在前台运行第二个cassandra服务。这次它抛出了java.lang.RuntimeException:无法创建到ip端口的thrift socket。请告诉我如何将节点添加到同一服务器上已运行的单节点群集。
答案 0 :(得分:5)
在同一台Ubuntu计算机上运行多个Cassandra实例非常容易,只要它们具有不同的IP地址,这些IP地址都可以解析为本地主机。整个127.0.0.0/8地址块保留用于环回,因此发送到地址(127.0.0.1到127.255.255.254)的任何数据包都将被环回。
ping
检查地址是否正确解析。修改cassandra.yaml
并替换
localhost
到我们为该实例提供的IP地址(如127.0.0.2)。SimpleSeedProvider
并将所有其他Cassandra实例的地址放入种子列表以构建群集(如- seeds: "127.0.0.2","127.0.0.3"
编辑cassandra-env.sh
,找到JMX_PORT
属性的设置位置,并为每个Cassandra实例赋予不同的值(不同的端口)。否则,由于此端口上的冲突,实例无法一起运行。
./cassandra
启动脚本逐个启动实例(稍后可以为此编写简单的bash脚本)。验证具有./nodetool
状态的拓扑。例如,对于两个节点,输出必须类似于
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 61.97 KB 256 100.0% 6c04e202-8f24-4f17-b430-0154c1512316 rack1
UN 127.0.0.2 105.68 KB 256 100.0% ca3073ee-451c-4cef-97ee-d312784648bb rack1
答案 1 :(得分:4)
在一台计算机上设置多节点群集的最简单方法是使用CCM。目前,您遇到的问题是尝试全部绑定同一组端口。 CCM将为您解决此问题并自动增加端口等...
答案 2 :(得分:0)
试过这个,
Cassandra: 3.11.2
RHEL: 6.5
在 cassandra.yaml 中,为不同的实例保留以下不同的值:
- native_transport_port
- 数据目录
- 提交日志目录
- Saved_Cache目录
- listen_address
- broadcast_rpc_address(rpc_address设为0.0.0.0)
醇>
在listen_address和broadcast_rpc_address中使用环回地址。 在所有实例中保持存储端口相同(即7000)。
在cassandra-env.sh中,保持JMX_PORT不同 实例
答案 3 :(得分:0)
阐述h22提供的答案(我暂不予评论) 您将需要使用默认的jmx端口在localhost上运行node0。 它只是需要更改cassandra.yaml的其他节点 此外,如果您使用的是cassandra 3或更高版本(在Windows上?),则需要使用-a参数启动第二个cassandra节点以跳过端口检查。