基本上我正在尝试运行一个简单的双节点虚拟cassandra集群来进行实验。我正在尝试设置它,所以我需要做的就是运行vagrant up
并运行cassandra。
我已经设法让实际的集群工作(我知道这是因为在一个节点中我创建了一个键空间和表,并在其中插入了一个值,我可以从另一个节点访问)但我似乎无法让nodetool工作。
当我跑步时
nodetool -h 192.168.10.11 -p 7000 status
我收到错误
nodetool: Failed to connect to '192.168.10.11:7000' - SocketException: 'Connection reset'.
我改变端口的原因是为了避免端口冲突。 (所以我将一个节点的jmx_port更改为7000,另一个节点更改为7001,我还更改了rpc_port和native_transport_port,以便每个节点都使用一个唯一的端口)
答案 0 :(得分:0)
好的,我想出了我需要解决的问题才能让nodetool工作。
首先,您根本不需要修改jmx端口设置。您也不需要将其作为forwarded_port公开。
现在关于如何实际运作:
在cassandra-env.sh中有一行注释掉:
#JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<hostname>
取消注释此行,并将要连接nodetool的节点的主机名或IP或要连接的节点放入。就这么简单。
答案 1 :(得分:0)
对于那些仍然有问题让Cassandra使用Ubuntu在vagrant上运行的人,我想分享我的shell脚本安装Java8和Cassandra。也许有帮助:
# Update Packages
sudo apt-get update
# sudo apt-get upgrade -y
# Install necassary software
sudo apt-get install software-properties-common python-software-properties debconf-utils curl --assume-yes
# Installing the Oracle Java Virtual Machine
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections
echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections
sudo apt-get install oracle-java8-set-default -y
# Installing Cassandra
curl -L http://debian.datastax.com/debian/repo_key | sudo apt-key add -
echo "deb http://debian.datastax.com/community stable main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
sudo apt-get update
sudo apt-get install dsc22=2.2.7-1 cassandra=2.2.7 -y
sudo apt-get install cassandra-tools=2.2.7 -y
sudo chmod 750 /var/run/cassandra
# Configure hostname or ip for nodetool
sudo sed -i 's@# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>"@JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"@' /etc/cassandra/cassandra-env.sh
sleep 10
# Status Cassandra And Oracle Java Version
java -version
sudo service cassandra status
sudo nodetool status