sessionState~RedisSessionStateProvider高(gao)可用的實現
早(zao)在幾年前就有了sessionState進行共享session的(de)方式(shi),今(jin)天總(zong)結一(yi)下(xia)高(gao)可用redis實現的(de)共享session的(de)方式(shi)
sentinel集群搭建

工作過程圖

配置
Redis數據服務配置
首先配置Redis的主從服務器,修改redis.conf文件如下
主服務配置
bind 192.168.xx.xx 192.168.xx.xx192.168.xx.xx
requirepass "123456"
從服務配置
bind 192.168.xx.xx 192.168.xx.xx192.168.xx.xx
requirepass "123456"
slaveof 192.168.xx.xx6379
masterauth 123456
Redis 哨兵服務配置
配置3個(ge)哨(shao)兵,每個(ge)哨(shao)兵的配置都是(shi)一樣的。在Redis安裝目錄下(xia)有一個(ge)sentinel.conf文件,copy一份進行修改。
# 禁止保護模式
protected-mode no
# 配置監聽的主服務器,這里sentinel monitor代表監控,mymaster代表服務器的名稱,可以自定義,192.168.11.128代表監控的主服務器,6379代表端口,2代表只有兩個或兩個以上的哨兵認為主服務器不可用的時候,才會進行failover操作。
sentinel monitor mymaster 192.168.xx.xx 6379 2
# sentinel author-pass定義服務的密碼,mymaster是服務名稱,123456是Redis服務器密碼
sentinel auth-pass mymaster 123456
啟動
從主-再從-再哨兵
./redis-server ./redis.conf &
./redis-sentinel ./sentinel.conf &
哨兵集群操作命令
redis-cli -h 192.168.60.128 -p 26379 info sentinel
redis-cli -h 192.168.60.128 -p 26379 SENTINEL master mymaster
redis-cli -h 192.168.60.129 -p 26379 SENTINEL slaves1 mymaster
redis-cli -h 192.168.60.130 -p 26379 SENTINEL slaves2 mymaster
.net應用的配置
直接把redis數據(ju)服務器(qi)地址寫上即可
當主(zhu)redis宕機之(zhi)后,會有幾秒(miao)的停頓,然后會自動選舉(ju)新的master.
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<sessionState mode="Custom" customProvider="MySessionStateStore" cookieName="pkulaw_v6_sessionid" timeout="240">
<providers>
<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="192.168.xx.xx:xx,192.168.xx.xx:xx,192.168.xx.xx:xx,password=xxx" databaseId="0" applicationName="xxx" connectionTimeoutInMilliseconds="30000" operationTimeoutInMilliseconds="20000" accessKey="" ssl="false" />
</providers>
</sessionState>
</system.web>