2013年12月19日木曜日

ニフティクラウドRDBにZabbixのデータベースを移行してみた

■事前作業
Zabbixのインストール
バージョンは何でも大丈夫だと思いますが今回自分が試したバージョンは1.8.3です

■RDBの作成
  1. https://console.cloud.nifty.com/web/rdb を開きます
  2. 左メニューのDBサーバーを選択し「DBサーバー新規作成」をクリックします
  3. DBエンジン選択…お好きなバージョンを選択します(2013/12/18現在ではMySQLの「5.5.32」,「5.6.12」が選択可能です、今回は 5.5.32 を選択しました)
  4. 基本設定…DBサーバー名のみを入力します、今回他の機能(HAやディスク変更)は実施しないでいきます
  5. DB設定…DBの名前、DB用のユーザ名とパスワード、LISTENするポートを入力します
  6. オプション設定…自動バックは実施しないので何も変更しません
  7. 確認…内容を確認し作成するをクイックします

だいたい30分から40分くらいでDBサーバーの作成が完了します

■DBファイアウォールの編集
作成したDBサーバーに対して既存のニフクラ上のサーバーが通信できる必要があります
作成したDBサーバーにはデフォルトFWが設定されておりそのFWに対してルールを追加する必要があります
デフォルトではルールは存在していないためどこからもアクセスできない状態となっております
  1. 左メニューのDBファイアウォールを選択します
  2. default.[zone名]というファイアウォールができていると思いますのでチェックボックスをクリックしプルダウンから「DBファイアウォールグループ編集」を選択します
  3. ルールを追加できるダイアログが表示されますので先ほど作成したDBサーバーがLISTENするポートに対して既存のサーバのからのアクセスを許可します
  4. 許可の設定はIPアドレスを直接設定するか、既存のFWグループを選択します

これでファイアウォールの設定は完了です

■RDBへの接続テスト
作成したDBサーバーへのアクセスが完了していると思いますので確認してみます
mysql -u [username] -p [dbname] -h [rdb_ip_address]
[username], [dbname], [rdb_ip_address] の部分にはDBサーバー作成時に設定したユーザ名、DBの名前、DBサーバーのIPアドレスを入力します
DBサーバーのIPアドレスはコントロールパネルのDBサーバー一覧で確認することができます
グローバル、プライベート両方が表示されているのでアクセスどちらかを入力します
(DBサーバーへのアクセスなので基本はプライベートになるかと思います)
パスワードの入力を求められますので、これもDBサーバー作成時に設定したパスワードを入力します

これで接続できるはずです、「show database」等でDBサーバー作成時に設定したDB名が存在していることを確認します
テーブルは1つも作成させれていません
ここで接続できない場合はFWの設定が怪しいのでFWやiptablesの設定を確かめてみてください

■ZabbixDBのエキスポートとインポート
1. 既存サーバーからのエキスポート
cd /var/tmp
mysqldump -u root -p zabbix > zabbix.dmp

2. RDBで作成したDBサーバーへのインポート
mysql -u [username] -p -h [rdb_ip_address]
  mysql > create database zabbix;
cd /var/tmp
mysql -u [username] -p zabbix -h [rdb_ip_address] < zabbix.dmp

DBサーバーに接続して「zabbix」という名前のデータベースにデータが存在することを確認します

■ZabbixServerの設定変更
vim /etc/zabbix/zabbix_server.conf
DBUser=[username]
DBHost=[rdb_ip_address]
DBPassword=DBサーバー作成時に設定したパスワード

vim /etc/zabbix/zabbix.conf.php
$DB["USER"] = '[username]';
$DB["SERVER"] = '[rdb_ip_address]';
$DB["PASSWORD"] = 'DBサーバー作成時に設定したパスワード';

/etc/init.d/zabbix-server restart
エラーなく再起動できればOKです

■動作確認
ZabbixのWebUIから確認します
テンプレートを一つ追加してzabbix.hostsテーブルにに指定した名前のテンプレートのレコードが追加されていることを確認します
ex) select * from hosts where host='test-template';

以上でニフティクラウドRDBへのZabbixDBの以降は完了です

●トラブルシューティング
ERROR 1129 (00000): Host 'xxx.xxx.xxx.xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
mysqladminコマンドが上記のせいでそもそも実行できないので自分は再起動するしかなったです。。。
何か別の方法があるのだろうか

Cannot connect to the database. Exiting...
ZabbixServerのログに出力されていました、これはzabbixの設定ファイルがうまく設定できていなかったために発生していました

0 件のコメント:

コメントを投稿