Невозможно подключить Redis к контейнеру linux в Docker Swarm - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь подключить Redis с помощью стека Exchage клиента, но столкнулся со странной проблемой. Итак, я создал простое консольное приложение для тестирования.

Тот же код работает, когда я создавал консольное приложение с. net core framework (автономный)

Я не мог понять из root причины. Может кто-нибудь пролить свет на это, пожалуйста.

Что работает

  • Пинг из windows контейнера в Redis
  • te lnet от windows контейнер к redis
  • команды redis-cli от windows контейнер к redis

Консольное приложение, построенное на -. net framework 4.7 .1 - пробная версия клиента 2.1.28, 2.0.600, 1.2.6

код

`

      Console.WriteLine("starting.....");
       var sr = new System.IO.StringWriter();

        try
        {
            var connectionstring = "redis:6379,resolveDns=True,ConnectTimeout=5000,SyncTimeout=6000,abortConnect=False,allowAdmin=True";
            var config = ConfigurationOptions.Parse(connectionstring);
            config.CommandMap = CommandMap.Create(new HashSet<string> { "SUBSCRIBE" }, false);              
            var cache = ConnectionMultiplexer.Connect(config, sr);

            Console.WriteLine($"is connected { cache.IsConnected }");

            var db =cache.GetDatabase();

            //the error occurs here
            db.StringSet("foo", "bar");

            db.StringGet("foo");
        }
        catch (Exception)
        {
            Console.WriteLine(sr.ToString());
            throw;
        }

        Console.ReadLine();
        Console.ReadLine();
        Console.ReadLine();
        return;`

приложение config

 <?xml version="1.0" encoding="utf-8"?>
  <configuration>
      <startup> 
          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />
      </startup>
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
  </configuration>

Docker рой с двумя узлами

  • linux (работает redis - альпийское изображение)
  • Windows 2016 (работает servercore 2016 lts как pnet изображение)

Журнал ошибок

подключен False redis: 6379, syncTimeout = 6000, allowAdmin = True, connectTimeout = 5000, abortConnect = False, resolDns = True, $ SUBSCRIBE =

Использование DNS для разрешения 'redis' ... 'redis' => 10.0.9.221 Подключение 10.0.9.221 : 6379 / Interactive ... BeginConnect: 10.0.9.221:6379 Указано 1 уникальных узла Запрос t ie -break от 10.0.9.221:6379> __Booksleeve_TieBreak ... Разрешение ответа конечных точек 00:00:05 ... Ожидание завершения задачи, IOCP: (Busy = 2, Free = 998, Min = 2, Max = 1000), РАБОЧИЙ: (Занято = 2, Свободно = 2045, Мин. = 2, Макс. = 2047) Подключено Interactive / 10.0.9.221: 6379 Рукопожатие сервера Настройка имени клиента: F295D97412DE Автоматическая настройка ... Отправка критического трассировщика: Интерактивный 10.0.9.221:6379 Запись в Interactive / 10.0.9.221: 6379: очистка исходящего буфера ECHO Начало чтения Не все задачи завершены без ошибок (из ReconfigureAsync # 1602, время ожидания 5000 мс), IOCP: (Busy = 0, Free = 1000, Min = 2 , Макс = 1000), РАБОЧИЙ: (Занято = 1, Свободно = 2046, Мин = 2, Макс = 2047) 10.0.9.221:6379 не отвечает Ожидание прерывателей связей ... Ожидание завершения задачи, IOCP: (Занято = 0, Свободно = 1000, Мин. = 2, Макс. = 1000), РАБОЧИЙ: (Занято = 1, Свободно = 2046, Мин. = 2, Макс. = 2047) Не все задачи выполнены корректно (из NominatePreferredMaster # 1839, время ожидания 50 мс), IOCP: ( Занят = 0, Свободен = 1000, Мин = 2, Макс = 1000), РАБОЧИЙ: (Занят = 1, Свободен = 2046, Мин = 2, Макс = 2047) 10.0.9.221:6379 не удалось назначить (W aitingForActivation) Мастера не обнаружены. 10.0.9.221:6379: Standalone v2.0.0, master; keep-alive: 00:01:00; int: ConnectedEstablishing; суб: н / д; не используется: DidNotRespond 10.0.9.221:6379: int ops = 8, qu = 0, qs = 5, qc = 0, wr = 0, socks = 1; sub ops = 0, qu = 0, qs = 0, qc = 0, wr = 0 Снимок циклического подсчета операций; int: 0 + 8 = 8 (0,80 операций / с; охватывает 10 с); sub: Syn c таймауты: 0; asyn c таймауты: 0; огонь и забудь: 0; последний пульс: -1 с go сброс неудачных соединений для повторной попытки ... сбой соединения: 10.0.9.221:6379 (Interactive, UnableToConnect): UnableToConnect (None, last-recv: 59) 10.0.9.221:6379/Interactive, Сброшено / ReadAsyn c, последнее: ECHO, источник: ResetNonConnected, невыполнено: 5, последнее чтение: 4s a go, последняя запись: 5s a go, keep-alive: 60 с, состояние: ConnectedEstablishing, mgr : 10 из 10 доступно, последнее сердцебиение: никогда, глобально: 5 с go, v: 2.1.28.64774 повторная попытка; осталось попыток: указано 2 ... 1 уникального узла Запрос t ie -break от 10.0.9.221:6379> __Booksleeve_TieBreak ... Разрешение ответа конечным точкам 00:00:05 ... Ожидание завершения задачи, IOCP: (Busy = 0, Свободно = 1000, Мин. = 2, Макс. = 1000), РАБОЧИЙ: (Занято = 1, Свободно = 2046, Мин. = 2, Макс. = 2047) Не все задачи выполнены правильно (из ReconfigureAsync # 1602, время ожидания 5000 мс), IOCP : (Занято = 0, Свободно = 1000, Мин = 2, Макс = 1000), РАБОЧИЙ: (Занято = 1, Свободно = 2046, Мин = 2, Макс = 2047) 10.0.9.221:6379 не ответил Ожидание прерывания связей. .. Ожидание завершения задачи, IOCP: (Занято = 0, Свободно = 1000, Мин = 2, Макс = 1000), РАБОЧИЙ: (Занято = 1, Свободно = 2046, Мин = 2, Макс = 2047) Не все задачи выполнены правильно (от NominatePreferredMaster # 1839, время ожидания 50 мс), IOCP: (Занято = 0, Свободно = 1000, Мин = 2, Макс = 1000), РАБОЧИЙ: (Занято = 1, Свободно = 2046, Мин = 2, Макс = 2047) 10.0.9.221:6379 не удалось назначить (WaitingForActivation) Нет хозяев обнаружено 10.0.9.221:6379: автономная версия 2.0.0, мастер; keep-alive: 00:01:00; int: ConnectedEstablishing; суб: н / д; не используется: DidNotRespond 10.0.9.221:6379: int ops = 16, qu = 0, qs = 5, qc = 0, wr = 0, socks = 2; sub ops = 0, qu = 0, qs = 0, qc = 0, wr = 0 Снимок циклического подсчета операций; int: 0 + 16 = 16 (1,60 операций / с; охватывает 10 с); sub: Syn c таймауты: 0; asyn c таймауты: 0; огонь и забудь: 0; последний пульс: -1 с go сброс неудачных соединений для повторной попытки ... повторная попытка; осталось попыток: задано 1 ... 1 уникальных узлов Запрос t ie -break от 10.0.9.221:6379> __Booksleeve_TieBreak ... Разрешение ответа конечным точкам 00:00:05 ... Ожидание завершения задачи, IOCP: (Busy = 0, Свободно = 1000, Мин. = 2, Макс. = 1000), РАБОЧИЙ: (Занято = 2, Свободно = 2045, Мин. = 2, Макс. = 2047) Не все задачи выполнены корректно (из ReconfigureAsync # 1602, время ожидания 5000 мс), IOCP : (Занято = 0, Свободно = 1000, Мин = 2, Макс = 1000), РАБОЧИЙ: (Занято = 1, Свободно = 2046, Мин = 2, Макс = 2047) 10.0.9.221:6379 не отвечает Ожидание прерывания связей. .. Ожидание завершения задачи, IOCP: (Занято = 0, Свободно = 1000, Мин = 2, Макс = 1000), РАБОЧИЙ: (Занято = 1, Свободно = 2046, Мин = 2, Макс = 2047) Не все задачи выполнены правильно (из NominatePreferredMaster # 1839, время ожидания 50 мс), IOCP: (Занято = 0, Свободно = 1000, Мин = 2, Макс = 1000), РАБОЧИЙ: (Занято = 1, Свободно = 2046, Мин = 2, Макс = 2047) 10.0 .9.221: не удалось назначить 6379 (WaitingForActivation). Мастера не обнаружены. 10.0.9.221:6379: Standalone v2.0.0, master; keep-alive: 00:01:00; int: ConnectedEstablishing; суб: н / д; не используется: DidNotRespond 10.0.9.221:6379: int ops = 24, qu = 0, qs = 5, qc = 0, wr = 0, socks = 3; sub ops = 0, qu = 0, qs = 0, qc = 0, wr = 0 Снимок циклического подсчета операций; int: 0 + 24 = 24 (2,40 операций / с; охват 10 с); sub: Syn c таймауты: 0; asyn c таймауты: 0; огонь и забудь: 0; последний пульс: -1 с go Стартовый пульс ...

Необработанное исключение: StackExchange.Redis.RedisConnectionException: Нет активного / доступного соединения для обслуживания этой операции: SET foo; UnableToConnect (None, last-recv: 59) 10.0.9.221:6379/Interactive, Flushed / ReadAsyn c, последний: ECHO, источник: ResetNonConnected, невыполненный: 5, последний просмотр: 4s a go, last- запись: 5s a go, поддержание активности: 60 с, состояние: ConnectedEstablishing, мгр: 10 из 10 доступно, последнее сердцебиение: никогда, глобально: 5s a go, v: 2.1.28.64774, м c: 1/1/0, доступно: 10 из 10, clientName: F295D97412DE, IOCP: (занято = 0, свободно = 1000, мин = 2, макс = 1000), РАБОЧИЙ: (занято = 0, свободно = 2047, мин = 2, Max = 2047), v: 2.1.28.64774 ---> StackExchange.Redis.RedisConnectionException: UnableToConnect (None, last-recv: 59) 10.0.9.221:6379/Interactive, Flushed / ReadAsyn c, последний: ECHO, происхождение: ResetNonConnected, невыполнено: 5, последнее чтение: 4s a go, последняя запись: 5s a go, keep-alive: 60s, состояние: ConnectedEstablishing, мгр: 10 из 10 доступно, последний пульс : never, global: 5s a go, v: 2.1.28.64774 --- Конец трассировки стека внутренних исключений --- в StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl [T] (Сообщение сообщения, Res ultProcessor 1 processor, ServerEndPoint server) at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor 1 процессор, сервер ServerEndPoint) в StackExchange.Redis.RedisDatabase.StringSet (ключ RedisKey, значение RedisValue, Nullable 1 expiry, When when, CommandFlags flags) at Redis.mk1.Program.Main(String[] args) in C:\Users\karthick.chandran\source\repos\Redis.mk1\Redis.mk1\Program.cs:line 93

...