Puppetを使用したGridDBの設定方法

マニュアル作業で複数のノードを一度に設定するのは、非常に難しい作業です。たった1つのタイプミスが長時間に渡るデバッグを引き起こす恐れがあります。Puppetなどの設定管理システムでは、設定を複数のノードに展開し、値が一貫していることを保証しながら人為的なエラーを防止することでこの問題を解決します。 Puppetモジュールはこちらからダウンロードできます。(puppetforgeでも対応予定) https://griddb.net/en/resources/griddb- puppet-module.tgz  MULTICASTまたはFIXED_LISTモードでGridDB Standard Editionを設定できます。

最初に用語の定義を説明しておくと、Puppetマスターとは、サーバーとすべての構成管理設定を保存するプロセスの両方を意味します。Puppetエージェントとは、マスターに接続して構成を適用するプロセスのことです。Puppetモジュールとは、エンドユーザーが特定のアプリケーションでPuppetを使用できるようにする、第三者の定義とテンプレートのセットです。 Hieraとは、Puppetのレシピ内で参照できるYAMLの定義です。

Puppetモジュールをデプロイするために、まずはCentOS 7の3つのノード(Amazon AWSインスタンス)においてGridDBを新規にインストールします。ノードの1つはPuppetマスターとなり、GridDB設定が格納され、正確なドメイン名によって他のホストにアクセスすることができます。

Puppetのインストールと設定

3つのホスト上で、

# echo "192.168.1.77 griddb1.example.com" >> /etc/hosts

Puppetをインストールするには、まず先にPuppetlabs Repoをインストールしてから次にPuppetをインストールします。

# rpm -Uvh https://yum.puppetlabs.com/puppet5/puppet5-release-el-7.noarch.rpm

マスター上で、

# yum -y install puppetserver

もう1つのノード上で、

# yum -y install puppet-agent

Puppetマスターを開始します。

# systemctl enable puppetmaster
# systemctl start puppetmaster

ファイアウォールを無効にするか、またはPuppetエージェントがマスターに接続するためのポート8140へのアクセスを許可する必要があります。

# firewall-cmd --zone=public --port 8140/tcp

Puppetがインストールされたら、エージェントを設定します。 マスターのホスト名は/etc/puppetlabs/puppet/puppet.confに追加する必要があります。スニペットは次のようになります:

[main]
server=griddb1.example.com

次に、Puppetエージェントの証明書を生成し、3つのノードすべてで次のコマンドを実行します。

# puppet agent --test

その後、Puppetマスターで、次のコマンドを実行して証明書に署名します。

# puppet cert sign griddb1.example.com
# puppet cert sign griddb2.example.com
# puppet cert sign griddb3.example.com

次に、すべてのノードで “puppet agent –test”を再実行すると、以下のアウトプットが出るはずです。

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for griddb1.example.com
Info: Applying configuration version '1503328741'
Notice: Applied catalog in 0.20 seconds

エージェントが動作しているので、バックグラウンドプロセスも有効にすることができます。

# systemctl enable puppet
# systemctl start puppet

これでシステムにPuppetが設定され、GridDBモジュールを設定することができます。

Setting Up GridDB with Puppet

まず、GridDBPuppetモジュールを https://griddb.net/en/resources/griddb-puppet-module.tgzからダウンロードします を展開し、解凍した内容を/etc/puppetlabs/code/environments/production/modules/に置きます。

/etc/puppetlabs/code/environment/production/data/common.yamlを編集してGridDBの設定をすべて追加します。 ネットワークがマルチキャストネットワーキングをサポートしている場合は、griddb_modeを “multi”に設定するか、必要に応じて”fixed”を次のようにコンテナで使用できます。

griddb_clusterName: "defaultCluster"
griddb_user: "admin"
griddb_pass: "admin"
griddb_minNodeNum: "3"
griddb_replicationNum: "2"
griddb_concurrency: "2"
griddb_storeMemoryLimit: "1024MB"
griddb_mode: "fixed"
griddb_nodes: 
        - "192.168.1.74"
        - "192.168.1.75"
        - "192.168.1.77"

common.yamlにはGridDBのユーザ名とパスワードが含まれているので、権限をロックダウンすることをお勧めします。

# chown puppet.puppet common.yaml
# chmod 640 common.yaml

実際のパスワードファイルはgs_passwdによって生成されたマシンなので、最初に作成してモジュールテンプレートにコピーし、他のノードに反映させることができます。

# su - gsadm
$ gs_passwd admin
Password: 
Retype password:
$ exit
# cp /var/lib/gridstore/conf/password /etc/puppet/code/environment/production/modules/griddb/templates/password.erb

最後に、ファイアウォールを無効にするか、必要なポートへのアクセスを許可するように設定します。

# systemctl stop firewalld

もしくは

# firewall-cmd --zone=public --port 10001/tcp
# firewall-cmd --zone=public --port 10010/tcp
# firewall-cmd --zone=public --port 10020/tcp
# firewall-cmd --zone=public --port 10040/tcp

ここで、すべてのノードで “puppet agent –test”を同時に呼び出すと、Puppetは設定ファイルをデプロイして、すべてのノードでGridstoreサービスを開始します。 ローカルまたはクラウド環境のどちらの環境においても、上記の手順でGridDB SEを使用することができますし、GridDB CEでの使用にも適用できます。 Community Editionを使用する場合は、GridDB Puppetマニフェストで”service”セクションを無効にすることと、手動でgs_startnodeとgs_joinclusterを実行する手順を追加してください。

参考資料

RPMGridDB Community Edition(v3.0.1)は、以下からダウンロードできます。 GitHub.

 

ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb

Leave a Reply

Your email address will not be published. Required fields are marked *