我安装了使用EC2Snitch的Datastax AMI。配置是
listen_address :私人IP
broadcast_address :与收听地址相同
rpc_address :0.0.0.0
broadcast_rpc :私人IP
种子:私人IP
我有2个这样的实例,但我无法实现一致性。赋予生命:1虽然两个实例都在运行。我希望从任何客户端实现一致性
我试过这个:
broadcast_rpc:public_ip //同样的错误
rpc_addess:public ip // cassandra不会启动。会抱怨127.0.0.1:9042没有运行
什么是正确的配置?
节点位于同一区域,同一机架。
nodetool同时提供up和running。
system.peers在peer和roc_address中给出private-ip,在prefered-ip中给出null。
Cassandra.yaml
cluster_name:' logcluster'
num_tokens:256
hinted_handoff_enabled:是的
max_hint_window_in_ms:10800000#3小时
hinted_handoff_throttle_in_kb:1024
max_hints_delivery_threads:2
batchlog_replay_throttle_in_kb:1024
验证者:AllowAllAuthenticator
授权人:AllowAllAuthorizer
permissions_validity_in_ms:2000
partitioner:org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories:
- / mnt / cassandra / data
commitlog_directory:/ mnt / cassandra / commitlog
disk_failure_policy:停止
commit_failure_policy:停止
key_cache_save_period:14400
row_cache_size_in_mb:0
row_cache_save_period:0
counter_cache_size_in_mb:
counter_cache_save_period:7200
saved_caches_directory:/ mnt / cassandra / saved_caches
commitlog_sync:periodic
commitlog_sync_period_in_ms:10000
commitlog_segment_size_in_mb:32
seed_provider:
- class_name:org.apache.cassandra.locator.SimpleSeedProvider
参数:
- 种子:" 10.xxx.xx.xx7"
concurrent_reads:32
concurrent_writes:32
concurrent_counter_writes:32
memtable_allocation_type:heap_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_minutes:60
trickle_fsync:false
trickle_fsync_interval_in_kb:10240
storage_port:7000
ssl_storage_port:7001
listen_address:10.xxx.xx.xx5
start_native_transport:true
native_transport_port:9042
start_rpc:true
rpc_address:0.0.0.0
rpc_port:9160
broadcast_rpc_address:10.xxx.xx.xx5
rpc_keepalive:真实的
rpc_server_type:sync
thrift_framed_transport_size_in_mb:15
incremental_backups:false
snapshot_before_compaction:false
auto_snapshot:true
tombstone_warn_threshold:1000
tombstone_failure_threshold:100000
column_index_size_in_kb:64
batch_size_warn_threshold_in_kb:5
compaction_throughput_mb_per_sec:16
sstable_preemptive_open_interval_in_mb:50
read_request_timeout_in_ms:5000
range_request_timeout_in_ms:10000
write_request_timeout_in_ms:2000
counter_write_request_timeout_in_ms:5000
cas_contention_timeout_in_ms:1000
truncate_request_timeout_in_ms:60000
request_timeout_in_ms:10000
cross_node_timeout:false
phi_convict_threshold:12
endpoint_snitch:Ec2Snitch
dynamic_snitch_update_interval_in_ms:100
dynamic_snitch_reset_interval_in_ms:600000
dynamic_snitch_badness_threshold:0.1
request_scheduler:org.apache.cassandra.scheduler.NoScheduler
server_encryption_options:
internode_encryption:无
keystore:conf / .keystore
keystore_password:cassandra
truststore:conf / .truststore
truststore_password:cassandra
client_encryption_options:
启用:false
keystore:conf / .keystore
keystore_password:cassandra
internode_compression:全部
inter_dc_tcp_nodelay:false
auto_bootstrap:false
数据中心:us-east
===================
状态=向上/向下
| / State =正常/离开/加入/移动
- 地址加载令牌拥有(有效)主机ID机架
UN 10.xxx.xx.xx7 98.21 MB 256 53.9%d5xxxx-0a59-xxxx-xxx-ab59xxxxx 1d
UN 10.xxx.xx.xx5 50.26 MB 256 46.1%1xxxxff-xxx-xxx-xxx-13edxxxxxcf 1d
答案 0 :(得分:0)
Amazon节点将在ifconfig中显示私有10.x.y.z ip,节点本身不知道公共IP,而是通过NAT(网络地址转换)标记这些地址。
所以节点应该在10.x.y.z网络上闲聊,正如您从nodetool输出中看到的那样。
最好的方法是检查在尝试以所需的一致性级别读/写时在cqlsh中看到的错误,这可以让您更好地处理该问题。还要检查密钥空间上的复制因子,例如:
CREATE KEYSPACE spam WITH replication = {
'class': 'SimpleStrategy',
'replication_factor': '2'
};
在上面的示例中,复制因子为2.如果您有两个节点并且读取的一致性级别为1,那么您可能无法获得正确的结果。作为一般经验法则,建议始终以比您所读的更高的一致性级别写入。要在cqlsh中设置一致性,请使用以下语法:
cqlsh> CONSISTENCY ONE;
Consistency level set to ONE.
希望这有帮助