Dưới đây là tài liệu thực hành theo kiểu dễ hiểu, dùng được ngay trên Oracle Linux 7, cho 3 nhóm:
-
HAProxy
-
Keepalived (bạn ghi keepalive, trên Linux tên dịch vụ/công cụ đúng là keepalived)
-
Pacemaker/PCS
Tôi sẽ trình bày theo đúng các nội dung bạn yêu cầu:
-
Giám sát trạng thái tiến trình, port
-
Kiểm tra tiến trình, port, file cấu hình
-
Bật, tắt tiến trình
-
Kiểm tra lỗi
-
Các lỗi thường gặp, nguyên nhân, biện pháp xử lý, biện pháp phòng ngừa từ sớm từ xa
I. Tổng quan dễ hiểu
1. HAProxy là gì?
HAProxy là bộ cân bằng tải / reverse proxy.
Ví dụ dễ hiểu:
-
Người dùng truy cập vào 1 IP VIP
-
HAProxy nhận request
-
HAProxy chia request sang nhiều backend phía sau
Giống như:
-
1 lễ tân đứng ở cửa
-
Có khách vào thì lễ tân điều đến quầy 1, quầy 2, quầy 3
2. Keepalived là gì?
Keepalived dùng để quản lý VIP (Virtual IP) giữa 2 node.
Ví dụ:
-
Node1 giữ VIP
10.51.246.35 -
Node2 chờ dự phòng
-
Nếu Node1 chết, VIP nhảy sang Node2
Giống như:
-
Có 1 chìa khóa VIP
-
Bình thường trưởng ca cầm
-
Trưởng ca ngã thì phó ca cầm ngay
3. Pacemaker là gì?
Pacemaker là công cụ HA cluster chuyên nghiệp hơn keepalived.
Nó không chỉ quản lý VIP, mà còn quản lý:
-
VIP
-
dịch vụ HAProxy
-
Tomcat
-
filesystem
-
database resource
-
thứ tự start/stop
-
failover logic
Giống như:
-
Keepalived là “giao chìa khóa VIP”
-
Pacemaker là “cả đội điều phối vận hành”
II. HAProxy trên Oracle Linux 7
1. Giám sát trạng thái tiến trình, port
1.1 Kiểm tra dịch vụ HAProxy có đang chạy không
systemctl status haproxy
Ví dụ kết quả
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled)
Active: active (running) since Mon 2026-03-10 09:15:20 +07; 2h ago
Main PID: 12345 (haproxy)
Giải thích
-
Loaded: dịch vụ đã được systemd nhận diện -
enabled: bật tự khởi động cùng OS -
active (running): đang chạy tốt -
Main PID: PID chính của HAProxy
1.2 Kiểm tra process HAProxy
ps -ef | grep haproxy | grep -v grep
Ví dụ kết quả
root 12345 1 0 09:15 ? 00:00:03 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid
haproxy 12346 12345 0 09:15 ? 00:00:20 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid
Giải thích
-
Dòng đầu thường là process cha
-
Dòng sau là worker
-
Nếu không ra gì thì HAProxy chưa chạy
1.3 Kiểm tra HAProxy đang nghe port nào
ss -lntp | grep haproxy
Hoặc:
netstat -lntp | grep haproxy
Ví dụ kết quả
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: frontend web -
Port
8404: trang thống kê stats -
Nếu cấu hình có port mà lệnh này không thấy, nghĩa là HAProxy chưa bind thành công
2. Kiểm tra tiến trình, port, file cấu hình
2.1 Kiểm tra file cấu hình chính
ls -l /etc/haproxy/haproxy.cfg
2.2 Xem nhanh file cấu hình
cat /etc/haproxy/haproxy.cfg
Hoặc:
less /etc/haproxy/haproxy.cfg
2.3 Kiểm tra cú pháp cấu hình trước khi restart
haproxy -c -f /etc/haproxy/haproxy.cfg
Ví dụ kết quả đúng
Configuration file is valid
Ví dụ lỗi
[ALERT] 069/101500 (2345) : parsing [/etc/haproxy/haproxy.cfg:25] : unknown keyword 'defualt_backend'
Giải thích
-
Bạn gõ nhầm
default_backendthànhdefualt_backend -
Đây là lệnh rất quan trọng, nên chạy trước khi reload/restart
2.4 Kiểm tra PID file
cat /var/run/haproxy.pid
3. Bật, tắt tiến trình
Bật HAProxy
systemctl start haproxy
Dừng HAProxy
systemctl stop haproxy
Khởi động lại
systemctl restart haproxy
Reload cấu hình
systemctl reload haproxy
Bật tự khởi động cùng OS
systemctl enable haproxy
Bỏ tự khởi động
systemctl disable haproxy
4. Kiểm tra lỗi
4.1 Xem log dịch vụ
Trên Oracle Linux 7 thường xem qua:
journalctl -u haproxy -xe
Xem realtime:
journalctl -u haproxy -f
4.2 Nếu cấu hình rsyslog riêng cho HAProxy
Có thể log ở:
tail -f /var/log/haproxy.log
Hoặc:
grep -i haproxy /var/log/messages
4.3 Kiểm tra backend có sống không
Ví dụ backend là ứng dụng ở port 8080:
curl -I http://10.51.246.33:8080
curl -I http://10.51.246.34:8080
Nếu backend chết thì HAProxy vẫn chạy, nhưng người dùng có thể bị:
-
502
-
503
-
timeout
5. Các lỗi thường gặp của HAProxy
Lỗi 1: HAProxy không start được
Dấu hiệu
systemctl status haproxy
ra:
Active: failed
Nguyên nhân
-
Sai cú pháp file cấu hình
-
Port đã bị chương trình khác chiếm
-
Backend/server khai báo sai format
Xử lý
haproxy -c -f /etc/haproxy/haproxy.cfg
ss -lntp | grep :80
Phòng ngừa
-
Luôn chạy
haproxy -c -f ...trước restart -
Quản lý thay đổi qua checklist/change request
Lỗi 2: 503 Service Unavailable
Nguyên nhân
-
Tất cả backend đều down
-
Health check fail
Kiểm tra
curl -I http://backend_ip:backend_port
grep -i "down" /var/log/haproxy.log
Xử lý
-
Bật lại backend
-
Kiểm tra firewall
-
Kiểm tra port ứng dụng
Phòng ngừa
-
Cấu hình health check chuẩn
-
Giám sát backend riêng, không chỉ giám sát HAProxy
Lỗi 3: 502 Bad Gateway
Nguyên nhân
-
Backend trả lỗi không hợp lệ
-
Kết nối backend timeout
-
Ứng dụng treo, reset connection
Xử lý
-
Kiểm tra log ứng dụng backend
-
Tăng timeout nếu hợp lý
-
Xem CPU/RAM backend
Lỗi 4: HAProxy chạy nhưng không nghe port
Nguyên nhân
-
bindsai IP -
Port bị chiếm
-
SELinux/firewalld chặn
Kiểm tra
ss -lntp | grep haproxy
getenforce
firewall-cmd --list-all
Phòng ngừa
-
Chuẩn hóa port matrix
-
Có tài liệu port dùng cho từng dịch vụ
III. Keepalived trên Oracle Linux 7
1. Giám sát trạng thái tiến trình, port, VIP
1.1 Kiểm tra dịch vụ
systemctl status keepalived
Ví dụ kết quả
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled)
Active: active (running)
1.2 Kiểm tra process
ps -ef | grep keepalived | grep -v grep
1.3 Kiểm tra VIP đang nằm trên node nào
Ví dụ VIP là 10.51.246.35
ip addr show | grep 10.51.246.35
Ví dụ kết quả
inet 10.51.246.35/24 scope global secondary eth0
Giải thích
-
Nếu thấy VIP ở node này, node này đang là MASTER
-
Nếu không thấy, node này đang là BACKUP
2. Kiểm tra file cấu hình
File cấu hình
ls -l /etc/keepalived/keepalived.conf
cat /etc/keepalived/keepalived.conf
Nội dung mẫu
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
}
}
Giải thích dễ hiểu
-
state MASTER: node chính -
interface eth0: card mạng gắn VIP -
virtual_router_id 51: ID nhóm VRRP, 2 node phải giống nhau -
priority 100: node nào cao hơn thì ưu tiên làm MASTER -
advert_int 1: cứ 1 giây gửi gói VRRP báo “tôi còn sống” -
virtual_ipaddress: VIP
3. Bật, tắt tiến trình
systemctl start keepalived
systemctl stop keepalived
systemctl restart keepalived
systemctl enable keepalived
systemctl disable keepalived
4. Kiểm tra lỗi
Xem log keepalived
journalctl -u keepalived -xe
Hoặc:
grep -i keepalived /var/log/messages
Xem realtime:
journalctl -u keepalived -f
5. Các lỗi thường gặp của Keepalived
Lỗi 1: VIP không lên
Nguyên nhân
-
Sai tên interface
-
Cấu hình lỗi
-
Keepalived không chạy
-
IP bị trùng
Kiểm tra
ip a
systemctl status keepalived
journalctl -u keepalived -xe
Xử lý
-
Sửa đúng tên NIC, ví dụ
eth0,ens192 -
Restart keepalived
-
Kiểm tra IP conflict
Phòng ngừa
-
Luôn xác nhận interface bằng
ip a -
Ghi rõ NIC/VLAN trong tài liệu triển khai
Lỗi 2: VIP nhảy qua lại liên tục (flapping)
Nguyên nhân
-
Network chập chờn
-
Priority 2 node cấu hình quá sát
-
Cả hai node đều nghĩ mình là MASTER
-
Multicast VRRP bị chặn
Xử lý
-
Kiểm tra network
-
Tăng chênh lệch priority, ví dụ 100 và 90
-
Kiểm tra firewall
Phòng ngừa
-
Test failover trước production
-
Theo dõi log VRRP định kỳ
Lỗi 3: Keepalived sống nhưng app chết
Giải thích
Keepalived chỉ giữ VIP, không tự biết app bên dưới có chết không nếu không cấu hình script check.
Xử lý
Dùng vrrp_script để kiểm tra HAProxy/Tomcat.
Ví dụ:
vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
weight -20
}
Phòng ngừa
-
Không chỉ kiểm tra card mạng
-
Phải kiểm tra app/service thật
IV. Pacemaker/PCS trên Oracle Linux 7
1. Giám sát trạng thái tiến trình, cluster, port
1.1 Kiểm tra dịch vụ pcsd
systemctl status pcsd
1.2 Kiểm tra tổng trạng thái cluster
pcs status
Ví dụ kết quả
Cluster name: haproxy-cluster
Stack: corosync
Current DC: node1 (version 1.1.23)
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
-
Current DC: node điều phối hiện tại -
Online: node nào đang online -
vip_haproxy Started node1: VIP đang ở node1 -
haproxy_srv Started node1: HAProxy cũng chạy ở node1
1.3 Kiểm tra node cluster
pcs cluster status
pcs cluster status nodes
1.4 Kiểm tra quorum
pcs quorum status
2. Kiểm tra tiến trình, port, file cấu hình
2.1 Kiểm tra cấu hình cluster
pcs config
2.2 Xem danh sách resource
pcs resource show
2.3 Xem chi tiết 1 resource
pcs resource show vip_haproxy
2.4 Kiểm tra corosync
systemctl status corosync
3. Bật, tắt tiến trình
Bật/dừng pcsd
systemctl start pcsd
systemctl stop pcsd
systemctl restart pcsd
Dừng cluster trên 1 node
pcs cluster stop node1
Dừng cluster toàn bộ
pcs cluster stop --all
Start cluster
pcs cluster start --all
Enable cluster tự khởi động
pcs cluster enable --all
4. Kiểm tra lỗi
4.1 Xem log pacemaker
journalctl -u pacemaker -xe
4.2 Xem log corosync
journalctl -u corosync -xe
4.3 Xem trong messages
grep -Ei 'pacemaker|corosync|pcs' /var/log/messages
4.4 Xem history
pcs status history
4.5 Cleanup resource lỗi
pcs resource cleanup vip_haproxy
pcs resource cleanup haproxy_srv
5. Các lỗi thường gặp của Pacemaker
Lỗi 1: Resource failed
Dấu hiệu
pcs status báo resource failed
Nguyên nhân
-
Script agent lỗi
-
Service dưới nền không start được
-
VIP bị conflict
-
HAProxy config sai
Xử lý
systemctl status haproxy
haproxy -c -f /etc/haproxy/haproxy.cfg
pcs resource cleanup haproxy_srv
Phòng ngừa
-
Chuẩn hóa thứ tự check: app, port, config, log, cluster
-
Không cleanup bừa khi chưa rõ nguyên nhân
Lỗi 2: Cluster split-brain / mất quorum
Nguyên nhân
-
2 node mất liên lạc
-
Network cluster lỗi
-
Corosync port bị chặn
Xử lý
-
Kiểm tra mạng heartbeat
-
Kiểm tra firewall
-
Kiểm tra corosync log
Phòng ngừa
-
Tách mạng heartbeat riêng nếu được
-
Giám sát latency/loss mạng cluster
Lỗi 3: VIP không failover
Nguyên nhân
-
Resource constraint sai
-
STONITH/quorum policy ảnh hưởng
-
Node backup không healthy
Xử lý
pcs resource show
pcs constraint show
pcs status
Phòng ngừa
-
Test failover định kỳ
-
Có runbook rõ ràng
V. Bộ lệnh hay dùng nhất nên nhớ
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
grep -i haproxy /var/log/messages
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
grep -i keepalived /var/log/messages
systemctl restart keepalived
3. Pacemaker/PCS
pcs status
pcs cluster status
pcs resource show
pcs config
pcs quorum status
journalctl -u pacemaker -f
journalctl -u corosync -f
pcs resource cleanup <resource_name>
pcs cluster start --all
pcs cluster stop --all
VI. Quy trình kiểm tra nhanh khi có sự cố
Trường hợp người dùng báo không truy cập được VIP
Bước 1: Kiểm tra VIP có 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
VII. Bài học kinh nghiệm vận hành
1. Đừng chỉ kiểm tra process
Process còn sống chưa chắc dịch vụ còn phục vụ tốt.
Phải kiểm tra thêm:
-
port có listen không
-
VIP có còn không
-
backend có sống không
-
log có lỗi không
2. Đừng restart ngay khi chưa chụp hiện trạng
Trước khi restart nên chụp:
date
hostname
pcs status
systemctl status haproxy
ip a
ss -lntp
journalctl -u haproxy -n 100
Vì restart xong có thể mất dấu vết lỗi.
3. Luôn test config trước khi apply
Ví dụ HAProxy:
haproxy -c -f /etc/haproxy/haproxy.cfg
4. Phải giám sát từ sớm, từ xa
Nên đưa vào Prometheus/Grafana các chỉ tiêu:
-
tiến trình sống/chết
-
port up/down
-
VIP có tồn tại hay không
-
HTTP code 5xx
-
thời gian phản hồi backend
-
CPU/RAM/load
-
dung lượng log
Trong tài liệu bạn đã gửi, mô hình Grafana/Prometheus/Loki/Alertmanager phù hợp để giám sát tập trung, thu thập metrics, log, cảnh báo sớm và không làm gián đoạn hệ thống.
VIII. Khuyến nghị phòng ngừa từ sớm từ xa
Với HAProxy
-
Giám sát port frontend/backend
-
Giám sát 5xx, latency, session
-
Rotate log tránh file log quá lớn
-
Kiểm tra config trước mỗi thay đổi
Với Keepalived
-
Giám sát VIP tồn tại trên node nào
-
Giám sát flapping VIP
-
Thêm script check dịch vụ thật, không chỉ check network
Với Pacemaker
-
Giám sát quorum, node online/offline
-
Theo dõi history failover
-
Test failover định kỳ hàng tháng/quý
-
Có runbook xử lý chuẩn
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
=============================