Puppet Manifest Cassandra: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Puppet]] |
||
+ | [[Категория:Autodeploy]] |
||
=Cassandra Puppet Manifest= |
=Cassandra Puppet Manifest= |
||
+ | |||
− | [[Файл: 12121.1]] |
||
+ | Сам манифест достаточно большой , я не писал его с нуля а переработал готовый. Состоит из 2 частей - cassandra и jre. |
||
+ | *[[Медиа:Jre-puppet.tar.gz|Jre-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"] }