Thứ Ba, 10 tháng 3, 2026

RUNBOOK VẬN HÀNH HAProxy + Keepalived + Pacemaker trên Oracle Linux 7

Dưới đây là runbook vận hành chuẩn trên Oracle Linux 7 cho:

  • HAProxy

  • Keepalived

  • Pacemaker/PCS

Tôi viết theo kiểu để bạn có thể dùng luôn cho đội vận hành: mục tiêu → câu lệnh → kết quả mong đợi → lỗi thường gặp → hướng xử lý → checklist trước/sau change.

RUNBOOK VẬN HÀNH HAProxy + Keepalived + Pacemaker trên Oracle Linux 7


PHẦN A. RUNBOOK HAProxy

A1. Mục tiêu

Dùng để:

  • kiểm tra HAProxy có sống không

  • kiểm tra port phục vụ

  • kiểm tra cấu hình đúng/sai

  • bật/tắt/reload dịch vụ

  • xác định nhanh nguyên nhân khi người dùng báo không truy cập được


A2. Kiểm tra trạng thái dịch vụ

Lệnh

systemctl status haproxy

Kết quả mong đợi

Active: active (running)

Giải thích

  • active (running) = dịch vụ đang chạy

  • failed = lỗi

  • inactive = đang tắt


A3. Kiểm tra process

Lệnh

ps -ef | grep haproxy | grep -v grep

Kết quả mong đợi

Có ít nhất 1 hoặc 2 dòng process HAProxy.

Giải thích dễ hiểu

  • Nếu systemctl status báo chạy nhưng ps không thấy process thì hệ thống có thể đang bất thường

  • Nếu có process nhưng không nghe port thì HAProxy lên chưa hoàn chỉnh


A4. Kiểm tra port listen

Lệnh

ss -lntp | grep haproxy

Hoặc:

netstat -lntp | grep haproxy

Ví dụ

LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("haproxy",pid=12346,fd=5))
LISTEN 0 128 0.0.0.0:8404 0.0.0.0:* users:(("haproxy",pid=12346,fd=7))

Giải thích

  • port 80: cổng phục vụ client

  • port 8404: cổng stats nếu có bật

  • nếu không thấy port cần thiết thì người dùng sẽ không truy cập được


A5. Kiểm tra file cấu hình

Lệnh xem file

ls -l /etc/haproxy/haproxy.cfg
cat /etc/haproxy/haproxy.cfg

Lệnh kiểm tra cú pháp

haproxy -c -f /etc/haproxy/haproxy.cfg

Kết quả mong đợi

Configuration file is valid

Nếu lỗi

Ví dụ:

parsing [/etc/haproxy/haproxy.cfg:25] : unknown keyword

Giải thích

  • Câu lệnh này giống như “soát chính tả” file cấu hình

  • Phải chạy trước khi restart/reload


A6. Bật, tắt, restart, reload

Bật

systemctl start haproxy

Tắt

systemctl stop haproxy

Khởi động lại

systemctl restart haproxy

Nạp lại cấu hình

systemctl reload haproxy

Bật tự động cùng OS

systemctl enable haproxy

Tắt tự động cùng OS

systemctl disable haproxy

Giải thích dễ hiểu

  • start: bật nếu đang tắt

  • stop: tắt dịch vụ

  • restart: tắt rồi bật lại

  • reload: chỉ nạp lại config, ít ảnh hưởng hơn restart


A7. Kiểm tra log

Xem log qua systemd

journalctl -u haproxy -xe

Xem realtime

journalctl -u haproxy -f

Nếu log đẩy về messages

grep -i haproxy /var/log/messages

Nếu có file log riêng

tail -f /var/log/haproxy.log

A8. Kiểm tra backend phía sau HAProxy

Lệnh

curl -I http://10.51.246.33:8080
curl -I http://10.51.246.34:8080

Kết quả mong đợi

HTTP/1.1 200 OK

Giải thích

  • HAProxy chỉ là người điều phối

  • Backend chết thì HAProxy vẫn có thể còn chạy, nhưng user vẫn lỗi


A9. Lỗi thường gặp của HAProxy

Lỗi 1: HAProxy failed to start

Dấu hiệu

systemctl status haproxy

ra:

Active: failed

Nguyên nhân

  • sai cú pháp cấu hình

  • port bị chiếm

  • file config sửa nhầm

  • backend khai báo sai

Xử lý

haproxy -c -f /etc/haproxy/haproxy.cfg
ss -lntp | grep :80
journalctl -u haproxy -xe

Phòng ngừa

  • luôn chạy kiểm tra config trước reload/restart

  • không sửa trực tiếp trên production nếu chưa backup


Lỗi 2: 503 Service Unavailable

Nguyên nhân

  • tất cả backend down

  • health check fail

  • app phía sau không nghe port

Xử lý

curl -I http://backend_ip:port

Kiểm tra log app, kiểm tra process app.

Phòng ngừa

  • giám sát backend độc lập

  • có dashboard cho từng backend


Lỗi 3: 502 Bad Gateway

Nguyên nhân

  • backend trả lỗi

  • backend timeout

  • ứng dụng treo hoặc reset connection

Xử lý

  • xem log backend

  • tăng timeout nếu hợp lý

  • kiểm tra CPU/RAM backend


A10. Checklist trước change HAProxy

date
hostname
cp -p /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak_$(date +%F_%H%M%S)
haproxy -c -f /etc/haproxy/haproxy.cfg
systemctl status haproxy
ss -lntp | grep haproxy

A11. Checklist sau change HAProxy

haproxy -c -f /etc/haproxy/haproxy.cfg
systemctl reload haproxy
systemctl status haproxy
ss -lntp | grep haproxy
curl -I http://VIP_or_URL
journalctl -u haproxy -n 50

PHẦN B. RUNBOOK KEEPALIVED

B1. Mục tiêu

Dùng để:

  • kiểm tra VIP đang ở node nào

  • kiểm tra keepalived có chạy không

  • xác định failover có hoạt động không


B2. Kiểm tra trạng thái dịch vụ

Lệnh

systemctl status keepalived

Kết quả mong đợi

Active: active (running)

B3. Kiểm tra process

Lệnh

ps -ef | grep keepalived | grep -v grep

B4. Kiểm tra VIP

Lệnh

ip a | grep 10.51.246.35

Kết quả mong đợi

Nếu node này là master:

inet 10.51.246.35/24 scope global secondary eth0

Giải thích

  • VIP chỉ xuất hiện trên 1 node tại 1 thời điểm

  • Node nào có VIP là node đang active


B5. Kiểm tra file cấu hình

Lệnh

cat /etc/keepalived/keepalived.conf

Điểm cần soi

  • interface

  • virtual_router_id

  • priority

  • virtual_ipaddress

Ví dụ

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
10.51.246.35
}
}

B6. Bật, tắt, restart

systemctl start keepalived
systemctl stop keepalived
systemctl restart keepalived
systemctl enable keepalived
systemctl disable keepalived

B7. Kiểm tra log

journalctl -u keepalived -xe

Xem realtime:

journalctl -u keepalived -f

Hoặc:

grep -i keepalived /var/log/messages

B8. Lỗi thường gặp của Keepalived

Lỗi 1: VIP không lên

Nguyên nhân

  • sai interface

  • keepalived không chạy

  • VIP trùng IP hệ thống khác

  • cấu hình lỗi

Kiểm tra

ip a
systemctl status keepalived
journalctl -u keepalived -xe

Xử lý

  • sửa đúng tên NIC

  • restart keepalived

  • kiểm tra xung đột IP

Phòng ngừa

  • luôn xác minh tên card mạng trước triển khai

  • lập danh mục IP/VIP rõ ràng


Lỗi 2: VIP flapping, nhảy qua lại liên tục

Nguyên nhân

  • mạng chập chờn

  • 2 node không nhìn thấy nhau ổn định

  • chênh lệch priority không hợp lý

  • firewall chặn VRRP

Xử lý

  • kiểm tra kết nối giữa 2 node

  • tăng chênh lệch priority

  • kiểm tra firewall/network ACL

Phòng ngừa

  • test failover nhiều lần trước production

  • giám sát log keepalived định kỳ


Lỗi 3: VIP còn nhưng HAProxy chết

Giải thích

Keepalived chỉ biết giữ VIP, không chắc HAProxy có sống hay không nếu không gắn script check.

Phòng ngừa

Dùng vrrp_script kiểm tra HAProxy:

vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
weight -20
}

B9. Checklist trước change Keepalived

date
hostname
cp -p /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak_$(date +%F_%H%M%S)
systemctl status keepalived
ip a | grep 10.51.246.35

B10. Checklist sau change Keepalived

systemctl restart keepalived
systemctl status keepalived
ip a | grep 10.51.246.35
journalctl -u keepalived -n 50

PHẦN C. RUNBOOK PACEMAKER / PCS

C1. Mục tiêu

Dùng để:

  • kiểm tra cluster online/offline

  • kiểm tra resource VIP/HAProxy/Tomcat

  • xử lý failover

  • cleanup resource failed


C2. Kiểm tra trạng thái tổng quát

Lệnh

pcs status

Ví dụ kết quả

Cluster name: haproxy-cluster
Stack: corosync
Current DC: node1
2 nodes configured
2 resources configured

Online: [ node1 node2 ]

Full list of resources:
vip_haproxy (ocf::heartbeat:IPaddr2): Started node1
haproxy_srv (systemd:haproxy): Started node1

Giải thích dễ hiểu

  • cluster tên gì

  • node nào đang online

  • VIP đang nằm đâu

  • HAProxy đang chạy ở node nào


C3. Kiểm tra node cluster

pcs cluster status
pcs cluster status nodes

C4. Kiểm tra resource

pcs resource show

Xem 1 resource:

pcs resource show vip_haproxy

C5. Kiểm tra quorum

pcs quorum status

Giải thích dễ hiểu

Quorum nghĩa là cluster còn đủ “đa số” để ra quyết định hay không.


C6. Kiểm tra cấu hình cluster

pcs config

C7. Bật, tắt cluster / resource

Start cluster

pcs cluster start --all

Stop cluster

pcs cluster stop --all

Disable resource

pcs resource disable haproxy_srv

Enable resource

pcs resource enable haproxy_srv

Move resource sang node khác

pcs resource move vip_haproxy node2

Xóa lệnh move tạm thời

pcs resource clear vip_haproxy

C8. Cleanup resource lỗi

pcs resource cleanup vip_haproxy
pcs resource cleanup haproxy_srv

Giải thích

  • Khi resource failed, Pacemaker nhớ lỗi đó

  • cleanup là xóa dấu lỗi cũ để Pacemaker thử lại


C9. Kiểm tra log

Pacemaker

journalctl -u pacemaker -xe

Corosync

journalctl -u corosync -xe

PCS daemon

journalctl -u pcsd -xe

Xem chung trong messages

grep -Ei 'pacemaker|corosync|pcs' /var/log/messages

Xem realtime

journalctl -u pacemaker -f
journalctl -u corosync -f

C10. Lỗi thường gặp của Pacemaker

Lỗi 1: Resource failed

Nguyên nhân

  • HAProxy hoặc app không lên được

  • VIP conflict

  • agent lỗi

  • dependency/resource order sai

Kiểm tra

pcs status
pcs resource show
systemctl status haproxy
journalctl -u pacemaker -xe

Xử lý

  • sửa root cause trước

  • sau đó cleanup:

pcs resource cleanup haproxy_srv

Phòng ngừa

  • test resource agent trước khi đưa production

  • chuẩn hóa thứ tự start VIP → app


Lỗi 2: Node offline

Nguyên nhân

  • node chết

  • corosync mất kết nối

  • firewall chặn traffic cluster

Kiểm tra

pcs status
systemctl status corosync
journalctl -u corosync -xe

Phòng ngừa

  • tách mạng heartbeat nếu có điều kiện

  • giám sát node online/offline


Lỗi 3: VIP không failover

Nguyên nhân

  • constraint sai

  • node backup không healthy

  • resource bị lock bởi move/ban tạm thời

Kiểm tra

pcs resource show
pcs constraint
pcs status

Xử lý

pcs resource clear vip_haproxy
pcs resource cleanup vip_haproxy

C11. Checklist trước change Pacemaker

date
hostname
pcs status
pcs config > /root/pcs_config_$(date +%F_%H%M%S).txt
pcs resource show
pcs quorum status

C12. Checklist sau change Pacemaker

pcs status
pcs resource show
pcs quorum status
journalctl -u pacemaker -n 50
journalctl -u corosync -n 50

PHẦN D. BỘ LỆNH NGẮN GỌN NÊN THUỘC

1. HAProxy

systemctl status haproxy
ps -ef | grep haproxy | grep -v grep
ss -lntp | grep haproxy
haproxy -c -f /etc/haproxy/haproxy.cfg
journalctl -u haproxy -f
systemctl restart haproxy

2. Keepalived

systemctl status keepalived
ps -ef | grep keepalived | grep -v grep
ip a | grep 10.51.246.35
cat /etc/keepalived/keepalived.conf
journalctl -u keepalived -f
systemctl restart keepalived

3. Pacemaker / PCS

pcs status
pcs cluster status
pcs resource show
pcs quorum status
pcs config
journalctl -u pacemaker -f
journalctl -u corosync -f
pcs resource cleanup <resource>

PHẦN E. QUY TRÌNH XỬ LÝ SỰ CỐ NHANH

Tình huống: người dùng báo không truy cập được VIP

Bước 1. Kiểm tra VIP còn không

ip a | grep 10.51.246.35

Bước 2. Kiểm tra keepalived hoặc pacemaker

systemctl status keepalived
pcs status

Bước 3. Kiểm tra HAProxy

systemctl status haproxy
ss -lntp | grep haproxy
haproxy -c -f /etc/haproxy/haproxy.cfg

Bước 4. Kiểm tra backend

curl -I http://backend_ip:port

Bước 5. Kiểm tra log

journalctl -u haproxy -xe
journalctl -u keepalived -xe
journalctl -u pacemaker -xe
grep -Ei 'haproxy|keepalived|pacemaker|corosync' /var/log/messages

PHẦN F. BÀI HỌC KINH NGHIỆM

1. Không nhìn mỗi process

Một process còn sống chưa chắc dịch vụ còn phục vụ tốt.
Luôn kiểm tra thêm:

  • port

  • VIP

  • backend

  • log

2. Đừng restart quá sớm

Trước khi restart nên chụp hiện trạng:

date
hostname
pcs status
ip a
ss -lntp
journalctl -u haproxy -n 100

3. Luôn backup config trước change

Ví dụ:

cp -p /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak_$(date +%F_%H%M%S)

4. Luôn test failover định kỳ

Không test thì đến lúc sự cố thật mới phát hiện failover không chạy.


PHẦN G. PHÒNG NGỪA TỪ SỚM, TỪ XA

Với HAProxy

  • giám sát process, port, HTTP code 5xx, latency

  • logrotate tránh log quá lớn

  • kiểm tra config trước khi áp dụng

Với Keepalived

  • giám sát VIP đang nằm trên node nào

  • cảnh báo nếu VIP flapping

  • dùng script check dịch vụ thật

Với Pacemaker

  • giám sát node online/offline

  • giám sát quorum

  • giám sát resource failed

  • lưu history failover để phân tích RCA

Trong mô hình giám sát tập trung, Prometheus/Grafana/Loki/Alertmanager phù hợp để thu thập trạng thái dịch vụ, log, dashboard và cảnh báo sớm, đồng thời không làm gián đoạn hệ thống đang chạy.

=============================
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master