Архив рубрики: cassandra

How to load configuration for Cequel Gem for Ruby without Rails

You can use this method:

Cequel::Record.establish_connection

Example:


# Load config from yaml:
config = YAML.load_file('config/cequel.yml')['development']

# Now you can initialize connection:
Cequel.Record.establish_connection(
  host: config[:host],
  port: config[:port],
  keyspace: config[:keyspace]
)

Как добавить ноду в кластер Cassandra

В примере рассмотрен процесс добавления новой ноды в кластер Cassandra с endpoint_snitch == PropertyFileSnitch (мульти-датацентровая конфигурация с описанием нод в cassandra-topology.properies). Все команды тестировались на CentOS 6.6.

Делаем всё на новой ноде по порядку:

  1. Удаляем содержимое директории с данными:
    rm -rf /var/lib/cassandra/data/*
  2. Ставим корректные права:
    chown -R cassandra:cassandra /var/lib/cassandra
  3. Прописываем в файл cassandra.yaml следующую строку (это важно!):
    auto_bootstrap: true
  4. Затем туда же добавляем listen_address и прочие нодо-специфические значения (вам тут виднее будет, я не знаю вашу сетку).
  5. В seeds этого же файла указываем IP ответственной ноды в вашем ДЦ.

На абсолютно всех подключенных нодах редактирую файл cassandra-topology.properties и в нужный DC/RAC добавляю свою новую ноду. У меня это выглядит так:

10.200.0.100=DC1:DC_APP_STAGING01

После этого запускаем базу данных на новой ноде:

service cassandra start

Всё, спустя несколько минут (или часов) данные размажутся на вашу новую ноду и она будет в строю как и все остальные. Проверяем через nodetool status на любой ноде.