Program Resource

開発者向け各種コード、アルゴリズム、リソース情報ライブラリ もしくはねふぁの覚え書き

Part 5まででとりあえずサーバーは稼働するが、アクセス過多等によりhttpサーバーが不安定になる事もあるので、アクセス制限やhttpd等のサービスが停止してしまった場合にそれを監視し、自動的に再起動をかける監視サービスを追加しておく。

アクセス制限

参考にしたサイト:

http://server-setting.info/centos/apache_mod_limitipconn.html

アクセス制限にはmod_limitipconnを使用する。モジュールをインストールする。

yum --enablerepo=epel install -y mod_limitipconn

設定ファイルの最後にアクセス制限を記述する。下記例では同一IPから同時に最大20アクセス、zipなどのファイルであれば3アクセスに制限している。

vi /etc/httpd/conf.d/limitipconn.conf

 

<IfModule mod_limitipconn.c>
<Location />
MaxConnPerIP 20
NoIPLimit image/*
</Location>
<FilesMatch "\.(zip|mp?g|iso)$">
MaxConnPerIP 3
</FilesMatch>
</IfModule>

httpdサーバーを再起動すれば自動的に設定が読み込まれ制限がかかる。

service httpd restart

接続確認はabコマンドで行う。接続先URLには最後に「/」を付けておく。

ab -n 100 -c 30 http://programresource.net/

サービス監視

参考にしたサイト:

http://server-setting.info/centos/monit_apache_1.html
http://server-setting.info/centos/monit_apache_2.html

サービスの監視にはmonitを使用し、サービスが生きている事を確認する。サービスが停止している場合、再起動をかける。また、メールで監視の開始/停止、障害発生の状況を連絡する事が出来る。

モジュールをインストール。

yum --enablerepo=epel install -y monit

httpdの監視にはalive.htmlにアクセスし取得できるか確認するので、下記内容を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>

監視設定ファイルは「/etc/monit.d」に作成し保存する。筆者の場合、dovecot、httpd、mysql、postfixを監視対象とし、sendalertにメール通知設定を記述している。詳細については上記参考サイトを参照して欲しい。

check process dovecot with pidfile /var/run/dovecot/master.pid
  start program = "/etc/init.d/dovecot start"
  stop program  = "/etc/init.d/dovecot stop"
  if failed port 110 protocol pop
    then restart
  group dovecot

 

check process httpd with pidfile /var/run/httpd/httpd.pid
    start program = "/etc/init.d/httpd restart"
    stop program = "/etc/init.d/httpd stop"
    if failed host exampledomain.net port 80
      protocol HTTP request /alive.html then restart
    group httpd

 

check process mysql 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
  group mysql

 

check process postfix with pidfile /var/spool/postfix/pid/master.pid
  start program = "/etc/init.d/postfix start" with timeout 60 seconds
  stop program  = "/etc/init.d/postfix stop"
  if failed port 25 protocol smtp
    then restart
  group postfix

 

set alert example@gmail.com with mail-format {
  from: admin@example.net
  subject: $SERVICE $EVENT at $DATE
  message:
Monit $ACTION $SERVICE at $DATE on $HOST:
$DESCRIPTION.
}

set mailserver example.net port 25 username "admin@example.net" password "パスワード"

設定ファイル作成後、monitサービスの開始及び自動起動を有効にしておく。

/etc/init.d/monit start
chkconfig monit on

monitの状態を確認したい場合、

monit status

で確認できるが、statusを確認するにはmonit.confの以下の行のコメントアウトを外しておく必要がある(外しておかないと「monit: error connecting to the monit daemon」と表示される)

set httpd port 2812
     allow localhost

後は自分の好みに合わせてカスタマイズを行う。

サクラVPSは完全に自力でゼロからサーバーを立ち上げるため自由度は高いが、設定やトラブル時に対処する知識と腕前は必要となるためLinuxのコマンドやネットワーク通信の仕組み、セキュリティについては勉強しておこう。

今回Part 1から6まで筆者が行った設定を覚え書き箇条書き程度に説明したが、参考元サイトにはより詳しく、メールフィルタリングの説明等も解説されているので参考元サイトも一通り目を通しておく事をお勧めする。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*