Apacheについての設定をいろいろと取り上げてきました。
- Apacheの同時アクセスを制限(mod_limitipconn)する
- php + apache のメモリ量をおさえる
- ApacheのKeepAliveを考える
- php + apache のメモリ量をおさえる(2) workerを使ってみる
- php + apache のメモリ量をおさえる(2) workerを使ってみる(チューニング)
などなど、Apacheには、上記の設定以外にもまだまだ細かい設定を行うことができます。
また、このようにいろいろな設定を行うことによってApacheを効率よく、かつ、外部からの不正なアクセスから守るようにしても、なお、Apacheは万全とは言えないところは悲しいところです。
外部からのアタック要因だけに限らず様々な要因からApacheが不安定となることを「100%避ける」ということは、ほぼ、不可能に近いと思います。
今回は、Monitもし、Apacheが不安定になったときの対応を設定できるMonitでも、外部からのアタック要因だけに限らず様々な要因からApacheが不安定となり、最悪は、システムダウンまで引き起こしてい舞います。
その急なアクセスをできるだけおさえるために、mod_limitipconnを使って同一IPからの同時アクセスを制限するやり方を、簡単に解説してみたいと思います。
Unix system(Linuxを含む)のサービス(デーモン)のモニタリングを行うためのユーティリティソフト(サービス)です。
Monitは、サービス(デーモン)の監視・管理としては、簡単にセットアップを行うことができることでも有名です。
実際には、サービス(デーモン)を監視し、その状態によって、サービス(デーモン)を停止したり、再起動したり、アラートメッセージをメール送信したりすることができます。 ウェブ画面からの監視も可能です。
- 目次
- 履歴
2010年12月19日 初版
まずは、インストールから
Monitは、標準では、インストールされていません。そのため、まず、インストールしなければならないわけです。
簡単にインストールするために、
- CentOS 5 CentOS 6 ScientificLinux 6 では、
今回は、EPEL (Extra Packages for Enterprise Linux) を使って、yumでインストールしてみます。
今までに、「あえてphp5.2系をインストールする(CentOS 5,CentOS 6,Scientific Linux 6)」、「あえてmysql5.1系をインストールする」を実施されていない方や、個別にすでにEPELをインストールされていない方は、「Apacheの同時アクセスを制限(mod_limitipconn)する」を参照してインストールをしてください。
- Debian 6 Ubuntu 10 では、
デフォルトのリポジトリを使います。
ダウンロード先は、以下のとおりです。
ソースコードは、http://mmonit.com/monit/download/から見つけることができるでしょう。
RPMは、http://rpmfind.net/linux/rpm2html/search.php?query=monitから見つけることができるでしょう。
Monit をインストールする。
Monitは、先のEPELによってyumで簡単にインストールできます。
CentOS 5 CentOS 6 ScientificLinux 6
|
Debian 6 Ubuntu 10
|
これで、最後にComplete!が出力されてばOKです。
インストール自体は、これだけです。
次は、各条件の設定です。
MonitでApacheを監視する設定
CentOSでは、yumでインストールが完了すると自動的にMonitの設定ファイル(/etc/monit.conf)が追加されます。
デフォルトでは、何も監視するようにはなっていませんので、Apacheを監視するように設定をします。
デフォルトでは、以下のように各OSによって微妙に設定ファイル名が異なります。
-
CentOS 5 CentOS 6 ScientificLinux 6
: /etc/monit.conf を編集します。
-
Debian 6 Ubuntu 10
: /etc/monit/monitrc を編集します。
( また、デフォルトの動作では、/etc/monit/conf.d/* を全てインクロードします。そのためプロセス毎、サービス毎などでファイルを分けて管理することができます。 )
移行の例では、あくまでCentOS 5の例で記載しておきますが、編集する内容は同じです。
ここでは、/etc/monit.conf を編集します。
|
コメントアウト(先頭に#が付いた行)されたcheck process apacheを含む行があると思います。
その後あたりに、以下の部分をを追加しましょう。
|
|
簡単に解説しておきます。
- 1行目 : プロセス名 httpd を監視します・・・という宣言です。
/var/run/httpd.pidは、httpdのプロセスIDが設定されているファイルです。
CentOSでは、このままでOKだと思いますが、環境によっては異なりますので、必ず確認しましょう。
/etc/httpd/conf/httpd.conf にファイル名が設定されているはずです。
上記の場合、”/var/run/httpd.pid”となります。PidFile run/httpd.pid
- 2行目 : start program には、httpd の起動の仕方を設定します。
- 3行目 : stop program には、httpd の停止の仕方を設定します。
- 4-5行目 : ポート80を使ってwww.example.comへHTTPプロトコルを使って /alive.html ページを要求してみます。このとき、/alive.html ページの読み込みに失敗した場合は、リスタート(restart)するように宣言しています。
ここで、www.example.comの直下に、alive.htmlというファイルを置いておきましょう。
実際に、Monitは、監視のためにアクセスします。
alive.htmlの内容は、なんでも良いです。たとえば、以下のような簡単なもので良いでしょう。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Alive</title> </head> <body> <h1>this site is alive. </h1> </body> </html>
- 6行目 : この監視手順のグループ名を指定します。
グループ名は、
後々、Monitを起動する際に、同じグループ名だけを監視したりするために用います。
ここでは、とりあえずhttpdにしていますが、グループ分けしたい場合は、グループ名を指定しましょう。デーモン(監視)の周期が、デフォルトでは、60秒になっていると思います。
監視周期を短くしたい場合や、もっと長くしたい場合は、以下の数値を編集しておきましょう。
set daemon 60
MonitでApacheを監視しているか確認
先の設定を終えたら、1度確認してみましょう。
簡単に確認するために、シェルを2つ(シェル#1、シェル#2)使って確認します。
シェル#1 : Monitを起動します。
|
|
※上記のエラーメッセージは、”set daemon 60″をコメントアウトしたときに出るエラーメッセージです。
シェル#2 : シェル#1でMonitが起動できたのを確認して、Monitが読み込みにいくページ(alive.html)の名前を変更して読めなくしてみます。
|
シェル#1 : 次の監視でApacheが再起動すればOKですね。
|
ちゃんと起動しましたね。
これでOKのはずです。
シェル#2 : シェル#1でApacheが再起動したのを確認して、一応、プロセスを確認してみましょう。
|
ちゃんとプロセスがありますね。当たり前?
Monitを常駐させる
ちゃんと動作確認できたら、あとは、いつものとおり常駐させて、再起動しても動作するように設定して完了です。
CentOS 5 CentOS 6 ScientificLinux 6
|
Debian 6 Ubuntu 10
|
|
/etc/default/monit の startup = 1 を設定していないので開始できません・・・というエラーなので、単純に /etc/default/monit を編集すればOKです。
|
Monitのさわりだけですね。
次回は、Monitを使って、もう少し突っ込んだ設定を行ってみます。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
コメントを投稿 :