I am looking for a set of instructions to create a local multi-node Cassandra 2.x cluster on a Window 7 64 bit PC.
It should preferably use CCM “Cassandra Cluster Manager” and allow management using DataStax OpsCenter
I followed the instructions in “Getting Started with Apache Cassandra on Windows the Easy Way” but they are for a single node cluster.
EDIT: I got stuck on deploying OpsCenter agents on each node using CCM, any ideas?
Articles used for this tutorial:
- CCM 2.0 and Windows
- Cassandra Wiki - Windows Development
- Setting up a multi-node Cassandra cluster on a single Windows
machine
See also:
- Getting Started with Apache Cassandra on Windows the Easy Way
- Cassandra DevCenter (free registration required)
Prerequisites:
The following tools are assumed to be already installed:
- JDK 7 or older
- ANT build tool
Step 1: Install Python
Download and install latest version of Python 2.x from here
e.g. https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi
Note: This will also install “pip” tool
The following directories need to be added to the PATH
<PYTHON_INSTALL_DIR>\Python
<PYTHON_INSTALL_DIR>\Python\Scripts
<ANT_INSTALL_DIR>\bin
Step 2: Install CCM “Cassandra Cluster Manager”
In a new Command Prompt/Powershell window (login as yourself)
type “pip install ccm” – which will automatically download and install ccm
> pip install ccm
Collecting ccm
Downloading ccm-2.0.6.tar.gz (56kB)
100% |################################| 57kB 1.8MB/s
Collecting pyYaml (from ccm)
Downloading PyYAML-3.11.tar.gz (248kB)
100% |################################| 249kB 1.7MB/s
Collecting six>=1.4.1 (from ccm)
Downloading six-1.10.0-py2.py3-none-any.whl
Installing collected packages: pyYaml, six, ccm
Running setup.py install for pyYaml
Running setup.py install for ccm
Successfully installed ccm-2.0.6 pyYaml-3.11 six-1.10.0
Step 3: Install “psutil (python system and process utilities)”
In the same window as for Step 2:
type “pip install psutil” – – which will automatically download and install psutil
> pip install psutil
Collecting psutil
Downloading psutil-3.3.0-cp27-none-win_amd64.whl (92kB)
100% |################################| 94kB 1.4MB/s
Installing collected packages: psutil
Successfully installed psutil-3.3.0
Note: This window can now be closed
Step 4: Set-ExecutionPolicy Unrestricted
In a new Powershell window (login as local admin), type “Set-ExecutionPolicy Unrestricted”
*Note: You must set the execution policy of Windows Powershell to allow CCM to launch instances of Cassandra. An unrestricted execution policy will also allow CCM to run on the regular command prompt (cmd) as well as Windows Powershell
PS C:\Windows\system32> Set-ExecutionPolicy Unrestricted
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic. Do you want to change the execution
policy?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
Step 5: Register PY extension
Note: Add .PY extension to environment variable $PATHEXT, to allow ccm to be executed from any location (run on PowerShell as administrator):
In the same window as for Step 4 type
[Environment]::SetEnvironmentVariable("PATHEXT", "$env:PATHEXT;.PY", "MACHINE")
Note: This window can now be closed
Step 6: Check if CCM is up and running
In a new Command Prompt window (login as yourself) type:
>ccm status
No currently active cluster (use ccm cluster switch)
Step 7: Update hosts file
Open Notepad as Administrator and the following lines to the C:\Windows\System32\drivers\etc\hosts file:
#cassandra nodes
127.0.0.1 127.0.0.2
127.0.0.1 127.0.0.3
127.0.0.1 127.0.0.4
127.0.0.1 127.0.0.5
127.0.0.1 127.0.0.6
Step 8: Create and populate a 3 node cluster using Cassandra v2.1.2
Note: This will download version 2.1.2 of Cassandra, build it and then use it to create a new CCM cluster called “mytestcluster”.
- Cassandra installation path %USERPROFILE%.ccm\repository\2.1.2
- “test” cluster path %USERPROFILE%.ccm\test
C:\Users\myusername>ccm create mytestcluster -v 2.1.2
Downloading http://archive.apache.org/dist/cassandra/2.1.2/apache-cassandra-2.1.2-bin.tar.gz to c:\users\myusername\appdata\local\temp\ccm-qwauvs.tar.gz (21.735MB)
22790390 [100.00%]
Extracting c:\users\myusername\appdata\local\temp\ccm-qwauvs.tar.gz as version 2.1.2 ...
Current cluster is now: mytestcluster
C:\Users\myusername>ccm status
Cluster: 'mytestcluster'
------------------------
No node in this cluster yet
C:\Users\myusername>ccm populate -n 3
C:\Users\myusername>ccm status
Cluster: 'mytestcluster'
------------------------
node1: DOWN (Not initialized)
node3: DOWN (Not initialized)
node2: DOWN (Not initialized)
C:\Users\myusername>ccm start
Started: node1 with pid: 17432
Started: node3 with pid: 6308
Started: node2 with pid: 22484
C:\Users\myusername>ccm status
Cluster: 'mytestcluster'
------------------------
node1: UP
node3: UP
node2: UP
C:\Users\myusername>ccm jconsole
C:\Users\myusername>ccm node1 show
node1: UP
cluster=mytestcluster
auto_bootstrap=False
thrift=('127.0.0.1', 9160)
binary=('127.0.0.1', 9042)
storage=('127.0.0.1', 7000)
jmx_port=7100
remote_debug_port=0
initial_token=-9223372036854775808
pid=17432
C:\Users\myusername>ccm node2 show
node2: UP
cluster=mytestcluster
auto_bootstrap=False
thrift=('127.0.0.2', 9160)
binary=('127.0.0.2', 9042)
storage=('127.0.0.2', 7000)
jmx_port=7200
remote_debug_port=0
initial_token=-3074457345618258603
pid=22484
C:\Users\myusername>ccm node3 show
node3: UP
cluster=mytestcluster
auto_bootstrap=False
thrift=('127.0.0.3', 9160)
binary=('127.0.0.3', 9042)
storage=('127.0.0.3', 7000)
jmx_port=7300
remote_debug_port=0
initial_token=3074457345618258602
pid=6308