Содержит локализованный блэкпрокси очень медленно
Я развернул Shinyapps, используя стек: R, Docker и SharpProxy, и до сих пор инструменты были отличными, и пользователи были довольны. Однако я немного борюсь с балансировкой нагрузки, чтобы я мог масштабировать и перестать беспокоить пользователей при запуске обновлений решения.
Получив совет от https://www.shinyproxy.io/shinyproxy-containers/, я прошел через этот процесс, но с использованием https://github.com/openanalytics/shinyproxy-config-examples/tree/master/02-containerized-docker-engine контейнерный двигатель докера. Мое решение отлично работает, когда я запускаю java -jarinyproxy-2.0.3.jar без контейнера. Но теперь, когда я его контейнирую, он становится очень-очень медленным, даже если внутренняя сеть активна, и контейнеры разрушаются, когда я пытаюсь их открыть.
В данный момент я просто пытаюсь проверить, может ли работать контейнеризация SharpProxy без проблем, но без сбоев.
Моя конфигурация Nginx на сервере
server {
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name qnumsolutions.com www.qnumsolutions.com;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol $scheme;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/qnumsolutions.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/qnumsolutions.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Shinyproxy application.yml
proxy:
title: The Operational Intelligence Solution
logo-url: http://qnum.co.za/wp-content/uploads/2018/03/OI-Solution-Icon.png
landing-page: /
heartbeat-rate: 100000
heartbeat-timeout: 600000
port: 8080
authentication: simple
container-log-path: ./container-logs
admin-groups: admin
usage-stats-url: http://159.65.95.235:8086/write?db=shinyproxy_usagestats
# Example: 'simple' authentication configuration
users:
- name: info@qnum.co.za
password: prupr1.
groups: admin
docker:
url: http://localhost:2375
port-range-start: 20000
specs:
- id: OISolution1
description: Application is designed to help organisations use advanced analytics to manage product visibility and variance
container-cmd: ["R", "-e shiny::runApp('/root/hostedoi')"]
container-image: oisolution
container-volumes: ["/home/shiny/database:/mnt/persistent1"]
access-groups: admin
- id: OISolution2
description: Application is designed to help organisations use advanced analytics to manage product visibility and variance
container-cmd: ["R", "-e shiny::runApp('/root/hostedoi1')"]
container-image: oisolution1
container-volumes: ["/home/shiny/database:/mnt/persistent1"]
access-groups: admin
logging:
file:
shinyproxy.log
Dockerfile
FROM openjdk:8-jre
RUN mkdir -p /opt/shinyproxy/
RUN wget https://www.shinyproxy.io/downloads/shinyproxy-2.0.3.jar -O /opt/shinyproxy/shinyproxy.jar
COPY application.yml /opt/shinyproxy/application.yml
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]
И, наконец, sudo Docker PS дает
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc396c8bd26a ois-shinyproxy "java -jar /opt/shin…" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp clever_beaver
Дополнительные ссылки, с которыми я консультировался: https://fly.io/articles/load-balancing-a-fleet-of-docker-containers-using-fly/
Ваша помощь будет принята с благодарностью.
1 ответ
Кажется, есть проблема с вашим usage-stats-url
, Может быть, брандмауэр или что-то мешает ShinyProxy достичь этого пункта назначения? Я мог воспроизвести это медленное поведение, но оно исчезло, когда я прокомментировал эту строку.
Кроме того, есть некоторые ошибки в вашем application.yml
по поводу докера. Я немного изменил его и смог запустить его на моей локальной машине с такой конфигурацией (nginx.conf
и Dockerfile были слегка изменены, чтобы соответствовать моим потребностям docker-compose
):
proxy:
title: The Operational Intelligence Solution
logo-url: http://qnum.co.za/wp-content/uploads/2018/03/OI-Solution-Icon.png
landing-page: /
heartbeat-rate: 100000
heartbeat-timeout: 600000
port: 8080
authentication: simple
container-log-path: ./container-logs
admin-groups: admin
#usage-stats-url: http://159.65.95.235:8086/write?db=shinyproxy_usagestats
# Example: 'simple' authentication configuration
users:
- name: info@qnum.co.za
password: prupre35A21.
groups: admin
docker:
internal-networking: true
specs:
- id: 01_hello
display-name: Hello Application
description: Application which demonstrates the basics of a Shiny app
container-cmd: ["R", "-e", "shinyproxy::run_01_hello()"]
container-image: openanalytics/shinyproxy-demo
container-volumes: ["/tmp:/mnt/persistent1"]
container-network: shinyproxy_slow_default
access-groups: admin
- id: 06_tabsets
container-cmd: ["R", "-e", "shinyproxy::run_06_tabsets()"]
container-image: openanalytics/shinyproxy-demo
container-volumes: ["/tmp:/mnt/persistent1"]
container-network: shinyproxy_slow_default
access-groups: admin
logging:
file:
shinyproxy.log
Я управлял всем с docker-compose
, увидеть:
version: "3.1"
services:
web:
image: nginx:alpine
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
shinyproxy:
image: sp_test
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./application.yml:/opt/shinyproxy/application.yml