【連載】iOS/Androidアプリ開発入門「サーバ連動アプリを開発しよう!」 (8) サーバの監視とデータのバックアップ
2015/03/12
みなさん、こんにちは!
iOSとAndroidで本格的なアプリを開発してみたい方向けの連載の第8回です。
これまで同様、本格的なアプリを開発するためには「何を知っておかなければならないか」「何を勉強すればいいか」を中心に書いていきたいと思います。
前回、リモートサーバ(本番環境)を構築しましたので、今回はサーバの監視とデータのバックアップの設定を行っていきたいと思います。
早速はじめていきましょう。
サーバを運用する
サーバ連動アプリを本格的に運用する場合、サーバの運用が重要なタスクとなります。
サーバがダウンしていてはアプリを使えませんし、クラウド上のデータが突然失われるようなサービスは、怖くて誰も使ってくれません。
こういったことを防ぐため、サーバの運用を行います。
サーバの運用とは、具体的には以下のような作業を指します。
- サーバの死活監視
- サーバのパフォーマンス監視
- データのバックアップ
- システムのバックアップ
- ログの収集と分析
- アプリのバージョンアップ
- OSのバージョンアップ
アプリをリリースする前に、サーバの運用計画を立て、必要なツールを導入しましょう。
今回は、サーバの死活監視とデータのバックアップを行うことにします。
サーバの死活監視
サーバやサービスが稼働しているかモニタリングすることを死活監視といいます。
今回は、2つのツールを組み合わせてサーバ(およびサービス)の死活監視を行います。
- AWSの機能を使ったサーバの死活監視(CloudWatch)
- 定番ツールを使ったサービスの死活監視(Monit)
順に見ていきます。
(1) AWSの機能を使ったサーバの死活監視
AWSにはサーバの監視をするCloudWatchという機能があります。
CloudWatchを使うと、サーバのCPUの使用率、ネットワークの通信量、インスタンスの稼働状況などが簡単に監視できます。
設定も簡単で、AWSの管理画面上で必要項目を入力していくだけで監視が始まります。
異常を検知したら、メールでお知らせしてくれます。
まずはCloudWatchでサーバの監視を始めましょう(設定手順は割愛)。
(2) 定番ツールを使ったサービスの死活監視
次に、Monitという定番ツールを使ってApacheやMySQLを監視します。
Monitを使うには、サーバにインストールが必要です。
$ sudo yum install monit
また、設定ファイルを作って/etc/monit.d
に保存します。
設定ファイルの一例を以下に示します。
$ sudo vi /etc/monit.d/httpd.conf (httpd.confの内容) check process httpd with pidfile /var/run/httpd/httpd.pid start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if failed port 80 then restart group httpd $ sudo vi /etc/monit.d/mysqld.conf (mysqld.confの内容) check process mysqld with pidfile /var/run/mysqld/mysqld.pid start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if failed port 3306 protocol mysql then restart if 5 restarts within 5 cycles then unmonitor group mysqld
設定ファイルを作ったら、Monitを起動し、自動起動をオンにします。
$ sudo service monit start $ sudo chkconfig monit on
これで、ApacheとMySQLの稼働状況をサーバ内で監視し、ダウンしていた場合は自動的に再起動してくれるようになります。
なお、サーバ自体がダウンした場合、Monitがダウンした場合、Monitが正常起動していなかった場合などは、Monitによる監視は中断されますので注意してください。
データのバックアップ
監視の設定が終わったら、データのバックアップの設定に進みます。
今回は、cronというジョブを定期的に実行してくれるツールを使って、MySQLのバックアップファイルを定期的に出力・保存する方法でデータをバックアップします。
まず、MySQLのバックアップファイルを保存するプログラムを作成します。
バックアップファイルの保存には、mysqldumpというコマンドを使います。
$ sudo vi /xxx/backup_mysql.sh (backup_mysql.shの内容) #!/bin/sh mysqldump -u ユーザ名 -pパスワード データベース名 > ディレクトリ名/ファイル名_`date +%Y%m%d-%H%M%S`.sql
次に、上記プログラムを定期的に実行する設定を行います。
$ sudo vi /etc/cron.d/backup_mysql (backup_mysqlの内容) 0 3 * * * root /xxx/backup_mysql.sh
これでデータのバックアップが始まります。
ただし、このままだと、どんどんバックアップファイルが溜まっていきます。
シェルスクリプトに少し手を加え、古いファイルを消すようにすると良いでしょう(詳細は割愛)。
前回同様、サーバに対して行った作業と調べた内容はすべて記録していってください。
第8回のまとめ
リモートサーバを構築したら、サーバの監視とデータのバックアップを設定しましょう。
- CloudWatchとMonitを使ってサーバを監視する
- cronとmysqldumpを使ってデータをバックアップする
- サーバへの作業内容、調査内容はすべて記録する
本日は以上です。
連載目次
iOS/Androidアプリ開発入門「サーバ連動アプリを開発しよう!」
(10) 開発の旅をうまく乗り切る(最終回)
(9) バックグラウンドでメール送信
(8) サーバの監視とデータのバックアップ
(7) リモートサーバ(本番環境)の構築
(6) ローカルでの単体・結合テスト
(5) コントローラーとビューの実装
(4) モデル実装
(3) API実装
(2) 画面設計・データベース設計・API設計
(1) 開発環境の構築