В документации Cassandra 1.0 есть статья, в которой это довольно хорошо объясняется: О репликации в Cassandra< /а>.
Я предполагаю, что у вас есть два (логических?) центра обработки данных. Допустим, у вас две стойки в одном ДЦ и последняя стойка в другом, и на каждой СТОЙКЕ у вас по 2 узла. Вы должны определить их в файле топологии, чтобы они выглядели примерно так:
server1IP=DC1:RACK1
server2IP=DC1:RACK1
server3IP=DC2:RACK1
server4IP=DC2:RACK1
server5IP=DC2:RACK2
server6IP=DC2:RACK2
Если вы хотите иметь 3 копии данных (по одной для каждой логической стойки), вы определите свое пространство ключей для использования NetworkTopologyStrategy с настройками репликации для каждого контроллера домена, например так:
CREATE KEYSPACE "myKeyspaceName"
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 2};
Перехватчик PropertyFile также «осведомлен о стойке», поэтому, когда происходит запись, он гарантирует, что одна копия данных находится на узле в RACK1
в DC1
, и по одной копии на каждом RACK
в DC2
. Исходя из того, что вы говорите, может иметь смысл иметь три логических центра обработки данных, каждый с одной стойкой.
Вам также следует ознакомиться с этим документом в разделе "Выбор параметров репликации пространства ключей" это далее объясняет, как настроить репликацию.
РЕДАКТИРОВАТЬ:
Если я использую CREATE KEYSPACE "myKeyspaceName" WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', replicationfactor: 3}. Будет ли это реплицироваться на все три стойки?
Я не уверен. Но каждый найденный мной пример определения стратегии репликации пространства ключей с использованием NetworkTopologyStrategy только с одним контроллером домена конкретно называет контроллер домена, а не указывает «коэффициент репликации». Даже в документе, который я связал, говорится:
NetworkTopologyStrategy принимает в качестве параметров количество реплик, которое необходимо для каждого центра обработки данных. Даже для кластеров с одним центром обработки данных (или с одним узлом) вы можете использовать эту стратегию размещения реплик и просто определить количество реплик для одного центра обработки данных.
Итак, если вы назовете свой контроллер домена DC1
, это будет выглядеть так:
CREATE KEYSPACE "myKeyspaceName"
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'DC1' : 3}
Если вы сделали это и определили три стойки под этим контроллером домена, одна копия будет реплицирована на все три стойки.
person
Aaron
schedule
25.04.2014