Add Me!Закрыть меню навигации
Login
Добавь меня!Открытое Меню Категорий

[CookBook] MySQL daemon under Supervisor control on CentOS 6.6

Наблюдались проблемы с падением демона mysql. Посоветовали запускать его под контролем Supervisor. Что для этого нужно спотрим далее

Нарезаем нужные компоненты:

# Install Python setup tools
yum install python-setuptools

# Install supervisord
easy_install supervisor

# Make default config
echo_supervisord_conf > /etc/supervisord.conf

# Make autoload config deirectory
mkdir /etc/supervisord.d/

# Add autoloading from directory
echo -e "[include]\nfiles = /etc/supervisord.d/*.conf" >> /etc/supervisord.conf

Добавляем скрипт для supervisor-демона /etc/init.d/supervisord со следующим кодом:

#!/bin/sh

# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"

start(){
    echo -n $"Starting $prog: "
    daemon $prog_bin --pidfile $PIDFILE
    [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
    echo
}

stop(){
    echo -n $"Shutting down $prog: "
    [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
    echo
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status $prog
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        ;;
esac

Добавляем в автозагрузку

# Make script executable
chmod +x /etc/rc.d/init.d/supervisord

# Add daemon script to autolod
chkconfig --add supervisord
chkconfig supervisord on

Если нужно открыть доступ к веб-интерфейсу супервизора, то нужно раскомментировать соответствующие строки в конфиге, указать логин и пароль, если это нужно и открыть порт для доступа со своего IP.

# Uncomment next lines for access to supervisor web interface with next username and password
[inet_http_server]
port=9001
username=SupervisorWebLogin
password=SupervisorWebSecretPassword

# Add iptables rule for accept incomming connection to local 9001 port from your 10.20.30.40 client IP
iptables -A INPUT -p tcp --dport 9001 ! -s 10.20.30.40 -j REJECT --reject-with tcp-reset

Добавляем конфиг для запуска mysqld в /etc/supervisord.d/mysqld.conf

[program:mysqld_safe]
priority = 100
command = /usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/bin/mysqld_safe
redirect_stderr = true
stdout_logfile = /var/log/mysqld.supervisor.log
stderr_logfile = /var/log/mysqld.supervisor.error.log
stdout_events_enabled = true
startsecs = 30
autorestart = true

Запускаем и проверяем:

# Start supervisord
service supervisord start

# Check status
supervisorctl status

Через некоторое время должен запуститься наш сервис и в веб-интерфейсе мы должны увидеть следующее

laptop_20141228__20:25:28

Дополнительно, для удобства и успокоения души можно, перенести файлы (sock, pid, lock, log) в нужные места и не оставлять их в /tmp. На Supervisor дополнительно можно повесить и другие сервисы или скрипты, которые нужно запускать при их падении.

Автор записи Мастер топоров

Календарь

Июль 2017
Пн Вт Ср Чт Пт Сб Вс
« Апр    
 12
3456789
10111213141516
17181920212223
24252627282930
31  
DeadLock