38 lines
1.2 KiB
Markdown
38 lines
1.2 KiB
Markdown
# 2026-07-10 — Комбинированный фикс
|
|
|
|
## Два корня
|
|
1. kube-vip ARP без лидера → флаппинг между 4 нодами при каждом новом TCP
|
|
2. Werkzeug всегда `Connection: close` → новый TCP на каждый запрос
|
|
|
|
По отдельности не чинят. Вместе должны.
|
|
|
|
## План
|
|
### 1. kube-vip: vip_leaderelection=true
|
|
```bash
|
|
kubectl set env ds/shturval-vip -n kube-vip vip_leaderelection=true
|
|
```
|
|
|
|
### 2. Flask: Gunicorn + gevent
|
|
```python
|
|
# app.py
|
|
if __name__ == '__main__':
|
|
import gunicorn.app.base
|
|
class StandaloneApp(gunicorn.app.base.BaseApplication):
|
|
def __init__(self, app, options=None):
|
|
self.application = app; self.options = options or {}
|
|
super().__init__()
|
|
def load_config(self):
|
|
for k, v in self.options.items(): self.cfg.set(k, v)
|
|
def load(self): return self.application
|
|
StandaloneApp(app, {
|
|
'bind': '0.0.0.0:5000', 'workers': 2,
|
|
'worker_class': 'gevent', 'timeout': 120, 'keepalive': 75,
|
|
}).run()
|
|
```
|
|
|
|
### 3. requirements.txt
|
|
flask, gunicorn, gevent
|
|
|
|
### 4. ingress
|
|
proxy_request_buffering: off (уже)
|