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