1. 程式人生 > >LVS結合Redis Sentinel哨兵模式的高可用設計

LVS結合Redis Sentinel哨兵模式的高可用設計

Redis哨兵模式配置與原理不在這裡敘述,網上已經有很多文章可供參考。

下面給出哨兵模式Java客戶端的一段程式碼。

        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(10);
        jedisPoolConfig.setMaxIdle(5);
        jedisPoolConfig.setMinIdle(5);

        Set<String> sentinels = new HashSet<>(Arrays.asList(
                "192.168.80.112:26379",
                "192.168.80.113:26379",
                "192.168.80.114:26379"
        ));
        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
        poolConfig.setMaxTotal(10);
        poolConfig.setMaxIdle(5);
        poolConfig.setMinIdle(5);
        JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels, jedisPoolConfig);
        HostAndPort hostAndPort = pool.getCurrentHostMaster();

        System.out.println(hostAndPort.getHost() + "|" + hostAndPort.getPort());
        String key1 = "key111";
        try (Jedis jedis = pool.getResource()) {
            jedis.set(key1, "222");
            System.out.println(jedis.get(key1));
        } catch (Exception e) {
            e.printStackTrace();
        }

112,113,114這三個IP是哨兵叢集的ip地址,客戶端不需要直連redis,而是連線到哨兵的ip,客戶端通過哨兵獲取redis主節點的地址,然後在與redis主節點通訊,這樣就解決了redis高可用的問題。

但是這裡面有一個地方不好,就是Java客戶端所有的讀寫請求全部都走主redis,而從redis只擔當熱備的角色。

比如我有三臺redis伺服器,一個master,二個slave。那麼讀寫全部走master,slave只擔當熱備,這樣slave資源全部浪費。

那麼有沒有一種設計,能夠讓slave也發揮作用呢?,即寫請求走master, 讀請求走slave。這樣就能夠利用slave機器資源,提高讀的伸縮性。

看下面的架構圖

1、在Java客戶端,所有寫請求通過哨兵 連線master節點,寫全部通過master完成,這也是哨兵預設的行為。

2、在redis叢集上新增LVS代理+加健康檢查,所有讀請求通過LVS轉發到redis叢集,這樣3臺redis機器都可以處理讀請求。

具體配置細節不在這裡說明,這個文章只提供一個思路

配置可參考

LVS-DR(Virtual Server via Direct Routing)原理說明與配置用例

CentOS7 Keepalived+LVS 負載均衡 後臺節點健康檢查

技術交流群:212320390

相關推薦

LVS結合Redis Sentinel哨兵模式可用設計

Redis哨兵模式配置與原理不在這裡敘述,網上已經有很多文章可供參考。 下面給出哨兵模式Java客戶端的一段程式碼。 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedi

Redis叢集(哨兵模式可用)

##一臺機器<br>ps -ef | grep redisroot 610201002:14 ? 00:00:01 redis-server 127.0.0.1:7000 [cluster] root 610241002:14 ? 00:00:01 redis-server 127.0.

可用redis叢集,redis-sentinel哨兵模式的啟動

    redis一旦斷電資料會清除,Redis哨兵是一個分散式系統。哨兵程序間互相監控、通知、自動故障遷移和選舉產生新的master。啟動叢集分三步:啟動zookeeper,啟動redis,啟動redis-sentinel,注意啟動順序可不能亂。 1.後臺啟動zookeep

15.7,哨兵叢集 redis-sentinel主從複製可用

redis-sentinel主從複製高可用   Redis-Sentinel Redis-Sentinel是redis官方推薦的高可用性解決方案,當用redis作master-slave的高可用時,如果master

部署 redis 哨兵模式可用集群

pass kill cas data c-c++ pre 啟動 release null 環境 master: 192.168.1.224 slave1: 192.168.1.225 slave2: 192.168.1.226 修改系統參數 #somaxconn echo

Redis-sentinel哨兵模式集群方案配置

系統/運維 Linux 最近研究了redis的集群方案,第一個方案是創建 redis cluster,第二種方案就是用哨兵模式來進行主從替換以及故障恢復。一、sentinel介紹Redis SentinelSentinel(哨兵)是用於監控redis集群中Master狀態的工具,其已經被集成在redi

Redis-sentinel哨兵模式叢集方案配置

最近研究了redis的叢集方案,第一個方案是建立 redis cluster,第二種方案就是用哨兵模式來進行主從替換以及故障恢復。 一、sentinel介紹 Redis Sentinel Sentinel(哨兵)是用於監控redis叢集中Master狀

Redis(九)可用專欄之Sentinel模式

置疑 登錄 ann 過期鍵 proto handle cli 也有 取整 本文講述Redis高可用方案中的哨兵模式——Sentinel,RedisClient中的Jedis如何使用以及使用原理。 Redis主從復制 Redis Sentinel模式 Jedis中的Sent

redis經典三節點可用哨兵模式叢集搭建

生產環境下,為保證redis的高可用性,通常會搭建叢集,redis叢集的好處無需多說,提升單節點的讀寫效能從而整體提升併發效率,達到整體QPS的提升,同時,多個節點可以實現資料共享,在叢集模式下,從節點會通過RDB不斷複製主節點資料達到資料的準實時備份,從而保障資料的安全性; 既然是re

一站式學習Redis 從入門到可用分散式實踐(慕課)第八章 Redis Sentinel

主從複製高可用?           主從複製,主掛掉後需要手工來操作麻煩           寫能力和儲存能力受限 (主從複製只是備份,單節點儲存能力)  #其實分散式後

基於Redis SentinelRedis叢集(主從&Sharding)可用方案

本文主要介紹一種通過Jedis&Sentinel實現Redis叢集高可用方案,該方案需要使用Jedis2.2.2及以上版本(強制),Redis2.8及以上版本(可選,Sentinel最早出現在Redis2.4中,Redis2.8中Sentinel更加穩定),Red

redisredis哨兵可用叢集

前言 Redis 的 主從複製 模式下,一旦 主節點 由於故障不能提供服務,需要手動將 從節點 晉升為 主節點,同時還要通知 客戶端 更新 主節點地址,這種故障處理方式從一定程度上是無法接受的。Redis 2.8 以後提供了 Redis Sentinel 哨兵機制 來解決這

叢集與負載均衡系列(8)——redis主從複製+哨兵實現可用性架構

     主從複製         redis主從複製非常簡單,只需要在從資料節點配置slaveof master-ip master-port即可。我就不多說了。      舉個例子,分別建立3個配置檔案,redis-6379.conf,redis-6380.conf,

spring配置單RedisSentinel 哨兵模式Redis Cluster叢集,Redis Sharding叢集

spring 整合 Redis的方式有哪些  1、單機版 不解釋  配置如下: <!-- 載入配置屬性檔案 --> <context:property-placeholder ignore-unresolvable="true" location="

Redis哨兵模式Sentinel配置與啟動(五)

14. quorum rom 修改 rewrite 最大 不可用 log 不可 一、介紹   上一篇我們已經介紹了Redis的主從復制,傳送門:《Redis高可用之主從復制實踐(四)》,想必大家對redis已經有一個概念了,那麽問題來了,如果redis主從復制的mast

Redis搭建哨兵模式並且與spring結合

1.啟動一個主redis ./redis-server ../redis.conf配置redis.conf設定守護執行緒為開啟 2.啟動一個從redis ./redis-server ../redis.conf./redis-cli -h 127.0.0.1 -p 638

redis主從架構與redis+sentinel 哨兵機制架構搭建(生產可用

服務器 replicat rep 程序 tin dir fail minutes pwd redis的搭建過程,請參考 https://blog.51cto.com/12445535/2385106 接下來,我們再找一臺服務器,進行安裝redis 實現redis的主從架構

redis主從+哨兵模式

strong img 目錄 .html 主從模式 命令 onf 模擬 -s 主從模式配置分為手動和配置文件兩種方式進行配置,我現在有192.168.238.128(CentOS1)、192.168.238.131(CentOS3)、192.168.238.132(CentO

基於DR模式的keepalived主從模式可用架構搭建

linuxkeepalived高可用一:架構圖示2.keepalived是什麽?Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機 ,或工作出現故障,Keepalived將檢測到,通過VRRP協議,將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後 K

LVS - 利用ldirectord實現RS的可用

LVSLdirectord利用ldirectord實現RS的高可用性 --- 實驗:搭建Ldirectord,實現Real Server的高可用性 LVS高可用性 --- RS的高可用 1 Director不可用,整個系統將不可用;SPoF Single Point of Failure 單點失