2017年2月24日 星期五

healthcheck 的 checkpoint

我們使用 aws route53 的 dns failover 來決定現在的 ip 要指向哪一個 datacenter。dns failover 後面要綁一個 healtcheck 的 網址。我們的 healthcheck 檢查了下列項目:
  • Mysql 連線:做 select query ,看看能否拿到某個字串。
  • APC Cache:隨機存入一個字串,再取出這個字串來看看正不正確。有遇過只有 apc 掛掉的情況。
  • PHP 可以正確的執行:像是 php fatal error 的 http status 是 200,如果只偵測 non 200 status ,就會落入陷井。

全部都正確執行後,會 echo 'o' . 'k'; 然後再偵測 ok 這個字串。為什麼不是 echo 'ok'; 呢?因為有可能是設定錯誤,造成 server 吐 php code 的情況,若是吐 php code ,就沒辦法檢查出錯誤。正確執行會吐 ok 字串,不正確執行也會吐一些 error code ,error code 我們會這麼做

echo str_replace('ok', '@k', $err_msg);

這是為了避免 error code 會不小心出現 ok 的字串,例如 facebook 就含有 ok