oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

cassandra1.2系defaultのcassandra.yamlを1.1系とちょっと比較した

タイトルそのまま。今1.1系使っていて1.2.5へのアップデートを検討していて、configが結構変わっているらしいので、それらを調べてみた。
基本は今使っているとdiff取って名前変わっている奴や追加されている奴だけ記載。「>」ってついている奴は1.1系の時の奴。
http://www.datastax.com/docs/1.2/configuration/node_configuration
上記内容をGoogle翻訳して適当に見ただけなので、あんまり信用しない方が良いかも。あと、yamlに明示的に書いていないけど追加されている項目で1.2系からdefault 有効になっている奴もあるような気がするけど、そこはカバーしていないので調べて下さい><

hinted_handoff_throttle_in_kb: 1024

hinted handoffの転送速度

max_hints_delivery_threads: 2

hinted handoffに使うスレッド。iDCまたぎは増やせって

authorizer: org.apache.cassandra.auth.AllowAllAuthorizer

認証処理の種類 allで許可かな

permissions_validity_in_ms: 2000

認証処理のキャッシュ期間

partitioner: org.apache.cassandra.dht.Murmur3Partitioner

> authority: org.apache.cassandra.auth.AllowAllAuthority
> partitioner: org.apache.cassandra.dht.RandomPartitioner
RandomPartitionerと違う奴。新しいクラスタだったら使えるけど既存クラスタからの変更はダメだって。1.1->1.2だったらちゃんとRandomPartitioner使いなさいと。
hash関数変わっているからハッシュのレンジも変わっているっぽい。
http://www.datastax.com/docs/1.2/cluster_architecture/partitioners

authorizer: org.apache.cassandra.auth.AllowAllAuthorizer
プロパティ名が微妙に変わっているのとデフォルト
org.apache.cassandra.dht.Murmur3Partitioner
に変更されているので注意

disk_failure_policy: stop

ディスク障害の時にどうするか。stopはcassandra停止 best_effortはとにかく頑張るらしい。でも危ないね。ignoreはアップグレードに使うらしい。可能な限りエラー無視してガシガシ行くらしいけど良いの?それ?普段はstopかbest effort使えって。

key_cache_size_in_mb:

デフォルトはヒープの5%か100MBの小さい方。無効は「0」にする

key_cache_save_period: 14400

key cacheの生存期間。秒単位。saved_caches_directoryに保存される。保存されていればcold startの速度早いしIOに影響与えない。

row_cache_size_in_mb: 0

row cache 基本無効でおk

row_cache_save_period: 0

同じく無効でおk

row_cache_provider: SerializingCacheProvider

row cacheの種類。一度シリアライズするから空間効率が良いらしいけど使わないので良い。

commitlog_segment_size_in_mb: 32

個々のcommit logのファイルセグメントサイズ。細かい粒度にしたい時は8~16とかにすればって書いている。

trickle_fsync: false

SSDの時にオヌヌメらしい。シーケンシャルwriteの時にダーティーバッファをフラッシュする為強制fsyncする。読み取り待ちの時にダーティーバッファを避けるために意図しない時にfsyncされる事を防ぐためらしい。HDDでは逆に推奨しないと。

trickle_fsync_interval_in_kb: 10240

上記の設定の間隔 10MBバッファが溜まったらfsyncって事か

listen_address: localhost
start_native_transport: false

native transport使うかどうかって。でも今のところbetaらしい。defaultはthriftなのでOFFでおk。CQL使う時は必要なのかも。

native_transport_port: 9042
start_rpc: true

thrift使うかどうか。使う。

rpc_address: localhost
auto_snapshot: true

snapshot取る時にトランザクションのチェックとかdropしている処理とかその辺調べてからやってくれるらしい。強く推奨するとの事。なんか勝手にsnapshot取ってくれるみたいな名前はどうなの。

read_request_timeout_in_ms: 10000

read処理要求して完了するまで待機する時間

range_request_timeout_in_ms: 10000

インデックススキャン処理要求して(ry

write_request_timeout_in_ms: 10000

書き込み処理要求して(ry

truncate_request_timeout_in_ms: 60000

truncate処理(ry

request_timeout_in_ms: 10000

上記以外の処理の(ry

cross_node_timeout: false

node間のtimeout情報の交換を有効にするか。無効にすると要求が瞬時にレプリカに行ったと判定されるとの事。NWレイテンシとかを考慮しないという意味かな。有効にすると受け取ったよーとかの判定をしてからタイムアウト判定するので長くなる感じすな。

endpoint_snitch: SimpleSnitch

iDC、ラック情報無しで考慮しない時に使うやつね。
> rpc_timeout_in_ms: 10000
> endpoint_snitch: org.apache.cassandra.locator.SimpleSnitch

endpoint_snitchが若干変わっているので注意

phi_convict_threshold

> phi_convict_threshold: 12
defaultは8で項目はあるけど、configに記載が無くなったか。node間の故障検知感度でノード数が多い時はdefaultよりアゲアゲで。

server_encryption_options:

> encryption_options:
ノード間の暗号化設定。

項目名若干変わっている

client_encryption_options:

クライアントからの暗号接続有効化設定。とりあえずいらない。

enabled: false
keystore: conf/.keystore
keystore_password: cassandra
internode_compression: all

ノード間のトラフィック圧縮するかどうか。iDC間だけか全部か全くしないか。

inter_dc_tcp_nodelay: true

iDC間通信用tcp_delayの設定。