Đầu tiên, hãy nói chuyện với lính gác.
Sentinel quản lý chuyển đổi dự phòng, nó không định cấu hình Redis cho HA. Đó là một sự khác biệt quan trọng. Thứ hai, sơ đồ bạn đã đăng thực sự là một thiết lập tồi - bạn không muốn chạy Sentinel trên cùng một nút với các nút Redis mà nó đang quản lý. Khi bạn mất máy chủ đó, bạn sẽ mất cả hai.
Đối với "Nó có lãng phí tài nguyên không?" nó phụ thuộc vào trường hợp sử dụng của bạn. Bạn không cần ba nút Redis trong thiết lập đó, bạn chỉ cần hai. Ba tăng khả năng dự phòng của bạn, nhưng không bắt buộc. Nếu bạn cần bổ sung dự phòng thì đó không phải là một sự lãng phí tài nguyên. Nếu bạn không cần dự phòng thì bạn chỉ cần chạy một phiên bản Redis duy nhất và gọi nó là tốt - vì chạy nhiều hơn sẽ bị "lãng phí".
Một lý do khác để chạy hai nô lệ là phân chia các lần đọc. Một lần nữa, nếu bạn cần thì sẽ không lãng phí.
Đối với "Có cách nào tốt hơn để sử dụng toàn bộ các tài nguyên có sẵn không?" chúng tôi không thể trả lời điều đó vì nó quá phụ thuộc vào kịch bản và mã cụ thể của bạn. Điều đó nói rằng nếu lượng dữ liệu cần lưu trữ là "nhỏ" và tỷ lệ lệnh không quá cao, thì hãy nhớ rằng bạn không cần phải cung cấp máy chủ lưu trữ cho Redis.
Bây giờ cho "Redis clustering có phải là một thay thế cho Redis sentinel?". Nó thực sự phụ thuộc hoàn toàn vào trường hợp sử dụng của bạn. Redis Cluster không phải là một giải pháp HA - nó là một giải pháp nhiều bộ ghi / lớn hơn ram. Nếu mục tiêu của bạn chỉ là HA thì nó có thể sẽ không phù hợp với bạn. Redis Cluster đi kèm với những hạn chế, đặc biệt là xung quanh các hoạt động đa phím, vì vậy nó không nhất thiết phải là một hoạt động "chỉ sử dụng cụm" đơn giản.
Nếu bạn nghĩ rằng có ba máy chủ đang chạy Redis (và ba máy chủ đang chạy) là lãng phí, thì bạn có thể sẽ giữ Cluster nhiều hơn vì nó đòi hỏi nhiều tài nguyên hơn.
Những câu hỏi bạn đã hỏi có lẽ quá rộng và dựa trên quan điểm để tồn tại như đã viết. Nếu bạn có một trường hợp / vấn đề cụ thể mà bạn đang giải quyết, vui lòng cập nhật vấn đề đó để chúng tôi có thể cung cấp hỗ trợ và thông tin cụ thể.
Cập nhật các chi tiết cụ thể:
Để quản lý chuyển đổi dự phòng thích hợp trong kịch bản của bạn, tôi sẽ đi với 3 lính canh, một hoạt động trên máy chủ JBoss của bạn. Nếu bạn có 3 nút JBoss thì hãy chọn một nút trên mỗi nút. Tôi có một Redis pod (master + slave) trên các nút riêng biệt và để lính gác quản lý chuyển đổi dự phòng.
Từ đó, vấn đề là kết nối JBoss / Jedis để sử dụng Sentinel cho việc quản lý thông tin và kết nối. Vì tôi không sử dụng những thứ đó, nên một tìm kiếm nhanh xuất hiện rằng Jedis có hỗ trợ cho nó, bạn chỉ cần định cấu hình nó một cách chính xác. Một số ví dụ tôi tìm thấy là Tìm kiếm ví dụ về Jedis với Sentinel và https://github.com/xetorthio/jedis/issues/725 nói về JedisSentinelPool
là lộ trình để sử dụng một nhóm.
Khi Sentinel thực hiện chuyển đổi dự phòng, các máy khách sẽ bị ngắt kết nối và Jedis sẽ (nên?) Xử lý việc kết nối lại bằng cách hỏi Sentinels chủ hiện tại là ai.