หลายท่านใช้งาน systemd เพื่อ start service ต่างๆ ปัญหาหนึ่งที่พบคือ haproxy ไม่ยอม auto start หลังการ reboot ถึงแม้ว่าจะได้ทำการ enable service ผ่านทางคำสั่งด้านล่างแล้ว
# systemctl enable haproxy
สาเหตุของปัญหา คือการที่ systemd พยายาม start haproxy ก่อนที่ network service จะทำงานครบ ทำให้ bind ip:port ไม่ได้
อาการก่อนแก้ไข (หลัง reboot, haproxy จะไม่อัพ และแสดงผลแบบนี้)
# systemctl status haproxy -l ● haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled) Active: inactive (dead) since Tue 2016-10-25 12:06:43 ICT; 1min 41s ago Process: 422 ExecStart=/usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 422 (code=exited, status=0/SUCCESS) Oct 25 12:06:42 test-lb-tv systemd[1]: Started HAProxy Load Balancer. Oct 25 12:06:42 test-lb-tv systemd[1]: Starting HAProxy Load Balancer... Oct 25 12:06:43 test-lb-tv haproxy-systemd-wrapper[422]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds Oct 25 12:06:43 test-lb-tv haproxy-systemd-wrapper[422]: [ALERT] 298/120643 (441) : Starting frontend http-in-web: cannot bind socket [103.xx.xx.xx:80] Oct 25 12:06:43 test-lb-tv haproxy-systemd-wrapper[422]: haproxy-systemd-wrapper: exit, haproxy RC=256
ซึ่งจะสังเกตเห็นบรรทัดที่บอกว่า haproxy ไม่สามารถ bind socket ได้
วิธีแก้ไข
ใส่บรรทัดนี้ไปใน /etc/sysctl.conf
# fix haproxy not start with systemd net.ipv4.ip_nonlocal_bind=1
หลังแก้ไขใส่บรรทัดดังกล่าวเข้าไป หากทดสอบ reboot ก็จะพบว่า haproxy สามารถ auto start ได้ปกติแล้ว
# systemctl status haproxy -l ● haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2016-10-25 12:10:31 ICT; 1min 39s ago Main PID: 489 (haproxy-systemd) CGroup: /system.slice/haproxy.service ├─489 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid ├─492 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds └─503 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds Oct 25 12:10:31 test-lb-tv systemd[1]: Started HAProxy Load Balancer. Oct 25 12:10:31 test-lb-tv systemd[1]: Starting HAProxy Load Balancer... Oct 25 12:10:31 test-lb-tv haproxy-systemd-wrapper[489]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
บริการ CloudNode ของ HostPacific เป็น Cloud แท้ๆ เริ่มต้นเพียงเดือนละ 250 บาท ซึ่งท่านสามารถสร้าง infrastructure ตามต้องการได้อย่างรวดเร็ว