Cassandra1.2文档学习(5)—— Snitch
參考資料:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/architectureSnitchesAbout_c.html#concept_ds_c34_fqf_fk
一個snitch(告密者)決定應當從哪個數(shù)據(jù)數(shù)據(jù)中心和機架寫入和讀取數(shù)據(jù)。snitch通知Cassandra關于網(wǎng)絡的拓撲情況以保證數(shù)據(jù)請求能夠高效地路由并且允許通過把機器按數(shù)據(jù)中心和機架分組以便Cassandra放置數(shù)據(jù)副本。所有的節(jié)點關于snitch的配置應當是一致的。Cassandra盡全力以保證在一個機架上只有一個備份(不在同一個機架上放多個備份,而是放置在不同機架上)。
提示:如果在數(shù)據(jù)插入到集群后修改了snitch配置,你必須進行一次深度的恢復,因為snitch影響數(shù)據(jù)備份放置的位置。
?
Dynamic snitching
顯示了從多個備份中讀取數(shù)據(jù)并根據(jù)歷史選擇最好的備份的能力。
如果可能的話,使請求不路由到性能差的節(jié)點。dynamic snitch是默認啟用的并在大多數(shù)情況下被推薦使用。默認情況下,所有的snitch都使用dynamic snitch層來顯示讀取延遲,如果可能的話,不將請求路由到性能差的節(jié)點上。dynamic snitch默認是啟動的,多數(shù)部署情況下都建議使用dynamic snitch。
?
SimpleSnitch
默認的SimpleSnitch不需要知道數(shù)據(jù)中心和機架的信息。當使用數(shù)據(jù)中心時,可以使用SimpleSnitch。使用SimpleSnitch時,你需要指定keyspace的策略選項只有一項——復制因子。
?
RackInferringSnitch
RackInferringSnitch通過機架和數(shù)據(jù)中心來定義節(jié)點的位置,節(jié)點用進制表示ip地址的的第二組為數(shù)據(jù)中心,第三組為機架。下面是個例子:
?
?
PropertyFileSnitch
根據(jù)機架和數(shù)據(jù)中心決定節(jié)點的位置。這個snitch在配置文件cassandra-topology.properties中由用戶定義網(wǎng)絡情況描述。使用這個snitch的情況有兩種:節(jié)點的ip地址不均勻或者如果你的數(shù)據(jù)副本需求比較復雜。當使用這個snitch時,你可以定義你想要的數(shù)據(jù)中心的名字。請確保數(shù)據(jù)中心的名字和keyspace的復制策略相關聯(lián)。配置文件cassandra-topology.properties中應當包含集群中的每一個節(jié)點,并且每一個節(jié)點的cassandra-topology.properties應當相同。
如果你的ip地址分布不均勻,并且有兩個物理數(shù)據(jù)中心和一個邏輯數(shù)據(jù)中心,每個物理數(shù)據(jù)中心有兩個機架,邏輯數(shù)據(jù)中心存放分析數(shù)據(jù)的備份。cassandra-topology.properties可能如下:
# Data Center One
175.56.12.105 =DC1:RAC1
175.50.13.200 =DC1:RAC1
175.54.35.197 =DC1:RAC1
?
120.53.24.101 =DC1:RAC2
120.55.16.200 =DC1:RAC2
120.57.102.103 =DC1:RAC2
?
# Data Center Two
110.56.12.120 =DC2:RAC1
110.50.13.201 =DC2:RAC1
110.54.35.184 =DC2:RAC1
?
50.33.23.120 =DC2:RAC2
50.45.14.220 =DC2:RAC2
50.17.10.203 =DC2:RAC2
?
# Analytics Replication Group
172.106.12.120 =DC3:RAC1
172.106.12.121 =DC3:RAC1
172.106.12.122 =DC3:RAC1
?
# default for unknown nodes default =DC3:RAC1
?
GossipingPropertyFileSnitch
GossipingPropertyFileSnitch定義了一個本地節(jié)點的數(shù)據(jù)中心和機架。使用gossip傳播信息給其他節(jié)點。conf目錄下的配置文件cassandra-rackdc.properties定義了默認地數(shù)據(jù)中心和機架:
dc =DC1
?rack =RAC1
?
EC2Snitch
將一個簡單的集群(集群中的所有節(jié)點都在一個單一區(qū)域內(nèi))部署在亞馬遜的EC2是可以使用EC2Snitch。這個區(qū)域被視為數(shù)據(jù)中心并且可用的區(qū)域被視為數(shù)據(jù)中心上的機架。例如,如果一個節(jié)點在us-east-1a,us-east是數(shù)據(jù)中心的名字,1a是機架的位置。因為私人的ip地址被使用了,snitch不能跨越多個區(qū)域。當定義keyspace的策略選項時,使用EC2的區(qū)域名字(例如us-east)作為數(shù)據(jù)中心的名字。
?
EC2MultiRegionSnitch
當你在亞馬遜Use the EC2 EC2 上布置一個多區(qū)域的集群時,請使用Amazon EC2。當使用EC2Snitch時,區(qū)域被視為數(shù)據(jù)中心并且可用的區(qū)域被視為數(shù)據(jù)中心上的機架。例如,如果一個節(jié)點在us-east-1a,us-east是數(shù)據(jù)中心的名字,1a是機架的位置。
這個snitch使用公網(wǎng)地址作為作為廣播地址從而能夠方便的跨越區(qū)域。這就意味著你必須配置每一個節(jié)點,設置listen_address為內(nèi)網(wǎng)地址,broadcast_address為公網(wǎng)地址。這樣就允許在一個EC2區(qū)域的節(jié)點綁定另一個區(qū)域的節(jié)點,從而實現(xiàn)了多個數(shù)據(jù)中心。(對于區(qū)域內(nèi)的通信,在連接建立后Cassandra轉(zhuǎn)換成內(nèi)部ip)。
此外,你必須在配置文件cassandra.yaml中設置種子節(jié)點的地址,而且必須是公網(wǎng)ip,因為內(nèi)網(wǎng)地址是不能路由的。例如:
seeds: 50.34.16.33, 60.247.70.52
對于每一個種子節(jié)點,使用這個命令去找到公共的ip地址:
curl http://instance-data/latest/meta-data/public-ipv4
最后,請確保參數(shù)storage_port 或者 ssl_storage_port是可以被訪問的。
當定義keyspace的策略選項時,使用EC2的區(qū)域名字(例如us-east)作為數(shù)據(jù)中心的名字。
轉(zhuǎn)載于:https://www.cnblogs.com/dyf6372/p/3532928.html
總結(jié)
以上是生活随笔為你收集整理的Cassandra1.2文档学习(5)—— Snitch的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 团队作业第4次-项目需求分析
- 下一篇: Exp4 恶意代码分析 20164302