虚拟机迁移后,Haproxy无法启动(Debian 8 )

我们在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检查configuration(尽pipe我不认为这是configuration问题)。

以下是我在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),但我已经手动重新引导到旧的内核,但是新的问题依然存在。

有没有人有任何想法!? 谢谢!

你是怎么转移到另外两个实例的?

我想你一定已经安装了haproxy并且在新的两个实例中复制了haproxy.cfg文件。请检查用户haproxy(service useron OS)是否存在?

检查haproxy状态,并尝试运行没有./的命令。

如果你已经从源代码编译,请用你以前的Ubuntu机器validation这些设置。这个概要是这样的;

构build选项:TARGET = linux2628

CPU =本机

CC = gcc

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

OPTIONS = USE_OPENSSL = 1 USE_STATIC_PCRE = 1

问题原来是我在原始编译中使用了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 =通用固定它。