LINUX.ORG.RU
ФорумAdmin

Haproxy остаётся старый процесс после reload

 


1

1

Добрый день.

Сталкиваюсь постоянно с проблемой, что старые процессы haproxy остаются висеть на 80-м сокете после reload.

Система - debian разных версий. Например, 8.5.

Haproxy - 1.5.8, 1.6.4 (сталкивался в совсем разных версиях).

systemd, да, куда без него.

Обычная ситуация:

# cat /run/haproxy.pid 
17693


# ps auxf|grep haproxy
root      9813  0.0  0.1  12664  1552 pts/1    S+   11:33   0:00          \_ grep haproxy
haproxy  28308  0.0  0.2  42428  2944 ?        Ss   Aug30   1:13 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 23644
haproxy   4840  0.0  0.2  42428  2928 ?        Ss   Aug30   1:11 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 28315
haproxy   5477  0.0  0.2  42432  2928 ?        Ss   Aug30   1:11 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 4847
haproxy   4320  0.0  0.2  42428  2932 ?        Ss   Sep02   0:43 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 5483
haproxy  12241  0.0  0.2  42428  3064 ?        Ss   Sep02   0:42 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 4329
haproxy  20062  0.0  0.2  42428  2944 ?        Ss   Sep02   0:42 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 12249
haproxy  18867  0.0  0.2  42428  2856 ?        Ss   Sep02   0:37 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 20070
haproxy  32211  0.0  0.2  42428  3068 ?        Ss   Sep03   0:29 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 18876
haproxy    427  0.0  0.2  42428  2988 ?        Ss   Sep03   0:29 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 32217
haproxy   1779  0.0  0.2  42428  2932 ?        Ss   Sep03   0:29 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 436
haproxy  11346  0.0  0.2  42428  2928 ?        Ss   Sep03   0:26 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 1788
haproxy   6691  0.0  0.2  42432  2992 ?        Ss   Sep03   0:21 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 11354
haproxy   1876  0.0  0.2  42428  2944 ?        Ss   Sep04   0:10 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 6700
haproxy  17684  0.0  0.2  42428  2920 ?        Ss   04:30   0:04 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 1883
root     17689  0.0  0.0   4084   628 ?        Ss   04:30   0:00 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy  17692  0.0  0.6  42428  6256 ?        S    04:30   0:00  \_ /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
haproxy  17693  0.0  0.2  42428  2928 ?        Ss   04:30   0:04      \_ /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds

При этом, каждый из них слушает на сокете 80 и отвечает:

# netstat -nlp|grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17693/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17684/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1876/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6691/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11346/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1779/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      427/haproxy     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      32211/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18867/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      20062/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      12241/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4320/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5477/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4840/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      28308/haproxy   
unix  2      [ ACC ]     STREAM     LISTENING     136804890 20062/haproxy       /run/haproxy/admin.sock.20061.tmp
unix  2      [ ACC ]     STREAM     LISTENING     138008774 6691/haproxy        /run/haproxy/admin.sock.6690.tmp

То что отвечают разные процессы, видно тут:

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 4840</h2>
<p><b>pid = </b> 4840 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 4320</h2>
<p><b>pid = </b> 4320 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 18867</h2>
<p><b>pid = </b> 18867 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 18867</h2>
<p><b>pid = </b> 18867 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 427</h2>
<p><b>pid = </b> 427 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 18867</h2>
<p><b>pid = </b> 18867 (process #1, nbproc = 1)<br>

Пробовал править инит-скрипт, менял флаг -sf на -st - эффекта не дало.

Так-то haproxy работает, все инстансы отвечают нормально, без проблем, но конфиг используют каждый свой, старый :)

По netstat -np|grep <pid> по процессам ничего нету, т.е. не осталось какого-то висящего коннекта, из-за которого старый инстанс haproxy не хочет завершаться.

Кто-нибудь сталкивался с таким?

★★★★★
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.