I frequently test with multi-node vagrant-based clusters locally. The following chef attributes should give you an idea of what to turn down in cassandra.yaml and cassandra-env.sh to build a decent testing cluster:
:cassandra => {'cluster_name' => 'VerifyCluster', 'package_name' => 'dsc20', 'version' => '2.0.11', 'release' => '1', 'setup_jna' => false, 'max_heap_size' => '512M', 'heap_new_size' => '100M', 'initial_token' => server['initial_token'], 'seeds' => "192.168.33.10", 'listen_address' => server['ip'], 'broadcast_address' => server['ip'], 'rpc_address' => server['ip'], 'conconcurrent_reads' => "2", 'concurrent_writes' => "2", 'memtable_flush_queue_size' => "2", 'compaction_throughput_mb_per_sec' => "8", 'key_cache_size_in_mb' => "4", 'key_cache_save_period' => "0", 'native_transport_min_threads' => "2", 'native_transport_max_threads' => "4", 'notify_restart' => true, 'reporter' => { 'riemann' => { 'enable' => true, 'host' => '192.168.33.51' }, 'graphite' => { 'enable' => true, 'host' => '192.168.33.51' } } }, The most important things to note: - don't include JNA (it needs to lock pages larger than what will be available) - turn down threadpools for transports - turn compaction throughput way down - make concurrent reads and writes very small I have used the above run a healthy 5 node clusters locally in it's own private network with a 6th monitoring server for light to moderate local testing in 16g of laptop ram. YMMV but it is possible.