マニュアル作業で複数のノードを一度に設定するのは、非常に難しい作業です。たった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を実行する手順を追加してください。
参考資料
GridDB Community Edition(v3.0.1)は、以下からダウンロードできます。 GitHub.
ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb