Puppet Manifest Cassandra: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
  +
[[Категория:Puppet]]
  +
[[Категория:Autodeploy]]
 
=Cassandra Puppet Manifest=
 
=Cassandra Puppet Manifest=
  +
 
Сам манифест достаточно большой , я не писал его с нуля а переработал готовый. Состоит из 2 частей - cassandra и jre.
 
Сам манифест достаточно большой , я не писал его с нуля а переработал готовый. Состоит из 2 частей - cassandra и jre.
 
*[[Медиа:Jre-puppet.tar.gz|Jre-puppet.tar.gz]]
 
*[[Медиа:Jre-puppet.tar.gz|Jre-puppet.tar.gz]]
 
*[[Медиа:Cassandra-puppet.tar.gz|Cassandra-puppet.tar.gz]]
 
*[[Медиа:Cassandra-puppet.tar.gz|Cassandra-puppet.tar.gz]]
  +
Здесь я отмечу только некоторые тонкости:
  +
==Конфигурация кластера==
  +
<BR>
  +
Перед тем как использовать манифест нужно указать хосты и их токены. Если хостов не 4 то подредактировать соответвующюю секцию.
  +
Я отказался от идеи вычислять токен "на лету" так же как и список сидов - это создает сложности если хосты устанавливаются не подряд а, например одновременно.
  +
<PRE>
  +
$initial_token = $::hostname ? {
  +
default => "0",
  +
host-sb0 => "0",
  +
host-sb1 => "42535295865117307932921825928971026432",
  +
host-sb2 => "85070591730234615865843651857942052864",
  +
host-sb1 => "127605887595351923798765477786913079296",
  +
}
  +
</PRE>
  +
  +
<PRE>
  +
$seeds = $::hostname ? {
  +
default => "host-sb0, host-sb1, host-sb2 host-sb3",
  +
host-sb0 => "host-sb1, host-sb2, host-sb3",
  +
host-sb1 => "host-sb0, host-sb2, host-sb3",
  +
host-sb2 => "host-sb0, host-sb1, host-sb3",
  +
host-sb3 => "host-sb0, host-sb1, host-sb2",
  +
}
  +
</PRE>
  +
Рассчет токенов:
  +
<PRE>
  +
#!/usr/bin/env python
  +
  +
import sys
  +
  +
nodes = int(sys.argv[1])
  +
for x in xrange(nodes):
  +
print "Node", x, "initial_token:", 2 ** 127 / nodes * x
  +
</PRE>
  +
  +
==Последовательность исполнения==
  +
Обратить внимание на секцию before - что бы не возникала ошибка "распаковать файл когда его еще нет"
  +
<PRE>
  +
file { "${cassandra::params::cassandra_base}/apache-cassandra-${cassandra::params::version}-bin.tar.gz":
  +
mode => 0644,
  +
owner => cassandra,
  +
group => cassandra,
  +
source => "puppet:///files/cassandra/apache-cassandra-${cassandra::params::version}-bin.tar.gz",
  +
alias => "cassandra-source-tgz",
  +
before => Exec["untar-cassandra"],
  +
require => File["cassandra-base"]
  +
}
  +
</PRE>

Текущая версия на 16:41, 28 февраля 2013

Cassandra Puppet Manifest

Сам манифест достаточно большой , я не писал его с нуля а переработал готовый. Состоит из 2 частей - cassandra и jre.

Здесь я отмечу только некоторые тонкости:

Конфигурация кластера


Перед тем как использовать манифест нужно указать хосты и их токены. Если хостов не 4 то подредактировать соответвующюю секцию. Я отказался от идеи вычислять токен "на лету" так же как и список сидов - это создает сложности если хосты устанавливаются не подряд а, например одновременно.

        $initial_token = $::hostname ? {
                default               => "0",
                host-sb0        => "0",
                host-sb1        => "42535295865117307932921825928971026432",
                host-sb2        => "85070591730234615865843651857942052864",
                host-sb1        => "127605887595351923798765477786913079296",
        }
        $seeds = $::hostname ? {
                default          => "host-sb0, host-sb1, host-sb2 host-sb3",
                host-sb0         => "host-sb1, host-sb2, host-sb3",
                host-sb1         => "host-sb0, host-sb2, host-sb3",
                host-sb2         => "host-sb0, host-sb1, host-sb3",
                host-sb3         => "host-sb0, host-sb1, host-sb2",
        }

Рассчет токенов:

#!/usr/bin/env python

import sys

nodes = int(sys.argv[1])
for x in xrange(nodes):
   print "Node", x, "initial_token:", 2 ** 127 / nodes * x

Последовательность исполнения

Обратить внимание на секцию before - что бы не возникала ошибка "распаковать файл когда его еще нет"

       file { "${cassandra::params::cassandra_base}/apache-cassandra-${cassandra::params::version}-bin.tar.gz":
                mode => 0644,
                owner => cassandra,
                group => cassandra,
                source => "puppet:///files/cassandra/apache-cassandra-${cassandra::params::version}-bin.tar.gz",
                alias => "cassandra-source-tgz",
                before => Exec["untar-cassandra"],
                require => File["cassandra-base"]
        }