Я использовал докеры для создания кластера, состоящего из 1 менеджера и 2 рабочих, каждый на vm (созданный докер-машиной). Я создал «службу cdn», которая кэширует или передает запрос на бэкэнд (контейнер tomcat, на порт 8080). Моя докер версия 1,13-код2Docker swarm с nginx в качестве кеша: 502 плохой шлюз
Это конфигурационный файл моего Nginx изображения:
proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_zone:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_methods GET HEAD POST;
proxy_cache_valid 200 206 100m;
proxy_ignore_headers Set-Cookie;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Headers' 'Range';
server {
listen 80;
server_name 172.17.0.1;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location = /example-av1.mpd {
add_header 'Access-Control-Allow-Origin' '*';
proxy_cache my_zone;
add_header X-Proxy-Cache $upstream_cache_status;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://172.17.0.1:8700/shaka-player-master/media/example-av1.mpd;
}
}
проблема заключается в следующем: Я создал наложенной сети под названием «MyNet»
когда я создать сервис:
docker service create --name nginx-cdn --network mynet --mode global --publish mode=host,target=80,published=9500,protocol=tcp *myimage*
при условии, что мои узлы кластера 192.168.99.103-104-105, и сервис на порту 9500, Если я указываю 192.168.99.103
(или 104, или 105) :9500/example-av1.mpd
, то есть 502 плохой шлюз, вместо запроса перенаправления на бэкэнд.
Эта проблема также относится к докерной версии 1.12.
Как решить эту проблему?
Я не уверен, что ваше окружение, но 172.17.0.1, кажется, сеть моста по умолчанию и, возможно, не накладывать. Можете ли вы предоставить команду 'docker network create', которая создала' mynet' и результат 'docker network inspect mynet'? – minamijoyo
Я думаю, что у вас есть право .. я бы хотел, но я не знаю, как это сделать. Я думаю, что я должен приложить контейнер tomcat (просто) к сети mynet overlay (swarm scoped), но я не знаю, как из-за узлов моего кластера находятся внутри виртуальных машин, а контейнер tomcat - в хосте. – pier92
это выход DOCKER сети проверить MyNet: Config ": [{ " подсеть ": "10.0.0.0/24", "шлюз": "10.0.0.1" } ] "IPv4-адрес":" 10.0. 0,4/24 ", " Peers ": [{ " Name ":" manager-dash-b31a241cf6f1 ", " IP ":" 192.168.99.103 " }, {" Name ":" worker-dash-2- faxt1011b5c987a ", " IP ":" 192.168.99.104 "и другие материалы, которые я не могу показать здесь. из-за пространства. Вы должны знать, что эта команда находится внутри vm. От хоста я не вижу эту сеть.В mynet можно увидеть 3 сверстников (1 vm-manager и 2 vm-workers). – pier92