Mục tiêu là để có được hai máy ảo CentOS 7 khác nhau được cài đặt keepalived để thực hiện chuyển đổi dự phòng với VIP 192.168.1.11, đồng thời chuyển tiếp lưu lượng truy cập http (để trở thành https ngay sau khi dịch vụ này hoạt động) đến máy chủ http tương ứng.
192.168.1.11 vm1 (MASTER) -> fwd http tới 192.168.1.71
192.168.1.11 vm2 (SẢN LỆ) -> fwd http tới 192.168.1.72
Tôi đã có phần chuyển đổi dự phòng của phần này (với keepalived) trước đây hoạt động nhưng thay vào đó với haproxy (trên mỗi vm) xử lý chuyển tiếp. Bây giờ tôi đang cố gắng giữ nguyên để thực hiện chuyển tiếp (hoặc trong trường hợp này, chế độ tôi đang cố sử dụng là định tuyến trực tiếp mà tôi tin) Tôi đang gặp lỗi liên kết ổ cắm trong đầu ra trạng thái và chuyển đổi dự phòng không hoạt động.
Đây là vm1 keepalived.conf:
global_defs {
gốc script_user
}
vrrp_instance VIP01 {
nhà nước MASTER
giao diện eth0
virtual_router_id 101
ưu tiên 101
quảng cáo_int 1
xác thực {
auth_type VƯỢT QUA
auth_pass [đoạn trích]
}
virtual_ipaddress {
192.168.1.11/24
}
}
virtual_server 192.168.1.11 8080 {
độ trễ_loop 10
giao thức TCP
lb_algo rr
lb_kind DR
kiên trì_timeout 7200
real_server 192.168.1.71 8080 {
trọng lượng 1
TCP_CHECK {
connect_timeout 5
cổng kết nối 8080
}
}
}
và vm2:
global_defs {
gốc script_user
}
vrrp_instance VIP01 {
trạng thái SAO LƯU
giao diện eth0
virtual_router_id 101
ưu tiên 100
quảng cáo_int 1
xác thực {
auth_type VƯỢT QUA
auth_pass [đoạn trích]
}
virtual_ipaddress {
192.168.1.11/24
}
}
máy chủ ảo 192.168.1.11 80 {
độ trễ_loop 10
giao thức TCP
lb_algo rr
lb_kind DR
kiên trì_timeout 7200
real_server 192.168.1.72 8080 {
trọng lượng 1
TCP_CHECK {
connect_timeout 5
cổng kết nối 8080
}
}
}
đầu ra từ trạng thái systemctl được giữ nguyên
(trên cả hai vms):
...
Ngày 20 tháng 7 07:52:16 [tên máy chủ] Keepalived_healthcheckers[1738]: Liên kết ổ cắm TCP không thành công. đổi lịch.
Ngày 20 tháng 7 07:52:26 [tên máy chủ] Keepalived_healthcheckers[1738]: Liên kết ổ cắm TCP không thành công. đổi lịch.
Ngày 20 tháng 7 07:52:36 [tên máy chủ] Keepalived_healthcheckers[1738]: Liên kết ổ cắm TCP không thành công. đổi lịch.
Tôi cũng đã thử thêm phần sau vào /etc/sysctl.conf
:
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
và xác nhận họ đã lấy bằng cách truy vấn chúng sau khi khởi động lại.
Tôi nhận ra rằng việc sử dụng cân bằng tải theo hình thức quay vòng với một máy chủ trong danh sách không thực sự là cân bằng tải, nhưng tôi chỉ xem đó là một cách để thực hiện chuyển tiếp, nếu có cách nào ngắn gọn hơn/tốt hơn để làm điều này thì tôi quan tâm.
chỉnh sửa:
nếu tôi nhận xét kiểm tra TCP, có vẻ như lỗi liên kết các thông báo sẽ biến mất. Tôi đã kiểm tra IP/cổng đích bằng cách điều hướng đến http://192.168.1.71:8080 trong trình duyệt và nó hoạt động như mong đợi, tuy nhiên nó không hoạt động qua VIP .11. Có vẻ như đó phải là kiểm tra HTTP_GET.
Tôi có thể cuộn trang từ cuộn tròn http://192.168.1.71:8080
từ dòng cmd của vm1 để tôi biết nó có quyền truy cập vào máy chủ http của .71.
Điều hướng trong trình duyệt đến http://192.168.1.11:8080
vẫn dẫn đến thời gian chờ. trạng thái không có dấu hiệu của sự cố, sẽ xem xét tùy chọn nhật ký chi tiết hơn...
Đây là nơi tôi đã chọn hầu hết những gì tôi có ...
Dựa theo này (dưới cùng trang 6) cơ hội được keepalived là xóa máy chủ thực khỏi danh sách. Có vẻ như có điều gì đó ngăn cản dịch vụ keepalived không thể tấn công máy chủ thực bằng kiểm tra TCP hoặc nhận HTTP. có lẽ chính sách selinux?
/var/log/audit/audit.log
đã có đầy đủ các toàn bộ keepalived ...
thành lập cái này và đã thử cài đặt cho phép kết nối bất kỳ boolean nào không thay đổi kết quả của tôi.
cũng đã thử sử dụng kiểm toán2allow
để tạo các quy tắc và sau đó áp dụng chúng và mặc dù nhật ký kiểm tra dường như đã dừng ghi lại các thông báo bị từ chối, việc chuyển tiếp từ 11 đến 71 vẫn không hoạt động.
vẫn không thấy bất cứ điều gì chỉ ra lỗi:
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived[1951]: Bắt đầu Keepalived v1.3.5 (19/03/2017), git commit v1.3.5-6-g6fa32f2
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived[1951]: Mở tệp '/etc/keepalived/keepalived.conf'.
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived[1952]: Bắt đầu tiến trình con Healthcheck, pid=1953
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived[1952]: Bắt đầu tiến trình con VRRP, pid=1954
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived_healthcheckers[1953]: Mở tệp '/etc/keepalived/keepalived.conf'.
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived_healthcheckers[1953]: Kích hoạt trình kiểm tra sức khỏe cho dịch vụ [192.168.1.11]:8080
Ngày 20 tháng 7 12:46:59 [tên máy chủ] systemd: Bắt đầu Giám sát tính khả dụng cao LVS và VRRP.
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived_vrrp[1954]: Đăng ký bộ phản xạ liên kết mạng hạt nhân
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived_vrrp[1954]: Đăng ký kênh lệnh Kernel netlink
20/07 12:46:59 [hostname] Keepalived_vrrp[1954]: Đăng ký kênh chia sẻ ARP miễn phí
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived_vrrp[1954]: Mở tệp '/etc/keepalived/keepalived.conf'.
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived_vrrp[1954]: Cắt bớt auth_pass thành 8 ký tự
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) xóa giao thức VIP.
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived_vrrp[1954]: Sử dụng bộ phản xạ liên kết mạng hạt nhân LinkWatch...
Ngày 20 tháng 7 12:46:59 [tên máy chủ] Keepalived_vrrp[1954]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Ngày 20 tháng 7 12:47:00 [tên máy chủ] Keepalived_vrrp[1954]: Chuyển đổi VRRP_Instance(VIP01) sang TRẠNG CHỦ
Ngày 20 tháng 7 12:47:01 [tên máy chủ] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) Bước vào TRẠNG THÁI CHÍNH
Ngày 20 tháng 7 12:47:01 [tên máy chủ] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) thiết lập giao thức VIP.
Ngày 20 tháng 7 12:47:01 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:01 [tên máy chủ] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) Gửi/xếp hàng ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:01 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:01 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:01 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:01 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:06 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:06 [tên máy chủ] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) Gửi/xếp hàng ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:06 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:06 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:06 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
Ngày 20 tháng 7 12:47:06 [tên máy chủ] Keepalived_vrrp[1954]: Gửi ARP miễn phí trên eth0 cho 192.168.1.11
điều đáng nói là trước đây tôi đã vô hiệu hóa tường lửa để loại trừ chúng...
ping 192.168.1.11 và kéo kết nối mạng sang vm1 dẫn đến chuyển đổi dự phòng như mong đợi. vì vậy, vấn đề thực sự là do thiết lập máy chủ ảo/thực của tôi bằng cách nào đó ...