Итак, у меня работает несколько виртуальных машин, для которых я хотел бы иметь (упрощенную настройку), где у меня есть один хост (10.100.10.1) для Rancher и один хост (10.100.10.4) для запуска контейнеров. Я установил Rancher server 1.6.25 на управляющую машину и версию Docker CE 18.06.1 ~ ce ~ 3-0 ~ ubuntu на обеих машинах. Оба они работают на Ubuntu 18.04 LTS.
На управляющей машине у меня запущен nginx со следующей настройкой https://pastebin.com/KgCxQdfH, поэтому он направляет трафик 80 на 8080. Rancher запускался с
sudo docker run -d -v <host_vol>:/var/lib/mysql --restart=unless-stopped -p 8080:8080 rancher/server.
Я также запускал sudo ufw allow 500 / udp и sudo ufw allow 4500 / udp на обеих машинах. Также мне пришлось сделать https://docs.docker.com/install/linux/linux-postinstall/#specify-dns-servers-for-docker, так как он выдавал ошибку, но не делал этого.
Проблема в том, что когда я пытаюсь добавить хост, у меня возникают проблемы с его регистрацией, и даже после того, как ему удается подключиться, Rancher изо всех сил пытается поддерживать соединение. Когда я регистрирую агента, он сначала выдает следующее:
time=“2018-12-17T13:23:28Z” level=info msg=“Host not registered yet. Sleeping 1 second and trying again. reportedUuid=a0ca6f30-a804-4227-5532-8c2692673e56 Attempt=12”
time=“2018-12-17T13:23:29Z” level=info msg=“Host not registered yet. Sleeping 1 second and trying again. reportedUuid=a0ca6f30-a804-4227-5532-8c2692673e56 Attempt=13”
time=“2018-12-17T13:23:30Z” level=info msg=“Host not registered yet. Sleeping 1 second and trying again. reportedUuid=a0ca6f30-a804-4227-5532-8c2692673e56 Attempt=14”
…
time=“2018-12-17T12:28:57Z” level=error msg=“Failed to get connection token for host-api startup: Reached max retry attempts for getting token”
Потом через время подключается:
time=“2018-12-17T13:23:31Z” level=info msg=“Connecting to proxy.” url=“ws://10.100.10.1/v1/connectbackend?token=token”
Это занимает больше времени, чем я привык, и несколько раз он полностью выходил из строя, что означало, что я начал получать 401 сообщение (может быть, токен просрочен?) От 10.100.10.1. Но даже после того, как мне удалось подключить его, хост продолжает отключаться => Reconnecting -state в пользовательском интерфейсе. Затем в журналах серверов-владельцев ранчо я получаю следующее:
2018-12-17 13:24:06,050 ERROR [3a6531c0-b638-4494-bcad-2ee79553901e:3725] [instance:111] [instance.start->(InstanceStart)] [] [ecutorService-4] [i.c.p.process.instance.InstanceStart] Failed [Dependencies readiness error instance is not running] for instance [111]
2018-12-17 13:24:07,047 ERROR [7c3e0b91-7037-4df2-96bd-634aba7eca39:3732] [instance:112] [instance.start->(InstanceStart)] [] [ecutorService-3] [i.c.p.process.instance.InstanceStart] Failed [Dependencies readiness error instance is not running] for instance [112]
2018-12-17 13:24:07,048 ERROR [c995c17c-6e33-4308-b0e3-f4ded72ca0dc:3736] [instance:113] [instance.start->(InstanceStart)] [] [ecutorService-5] [i.c.p.process.instance.InstanceStart] Failed [Dependencies readiness error instance is not running] for instance [113]
2018-12-17 13:24:11,644 ERROR [:] [] [] [] [TaskScheduler-1] [i.c.p.a.s.ping.impl.PingMonitorImpl ] Failed to get ping from agent [43] count [3]
2018-12-17 13:24:16,645 ERROR [:] [] [] [] [TaskScheduler-1] [i.c.p.a.s.ping.impl.PingMonitorImpl ] Failed to get ping from agent [43] count [4]
2018-12-17 13:24:21,645 ERROR [:] [] [] [] [TaskScheduler-1] [i.c.p.a.s.ping.impl.PingMonitorImpl ] Failed to get ping from agent [43] count [5]
2018-12-17 13:24:26,646 ERROR [:] [] [] [] [TaskScheduler-1] [i.c.p.a.s.ping.impl.PingMonitorImpl ] Failed to get ping from agent [43] count [6]
2018-12-17 13:24:26,648 ERROR [:] [] [] [] [TaskScheduler-1] [i.c.p.a.s.ping.impl.PingMonitorImpl ] Scheduling reconnect for agent [43] host [8] count [6]
Таким образом, виртуальная машина, которую я добавил, постоянно отключается. Это упрощенное объяснение проблемы, поэтому, если требуется дополнительная информация, я могу ее предоставить, но что именно может быть неправильным в настройке со следующими ограничениями:
A) Проблемы с регистрацией хозяина на ранчо. Это могло произойти так долго, что он продолжает выдавать 401: Не удалось получить клиента ранчо для запуска host-api: Bad response statusCode [401]. Состояние [401 неавторизовано]. Тело: [code = Unauthorized, baseType = error, message = Unauthorized] от [http://10.100.10.1/v1]
Б) Проблемы с сохранением хоста в активном состоянии, если он зарегистрирован, он все время переходит в режим «Отключен / переподключен», время от времени появляется «Активный».
C) Если я пингую, заворачиваю и т. д. Хосты, кажется, что трафик проходит с хостов нормально.
Я просто полностью пропустил nginx, и у меня был ранчо-сервер, работающий напрямую на 80-м порту (-p 80: 8080), что совсем не помогло с проблемой.
Во-вторых, мы рекомендуем отключить ufw на всех хостах. Было очень сложно заставить ufw работать с Rancher. Между ними существует спор о написании определенных правил iptable, вызывающих странные проблемы. Можете ли вы попробовать без ufw и посмотреть, остались ли проблемы?
Я пробовал вообще отключить ufw на хостах, но это тоже не помогло.
Какая маска подсети назначенных хосту IP-адресов? В оверлейной сети Rancher используется 10.42.0.0/16 (по умолчанию), и если будут обнаружены какие-либо перекрывающиеся сети, это приведет к нежелательным результатам. Также, если вы можете попробовать выполнить tcpdump трафика, вы можете найти что-нибудь полезное (если вообще возникнут проблемы на сетевом уровне). [Настройка, которую вы пытаетесь выполнить, является самой базовой настройкой, которая была многократно проверена бесчисленным количеством пользователей. Так что я почти уверен, что это проблема config / network / какой-то другой локальной проблемы.]
На хосте Rancher это 10.100.10.224/27 (фактический IP-адрес машины Rancher - 0,229, попытался упростить исходный пост), но он подключен как подсеть к другой сети. Придется исследовать еще немного, могут ли там быть какие-то конфликтующие сети.
Хост отправляет ответ ping на сервер ранчо, используя веб-сокеты, может ли что-нибудь помешать этим пакетам? Какие-либо правила брандмауэра или некоторые настройки Linux sysctl?
Агенты подключаются к ранчо / серверу с помощью веб-сокетов. Если у них будет тайм-аут, это будет проблемой. Можете ли вы проверить конфигурацию nginx, правильно ли настроены веб-сокеты?