Django 部署在EKS上的博客系统的gunicorn服务器变为;“工人超时”;

Django 部署在EKS上的博客系统的gunicorn服务器变为;“工人超时”;,django,docker,kubernetes,gunicorn,amazon-eks,Django,Docker,Kubernetes,Gunicorn,Amazon Eks,我们正在将以前部署在EC2上的博客系统迁移到AWS EKS集群。在现有系统的EC2上,它在两个容器中运行,一个是web服务器(nginx)容器,另一个是AP服务器(django+gunicorn)容器,可以通过浏览器正常访问。因此,当我以同样的方式将其部署到AWS EKS上的节点(EC2)时,我无法从浏览器访问它,它显示为“502坏网关”。显示消息“超时(pid:18294)”。我们目前正在调查原因,但目前的情况是,我们不知道。如果有人有任何想法,如果你能教我,我将不胜感激 圆木角・地位 roo

我们正在将以前部署在EC2上的博客系统迁移到AWS EKS集群。在现有系统的EC2上,它在两个容器中运行,一个是web服务器(nginx)容器,另一个是AP服务器(django+gunicorn)容器,可以通过浏览器正常访问。因此,当我以同样的方式将其部署到AWS EKS上的节点(EC2)时,我无法从浏览器访问它,它显示为“502坏网关”。显示消息“超时(pid:18294)”。我们目前正在调查原因,但目前的情况是,我们不知道。如果有人有任何想法,如果你能教我,我将不胜感激

圆木角・地位

root@blogsystem-apserver01:/# systemctl status gunicorn
● gunicorn.service - gunicorn daemon
     Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-05-09 08:57:19 UTC; 5 days ago
   Main PID: 18291 (gunicorn)
      Tasks: 4 (limit: 4636)
     Memory: 95.8M
     CGroup: /kubepods/besteffort/podd270872c-cc5b-4a3b-92ed-f463ee5f5d77/1eafc79ffd656ff1c1bc39175ee06c7a5ca8692715c5e2bfe2f979d8718411ba/system.slice/gunicorn.service
             ├─18291 /home/ubuntu/python3/bin/python /home/ubuntu/python3/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/socket/myproject.sock myproject.wsgi:a
pplication
             ├─18295 /home/ubuntu/python3/bin/python /home/ubuntu/python3/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/socket/myproject.sock myproject.wsgi:a
pplication
             ├─18299 /home/ubuntu/python3/bin/python /home/ubuntu/python3/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/socket/myproject.sock myproject.wsgi:a
pplication
             └─18300 /home/ubuntu/python3/bin/python /home/ubuntu/python3/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/socket/myproject.sock myproject.wsgi:a
pplication

May 09 08:57:20 blogsystem-apserver01 gunicorn[18291]: [2021-05-09 08:57:20 +0000] [18291] [INFO] Starting gunicorn 20.0.4
May 09 08:57:20 blogsystem-apserver01 gunicorn[18291]: [2021-05-09 08:57:20 +0000] [18291] [INFO] Listening at: unix:/home/ubuntu/socket/myproject.sock (18291)
May 09 08:57:20 blogsystem-apserver01 gunicorn[18291]: [2021-05-09 08:57:20 +0000] [18291] [INFO] Using worker: sync
May 09 08:57:20 blogsystem-apserver01 gunicorn[18293]: [2021-05-09 08:57:20 +0000] [18293] [INFO] Booting worker with pid: 18293
May 09 08:57:20 blogsystem-apserver01 gunicorn[18294]: [2021-05-09 08:57:20 +0000] [18294] [INFO] Booting worker with pid: 18294
May 09 08:57:20 blogsystem-apserver01 gunicorn[18295]: [2021-05-09 08:57:20 +0000] [18295] [INFO] Booting worker with pid: 18295
May 09 08:57:59 blogsystem-apserver01 gunicorn[18291]: [2021-05-09 08:57:59 +0000] [18291] [CRITICAL] WORKER TIMEOUT (pid:18293)
May 09 08:58:00 blogsystem-apserver01 gunicorn[18299]: [2021-05-09 08:58:00 +0000] [18299] [INFO] Booting worker with pid: 18299
May 09 08:58:01 blogsystem-apserver01 gunicorn[18291]: [2021-05-09 08:58:01 +0000] [18291] [CRITICAL] WORKER TIMEOUT (pid:18294)
May 09 08:58:02 blogsystem-apserver01 gunicorn[18300]: [2021-05-09 08:58:02 +0000] [18300] [INFO] Booting worker with pid: 18300
root@blogsystem-apserver01:/# 
进一步调查 我已经研究了各种事情,但我不能得出结论,但似乎有可能通过将gunicorn的“sync”工作者更改为“givent”工作者来解决

参考:

我试图编辑gunicorn配置文件并将其更改为“givent”工作程序,如下所示,但当我重新启动gunicorn并查看状态时,它显示“运行时错误:gevent worker需要gevent 1.4或更高版本”,我无法启动gunicorn。然后,我安装了一个版本为1.4或更高版本的gevent,并带有“python3-m pip install gevent”,但再次显示“RuntimeError:gevent worker需要gevent 1.4或更高版本”。我想这件事也可能与上面提到的gunicorn的“工人超时”有关,所以如果您有任何解决办法,如果您能告诉我,我将不胜感激

・gunicorn配置文件

(python3) ubuntu@blogsystem-apserver01:/etc/systemd/system$ more gunicorn.service 
[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/myproject
ExecStart=/home/ubuntu/python3/bin/gunicorn --access-logfile - --workers 3 --worker-class gevent --bind unix:/home/ubuntu/socket/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target
(python3) ubuntu@blogsystem-apserver01:/etc/systemd/system$ 
・古尼康状态

root@blogsystem-apserver01:/etc/systemd/system# systemctl status gunicorn
● gunicorn.service - gunicorn daemon
     Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sat 2021-05-15 02:30:08 UTC; 1s ago
    Process: 19182 ExecStart=/home/ubuntu/python3/bin/gunicorn --access-logfile - --workers 3 --worker-class gevent --bind unix:/home/ubuntu/socket/myproject.sock myproject.wsgi:a
pplication (code=exited, status=1/FAILURE)
   Main PID: 19182 (code=exited, status=1/FAILURE)

May 15 02:30:08 blogsystem-apserver01 gunicorn[19182]:   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
May 15 02:30:08 blogsystem-apserver01 gunicorn[19182]:   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
May 15 02:30:08 blogsystem-apserver01 gunicorn[19182]:   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
May 15 02:30:08 blogsystem-apserver01 gunicorn[19182]:   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
May 15 02:30:08 blogsystem-apserver01 gunicorn[19182]:   File "/home/ubuntu/python3/lib/python3.8/site-packages/gunicorn/workers/ggevent.py", line 16, in <module>
May 15 02:30:08 blogsystem-apserver01 gunicorn[19182]:     raise RuntimeError("gevent worker requires gevent 1.4 or higher")
May 15 02:30:08 blogsystem-apserver01 gunicorn[19182]: RuntimeError: gevent worker requires gevent 1.4 or higher
May 15 02:30:08 blogsystem-apserver01 gunicorn[19182]: ]
May 15 02:30:08 blogsystem-apserver01 systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
May 15 02:30:08 blogsystem-apserver01 systemd[1]: gunicorn.service: Failed with result 'exit-code'.
root@blogsystem-apserver01:/etc/systemd/system#
・安装gevent worker后重新启动后的Gunicorn状态

root@blogsystem-apserver01:/etc/systemd/system# systemctl restart gunicorn
root@blogsystem-apserver01:/etc/systemd/system# 
root@blogsystem-apserver01:/etc/systemd/system# systemctl status gunicorn
● gunicorn.service - gunicorn daemon
     Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sat 2021-05-15 03:08:42 UTC; 1s ago
    Process: 19196 ExecStart=/home/ubuntu/python3/bin/gunicorn --access-logfile - --workers 3 --worker-class gevent --bind unix:/home/ubuntu/socket/myproject.sock myproject.wsgi:a
pplication (code=exited, status=1/FAILURE)
   Main PID: 19196 (code=exited, status=1/FAILURE)

May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "/home/ubuntu/python3/lib/python3.8/site-packages/gunicorn/workers/ggevent.py", line 16, in <module>
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:     raise RuntimeError("gevent worker requires gevent 1.4 or higher")
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]: RuntimeError: gevent worker requires gevent 1.4 or higher
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]: ]
May 15 03:08:42 blogsystem-apserver01 systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
May 15 03:08:42 blogsystem-apserver01 systemd[1]: gunicorn.service: Failed with result 'exit-code'.
root@blogsystem-apserver01:/etc/systemd/system# 
root@blogsystem-apserver01:/etc/systemd/system#systemctl重新启动gunicorn
root@blogsystem-apserver01:/etc/systemd/system#
root@blogsystem-apserver01:/etc/systemd/system#systemctl状态gunicorn
● gunicorn.service-gunicorn守护进程
已加载:已加载(/etc/systemd/system/gunicorn.service;已启用;供应商预设:已启用)
活动:自Sat 2021-05-15 03:08:42 UTC以来失败(结果:退出代码);1秒前
进程:19196 ExecStart=/home/ubuntu/python3/bin/gunicorn--access日志文件--workers 3--worker类gevent--bind unix:/home/ubuntu/socket/myproject.sock myproject.wsgi:a
应用程序(代码=退出,状态=1/失败)
主PID:19196(代码=退出,状态=1/故障)
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:文件“”,第975行,在“查找”和“加载”中解锁
5月15日03:08:42 blogsystem-apserver01 gunicorn[19196]:文件“”,第671行,已加载
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:exec_模块中第783行的文件“”
5月15日03:08:42 blogsystem-apserver01 gunicorn[19196]:文件“”,第219行,在“调用”中删除了“帧”
5月15日03:08:42 blogsystem-apserver01 gunicorn[19196]:文件“/home/ubuntu/python3/lib/python3.8/site packages/gunicorn/workers/ggevent.py”,第16行
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:引发运行时错误(“gevent worker需要gevent 1.4或更高版本”)
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:运行时错误:gevent worker需要gevent 1.4或更高版本
5月15日03:08:42 blogsystem-apserver01 gunicorn[19196]:]
May 15 03:08:42 blogsystem-apserver01 systemd[1]:gunicorn.service:主进程退出,代码=退出,状态=1/失败
May 15 03:08:42 blogsystem-apserver01 systemd[1]:gunicorn.service:失败,结果为“退出代码”。
root@blogsystem-apserver01:/etc/systemd/system#

我自己解决了。对不起,我吵闹了

原因是现有环境(AWS)中最初使用的RDS专有网络与新建AWS EKS集群的专有网络不同。因此,AP服务器无法连接到RDS,gunicorn超时。当我在同一个VPC中安装ESK和RDS时,可以通过浏览器访问,问题就解决了

root@blogsystem-apserver01:/etc/systemd/system# systemctl restart gunicorn
root@blogsystem-apserver01:/etc/systemd/system# 
root@blogsystem-apserver01:/etc/systemd/system# systemctl status gunicorn
● gunicorn.service - gunicorn daemon
     Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sat 2021-05-15 03:08:42 UTC; 1s ago
    Process: 19196 ExecStart=/home/ubuntu/python3/bin/gunicorn --access-logfile - --workers 3 --worker-class gevent --bind unix:/home/ubuntu/socket/myproject.sock myproject.wsgi:a
pplication (code=exited, status=1/FAILURE)
   Main PID: 19196 (code=exited, status=1/FAILURE)

May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:   File "/home/ubuntu/python3/lib/python3.8/site-packages/gunicorn/workers/ggevent.py", line 16, in <module>
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]:     raise RuntimeError("gevent worker requires gevent 1.4 or higher")
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]: RuntimeError: gevent worker requires gevent 1.4 or higher
May 15 03:08:42 blogsystem-apserver01 gunicorn[19196]: ]
May 15 03:08:42 blogsystem-apserver01 systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
May 15 03:08:42 blogsystem-apserver01 systemd[1]: gunicorn.service: Failed with result 'exit-code'.
root@blogsystem-apserver01:/etc/systemd/system#