Theo thông báo cam kết git, ServiceStack gần đây đã thêm hỗ trợ chuyển đổi dự phòng. Ban đầu tôi cho rằng điều này có nghĩa là tôi có thể kéo một trong các phiên bản Redis xuống và trình quản lý khách gộp của tôi sẽ xử lý failover một cách tao nhã và cố gắng kết nối với một trong các phiên bản Redis thay thế của tôi. Thật không may, mã của tôi chỉ lỗi và nói rằng nó không thể kết nối với phiên bản Redis ban đầu.ServiceStack PooledRedisClientQuản lý chuyển đổi dự phòng như thế nào?
Tôi hiện đang chạy phiên bản Redis 2.6.12 trên Windows, với trình chủ tại cổng 6379 và nô lệ ở 6380, với các sentinels được thiết lập để tự động quảng bá slave đến master nếu master ngừng hoạt động. Tôi hiện đang instantiating quản lý khách hàng của tôi như thế này: host
PooledRedisClientManager pooledClientManager =
new PooledRedisClientManager(new string[1] { "localhost:6379"},
new string[1] {"localhost:6380"});
nơi các mảng đầu tiên được đọc-ghi (đối với bậc thầy), và mảng thứ hai là chỉ đọc host (đối với nô lệ).
Khi tôi chấm dứt bản gốc tại cổng 6379, các sentinels quảng bá slave đến master. Bây giờ, khi tôi cố gắng chạy mã C# của tôi, thay vì không chuyển sang cổng 6380, nó chỉ đơn giản là phá vỡ và trả về lỗi "không thể kết nối với redis Instance tại localhost: 6379".
Có cách nào xung quanh điều này, hoặc sẽ chuyển đổi dự phòng đơn giản là không hoạt động theo cách tôi muốn?
Bạn đã tìm thấy một cách @Vliu – jaxxbo
Không, từ hầu hết các nghiên cứu tôi đã thực hiện, hầu hết mọi người không dựa vào mã để xử lý chuyển đổi dự phòng. Họ sử dụng một lớp proxy (linux) trên cơ sở dữ liệu redis như HAProxy @jaxxbo – Vliu