我应该在 cassandra.yaml 中为 broadcast_rpc_address 使用啥地址
Posted
技术标签:
【中文标题】我应该在 cassandra.yaml 中为 broadcast_rpc_address 使用啥地址【英文标题】:what address should i use for broadcast_rpc_address in cassandra.yaml我应该在 cassandra.yaml 中为 broadcast_rpc_address 使用什么地址 【发布时间】:2018-05-11 01:23:57 【问题描述】: cluster_name: 'Cassandra Cluster'
num_tokens: 256
hinted_handoff_enabled: true
max_hint_window_in_ms: 10800000
hinted_handoff_throttle_in_kb: 1024
max_hints_delivery_threads: 2
authenticator: AllowAllAuthenticator
authorizer: AllowAllAuthorizer
permissions_validity_in_ms: 2000
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories:
- /var/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
disk_failure_policy: stop
key_cache_size_in_mb:
key_cache_save_period: 14400
row_cache_size_in_mb: 0
row_cache_save_period: 0
saved_caches_directory: /var/lib/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
parameters:
- seeds: "seednode-A-IP,seednode-B-IP,seednode-C-IP"
concurrent_reads: 32
concurrent_writes: 32
trickle_fsync: false
trickle_fsync_interval_in_kb: 10240
storage_port: 7000
ssl_storage_port: 7001
listen_address: 10.8.9.83
start_native_transport: true
native_transport_port: 9042
start_rpc: true
rpc_address: 0.0.0.0
broadcast_rpc_address: NAT-GATEWAY-IP
rpc_port: 9160
rpc_keepalive: true
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
compaction_throughput_mb_per_sec: 16
read_request_timeout_in_ms: 5000
range_request_timeout_in_ms: 10000
write_request_timeout_in_ms: 2000
cas_contention_timeout_in_ms: 1000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 10000
cross_node_timeout: false
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: none
keystore: conf/.keystore
keystore_password: cassandra
truststore: conf/.truststore
truststore_password: cassandra
client_encryption_options:
enabled: false
keystore: conf/.keystore
keystore_password: cassandra
internode_compression: all
inter_dc_tcp_nodelay: false
我们在 AWS 上部署了 Cassandra 集群,在 Auto Scaling 组中有 3 个种子节点(附加静态 ENI)和 3 个非种子节点。
我将 rpc_address 设置为 0.0.0.0,谁能告诉我 cassandra.yaml 文件中的 broadcast_rpc_address 应该是什么?
我之前使用的是 cassandra 2.0.7 版本,并且能够很好地连接到集群,只需将 rpc_address 设置为 0.0.0.0 并且没有设置 broadcast_rpc_address ,但是当我升级到 3.11.1 时它给了我错误
CassandraDaemon.java:708 - Exception encountered during startup: If rpc_address is set to a wildcard address (0.0.0.0), then you must set broadcast_rpc_address to a value other than 0.0.0.0
【问题讨论】:
Cassandra 能否在出现该错误的情况下启动? 【参考方案1】:如果您使用的是 Cassandra 2.1 或更高版本,您可以配置 broadcast_rpc_address。你可以配置broadcast_rpc_address为公网IP。
Cassandra 将“broadcast_address/listen_address”用于节点间连接,将“broadcast_rpc_address/rpc_address”用于 rpc 接口(客户端 -> 协调器(Cassandra 节点)请求)。
【讨论】:
我们拥有私有子网中的所有节点,我使用 NAT 网关 ip(公共 IP)作为广播 rpc_address,我仍然无法连接到 cassandra 集群,但我能够连接到本地节点本身,知道什么是问题吗? 当我执行 cqlsh以上是关于我应该在 cassandra.yaml 中为 broadcast_rpc_address 使用啥地址的主要内容,如果未能解决你的问题,请参考以下文章
在Cassandra中加载cassandra.yaml之外的其他配置文件
如果在 cassandra.yaml 中启用了 auto_snapshot,那么这些快照啥时候会被删除