VM 移动后 Haproxy 无法启动(Debian 8 [systemd])

VM 移动后 Haproxy 无法启动(Debian 8 [systemd])

我们在 Debian 8 虚拟机上运行 HAProxy 1.6.1。我将我们的 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),但我已手动恢复到旧内核,但新的问题仍然存在。

有人有什么想法吗?谢谢!

答案1

您是如何转向另外两个实例的?

我猜你一定已经安装了 haproxy 并在新的两个实例中复制了 haproxy.cfg 文件。请检查用户 haproxy(操作系统上的服务用户)是否存在?

检查 haproxy 状态并尝试运行不带 ./ 的命令。

如果您已经从源代码进行编译,请使用您以前的 ubuntu 机器验证这些设置。概要如下;

构建选项:TARGET = linux2628

CPU = 本机

CC=海湾合作委员会

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

选项 = USE_OPENSSL=1 USE_STATIC_PCRE=1

答案2

问题出在我最初的编译中使用了 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 重新编译后修复了该问题。

相关内容