Назад | Перейти на главную страницу

Haproxy не запускается после перемещения виртуальной машины (Debian 8 [systemd])

Мы запускаем HAProxy 1.6.1 на виртуальных машинах Debian 8. Я перемещал наши 2 экземпляра на виртуальную машину другого размера, однако, когда я перезагружался, они не возвращались.

Я даже не могу запустить бинарный файл haproxy. Вот что я получаю, когда пытаюсь:

  ./haproxy
  Illegal Instruction

  sudo ./haproxy
  [no output]

  ./haproxy -v
  Illegal Instruction

  sudo/haproxy -v
  [no output]

То же самое, если я попытаюсь проверить конфигурацию с помощью -c -f (хотя я не думаю, что это проблема конфигурации).

Вот что у меня в kern.log:

  Mar  7 11:41:41 rproxyws1 kernel: traps: haproxy[4031] trap invalid opcode ip:4843a0 sp:7fff51856ac8 error:0 in haproxy[400000+cf000]

Одна вещь, которая, похоже, действительно произошла, - это обновление ядра во время перехода (с 4.1.5 на 4.4.0), но я вручную повторно переключился на старое ядро, но новые проблемы остались.

У кого-нибудь есть идеи!? Спасибо!

Проблема оказалась в том, что я использовал параметр CPU = native в исходной компиляции. По-видимому, это плохая идея для виртуализированных сред, так как я могу сломаться. Я должен был прочитать руководство внимательнее:

You may also choose your CPU to benefit from some optimizations. This is
particularly important on UltraSparc machines. For this, you can assign
one of the following choices to the CPU variable :

  - i686 for intel PentiumPro, Pentium 2 and above, AMD Athlon
  - i586 for intel Pentium, AMD K6, VIA C3.
  - ultrasparc : Sun UltraSparc I/II/III/IV processor
  - **native : use the build machine's specific processor optimizations. Use with
    extreme care, and never in virtualized environments (known to break).**
  - generic : any other processor or no CPU-specific optimization. (default)

Перекомпиляция с CPU = generic исправила это.

Как вы перешли к двум другим экземплярам?

Я предполагаю, что вы, должно быть, установили haproxy и скопировали файл haproxy.cfg в новые два экземпляра. Убедитесь, что там присутствует пользователь haproxy (служебная ОС useron)?

Проверьте статус haproxy, а также попробуйте запустить команду без ./.

Если вы скомпилировали из исходного кода, проверьте эти настройки на своих предыдущих машинах с Ubuntu. Симопсис выглядит следующим образом;

Параметры сборки: TARGET = linux2628

CPU = родной

CC = gcc

CFLAGS = -O2 -march = native -g -fno-strict-aliasing

ОПЦИИ = USE_OPENSSL = 1 USE_STATIC_PCRE = 1