Tự động chạy lại dịch vụ khi server đột tử

Khi website bạn có lượt truy cập nhiều đột ngột, có thể là đang bị tấn công hoặc service nào đó bị treo làm gián đoạn website, bạn sẽ mất một khoảng thời gian để tìm kiếm nguyên nhân và khắc phục.

Tuy nhiên, một điều bạn có thể làm ngay lập tức để giảm thời gian chết để sẵn sàng tốt hơn là tự động khởi động lại quá trình nếu nó down.

Chúng ta có thể làm việc này với giải pháp miễn phí, hết sức đơn giản - shell script.

Script này sẽ được thêm vào crontab, kiểm tra dịch vụ mỗi phút, nếu không thấy dịch vụ đang chạy nó sẽ tự đông start lên.

Mình sẽ làm ví dụ với Centos7 với các dịch vụ: Nginx, Php-fpm, Mariadb bên dưới.

Tạo file tên /opt/startifdown.sh với nội dung

Bash:
#!/bin/bash
#Scripts to start services if not running
ps -ef | grep nginx |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/nginx start > /dev/null
fi
ps -ef | grep php-fpm |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/php-fpm start > /dev/null
fi
ps -ef | grep mariadb |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/mariadb start > /dev/null
fi
Sau đó thêm script này vào crontab:

Bash:
$ crontab -e
# add below line
* * * * * /opt/startifdown.sh
12


Ok, vậy là đã xong. Bạn có test thử bằng cách shutdown Mariadb sau đó chờ 1 phút sau thử xem nó có tự start lại không nhé :D
 
Top