所有的配置都在cassandra的安裝目錄下面的conf裡,conf目錄下面有cassandra.yaml這個檔案,所有的配置都可以通過修改這個檔案而達到目的;
比較關鍵的幾個配置有:cluster name,partitioner,snitch,以及seed nodes的配置。如上圖,我們知道乙個cassandra的集群是由多個節點組成的,每乙個節點可以乙個物理機,虛擬機器,或者是乙個程序等等,由這些節點組成了cassandra的集群。那麼這個集群中的各個節點的cassandra.yaml裡的cluster name,partitoner,snitch都至少需要保持一致才可以,seed nodes 雖然不強制需要保持一致,但是建議最好是一致的,而且我們生產環境也是保持一致的。
配置項名字
配置項解釋
預設值建議值
cluster_name
集群的名字,在邏輯上隔離各個集群
test cluster
可以區別集群的唯一名稱
num_tokens
vnode的使用方式,集群中的這個配置節點將會被分配的token的數量,如果這個token數量越多,那麼這個節點將會儲存更多的資料,如果集群的各個節點的硬體配置一樣,那麼建議該配置token數量都一致。如果這個配置項沒有被配置的話,cassandra將會給這個節點分配預設的1個token,token的值由initial_token的配置確定。
256(預設配置)
256initial_token
非vnode使用方式,需要人工基於partitioner計算賦值,比如:如果是使用randompartitioner,那麼就需要計算md5值,4個節點的話,每個節點的md5 token值,建議均分0-2^128 -1 這個區間無無
seed_provider
seeds: 各個ip之間用,進行連線,seed 是可以選擇集群中的某個或者某幾個節點進行配置,所有的集群種的節點都會先和seed節點溝通,獲取集群狀態
需要基於集群ip做配置
partitioner
partitioner的意思就是允許你的partition key以何種方式在集群種放置,放置到哪個節點,而方式的方式會結合上面的num_tokens或者initial_token的配置來查詢;也就是集群配置了randompartitioner的放置策略,然後一條記錄在集群中會以md5方式進行計算其歸屬的節點,然後到對應節點進行讀寫
org.apache.cassandra.dht.murmur3partitioner
見下表endpoint_snitch
snitch的作用是:讓cassandra知道你的網路拓撲;讓cassandra可以放置副本:把機器歸類為datacenter以及rack
******snitch
見下面表
listen_address
本節點需要繫結的ip,這裡address和下面的inte***ce只能選乙個去設定
inetaddress.getlocalhost()函式獲取的ip
listen_inte***ce
網絡卡介面
native_transport_port
cql繫結的埠
9042
rpc_address
cql的服務繫結的ip
同listen_address
storage_port
內部節點間進行通訊的埠,比如gossip協議
7000
ssl_storage_port
與上述埠只能存乙個,如果是在公網環境下建議用這個埠
7001
資料儲存相關
data_file_directories
-儲存資料的目錄,如果是掛了多塊磁碟的話,各個磁碟路徑前加- ;
cassandra_home的目錄下預設建data目錄
基於自己的掛盤情況設定
commitlog_directory
commit log的配置目錄,也就是wal 的目錄,如果是hdd盤,建議與data目錄分開
cassandra_home下的data目錄下的commitlog目錄
disk_failure_policy
data disk failure的策略,當data資料盤出現磁碟故障的時候,我們的cassandra應該怎麼做
stop
見下表commit_failure_policy
當commitlog資料盤出現磁碟故障的時候,我們的cassandra應該怎麼做
stop
見下表partitioner
partitioner名稱
意義org.apache.cassandra.dht.murmur3partitioner
使用murmur的hash演算法進行值的計算具體演算法含義可以自行谷歌
org.apache.cassandra.dht.randompartitioner
計算md5 的hash;murmur3partitioner比randompartitioner計算hash會快很多。
org.apache.cassandra.dht.byteorderedpartitioner
把key以原生的byte儲存和下面的string 是大體一類,計算key效能比下面好一點點
org.apache.cassandra.dht.orderpreservingpartitioner
所有的key的hash計算就是計算成乙個utf-8的字串,但是這種方式只是可以提供較好的key排序操作。但是會造成一些key的傾斜,比如某些node的key儲存量比別的node多;
endpoint_snitch
snitch名稱
意義******snitch
沒有機架感知的一種snitch,在多dc的環境下不適合部署,選擇這種方式的話,那麼副本策略:replication strategy 應該選擇******strategy
gossipingpropertyfilesnitch
yaml裡面寫的是建議在生產環境部署的,本節點的dc以及rack資訊在cassandra-rackdc.properties配置,別的節點可以通過gossip獲取得到該節點的dc rack資訊,這是一種機架感知的snitch,這裡是只需要配置自己的節點資訊
propertyfilesnitch
一種機架感知snitch之一,需要在cassandra-rackdc.properties配置上所有的ip對應的機架 dc等資訊;如果不配置就是認為是預設的dc1,rac1,一般副本策略建議是networktopology strategy
rackinferringsnitch
認為使用這種snitch的都是在一直的網路環境中,主要是通過ip的二進位制分組做比較,如果2個ip的第二個8bit的組的數字是一樣的就認為是在乙個dc下面,如果是第三個8bit組是一樣的就認為是乙個機架上。
ec2multiregionsnitch
用於在公網環境下的多region下的snitch,這時候需要為公網環境下的埠開防火牆
ec2snitch
適用於aws的ec2的部署,在乙個region下,region以及az的資訊是通過ec2的api獲取的,region被當做dc,az當做機架;
failure_policy
failure policy名稱
disk_failure_policy意義
commit_failure_policy意義
die當出現檔案系統error或者單個sstable的error的實時,停止gossip互動client的請求以及kill jvm
停止節點程序,kill jvm
stop_paranoid
單個sstable出現error的時候,會停掉gossip互動,以及拒絕client請求;如果是啟動的時候,會kill jvm
無此配置
stop
如果出現fs問題的時候會停掉gossip互動以及拒絕client請求,但是節點可以接收jmx的觀測;啟動的時候出現error則會kill jvm
停掉節點,但是節點可以接收jmx的觀測
best_effort
暫停使用出現問題的磁碟,且盡可能的返回資料給使用者,這就表明可能會出現造成讀到過期資料,比如使用one這個一致性的時候
無此配置
ignore
忽略檔案系統或者磁碟故障,讓請求失敗
忽略error,讓comit 失敗
stop_commit
讓commit log操作失敗,但是依舊提供讀
注意
class可以有******strategy和networktopologystrategy,其中******strategy意思是:test_keyspace的副本的放置是在乙個dc內部,擺放的規則是簡單策略,一般是按照node的ip adress的順序擺放;networktopologystrategy:副本會穿過多個dc進行擺放,詳細的規則後續會介紹;
釘釘群:
Cassandra技術介紹之配置
所有的配置都在cassandra的安裝目錄下面的conf裡,conf目錄下面有cassandra.yaml這個檔案,所有的配置都可以通過修改這個檔案而達到目的 比較關鍵的幾個配置有 cluster name,partitioner,snitch,以及seed nodes的配置。如上圖,我們知道乙個c...
cassandra技術分享
背景 cassandras是由facebook的兩位工程開發出來的一款nosql資料庫。它兼有dynamo和bigtable的優點。主要有下面一些特點 安裝與配置 cassandra的安裝和配置都比較簡單。如果不做集群,直接把下下來的壓縮包解壓後,就可以使用。如果要做集群,那就需要配置conf目錄下...
密碼技術之基本介紹
想象一下 alice 和 bob 傳送郵件的場景,傳送的郵件稱作訊息,傳送訊息的 alice 稱為傳送者,接收訊息的 bob 稱為接收者,當經過網路時,訊息有可能會被第三方竊聽,竊聽訊息的稱為竊聽者。為了不被竊聽者知道內容,alice 傳送者 可以將訊息加密傳送出去,加密前的訊息稱為明文,加密後的訊...