redis5叢集搭建,整合spring-boot測試
阿新 • • 發佈:2018-12-03
1.下載redis5.0.2
2.安裝
tar -zxvf redis-5.0.2.tar.gz
cd redis-5.0.2
make && make install
3.建立並使用叢集配置
建立redis-cluster
目錄和相應的配置目錄
mkdir redis-cluster
cd reids-cluster
mkdir 7000 70001 7002 7003 7004 7005
redis-cluster
在每個目錄中建立一個檔案,從7000到7005配置檔案的模板,只需使用上面的小例子,但請確保7000
根據目錄名稱用正確的埠號替換埠號,模版如下:
## 7000-7005埠 port 7000 ## 後臺啟動 daemonize yes ## 如果是在單機模擬叢集必須指定bind的IP,這裡為192.168.4.115 bind 192.168.4.115 ## 開啟redis-cluster叢集 cluster-enabled yes ## 每個例項還包含儲存此節點配置的檔案的路徑,預設情況下為nodes.conf,自動建立 cluster-config-file nodes_7000.conf ## 超時 cluster-node-timeout 500 ## 開啟aof appendonly yes
請注意,按預期工作的最小群集需要包含至少三個主節點。對於您的第一次測試,強烈建議啟動具有三個主伺服器和三個從伺服器的六節點叢集。
4.啟動redis叢集
進入redis根目錄
cd src cp redis-cli /usr/local/bin cp redis-server /usr/local/bin redis-server ./redis-cluster/7000/redis.conf redis-server ./redis-cluster/7001/redis.conf redis-server ./redis-cluster/7002/redis.conf redis-server ./redis-cluster/7003/redis.conf redis-server ./redis-cluster/7004/redis.conf redis-server ./redis-cluster/7005/redis.conf
檢視redis啟動的程序
501 88365 1 0 4:52下午 ?? 0:08.52 redis-server 192.168.4.115:7000 [cluster] 501 88367 1 0 4:52下午 ?? 0:08.53 redis-server 192.168.4.115:7001 [cluster] 501 88369 1 0 4:52下午 ?? 0:08.50 redis-server 192.168.4.115:7002 [cluster] 501 88371 1 0 4:52下午 ?? 0:08.46 redis-server 192.168.4.115:7003 [cluster] 501 88373 1 0 4:52下午 ?? 0:08.44 redis-server 192.168.4.115:7004 [cluster] 501 88375 1 0 4:52下午 ?? 0:08.40 redis-server 192.168.4.115:7005 [cluster]
執行redis5新增的叢集啟動方式
redis-cli --cluster create 192.168.4.115:7000 192.168.4.115:7001 \
192.168.4.115:7002 192.168.4.115:7003 192.168.4.115:7004 192.168.4.115:7005 \
--cluster-replicas 1
這裡使用的命令是create,因為我們要建立一個新的叢集。
該選項--cluster-replicas 1
意味著我們希望每個建立的主伺服器都有一個從服 其他引數是我要用於建立新叢集的例項的地址列表。
輸出結果:
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.4.115:7003 to 192.168.4.115:7000
Adding replica 192.168.4.115:7004 to 192.168.4.115:7001
Adding replica 192.168.4.115:7005 to 192.168.4.115:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 4d3203ec44f8090ac52cd46b240782c2002e3bac 192.168.4.115:7000
slots:[0-5460] (5461 slots) master
M: 25b0adb22a69de53e6dc261f0bd83f9c94e9ce53 192.168.4.115:7001
slots:[5461-10922] (5462 slots) master
M: c7e12a476431ee892b0c66c62bdef12cde06d2df 192.168.4.115:7002
slots:[10923-16383] (5461 slots) master
S: 23dee0b82d6ef32bfcdfb1eb9f3dc3a9f5beddb9 192.168.4.115:7003
replicates 25b0adb22a69de53e6dc261f0bd83f9c94e9ce53
S: 3fca8f25d28bf0fcf4fd2b1b11d9bc9bd084d6c6 192.168.4.115:7004
replicates c7e12a476431ee892b0c66c62bdef12cde06d2df
S: 9bc42f176e6c4c421c26b55b3e5edc984fed0992 192.168.4.115:7005
replicates 4d3203ec44f8090ac52cd46b240782c2002e3bac
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
>>> Performing Cluster Check (using node 192.168.4.115:7000)
M: 4d3203ec44f8090ac52cd46b240782c2002e3bac 192.168.4.115:7000
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 9bc42f176e6c4c421c26b55b3e5edc984fed0992 192.168.4.115:7005
slots: (0 slots) slave
replicates 4d3203ec44f8090ac52cd46b240782c2002e3bac
M: 25b0adb22a69de53e6dc261f0bd83f9c94e9ce53 192.168.4.115:7001
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: c7e12a476431ee892b0c66c62bdef12cde06d2df 192.168.4.115:7002
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 23dee0b82d6ef32bfcdfb1eb9f3dc3a9f5beddb9 192.168.4.115:7003
slots: (0 slots) slave
replicates 25b0adb22a69de53e6dc261f0bd83f9c94e9ce53
S: 3fca8f25d28bf0fcf4fd2b1b11d9bc9bd084d6c6 192.168.4.115:7004
slots: (0 slots) slave
replicates c7e12a476431ee892b0c66c62bdef12cde06d2df
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
確認redis-cluster
狀態,cluster_state:ok
說明成功
redis-cli -h 192.168.4.115 -p 7000
192.168.4.115:7000> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:53115
cluster_stats_messages_pong_sent:53112
cluster_stats_messages_sent:106227
cluster_stats_messages_ping_received:53107
cluster_stats_messages_pong_received:53115
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:106227
還可以使用官方寫好的redis-cluster指令碼,進入redis根目錄,裡面有一個指令碼(與它所包含的目錄同名),它是一個簡單的bash指令碼。要啟動具有3個主伺服器和3個從伺服器的6節點叢集,只需鍵入以下命令
cd utils/create-cluster
## 啟動
create-cluster start
## 建立叢集
create-cluster create
您現在可以與群集互動,預設情況下,第一個節點將從埠30001開始,關閉命令為
## 關閉
create-cluster stop
5.整合spring-boot
新增maven
依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
新增redis
配置資訊
spring:
redis:
cluster:
nodes: 192.168.4.115:7000,192.168.4.115:7001,192.168.4.115:7002,192.168.4.115:7003,192.168.4.115:7004,192.168.4.115:7005
新增SpringBootTest
測試
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestDemo {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void test() {
redisTemplate.opsForValue().set("redis-cluster-state", "success");
System.out.println(redisTemplate.opsForValue().get("redis-cluster-state"));
}
}
輸出結果:
2018-12-03 16:54:41.431 INFO 88393 --- [ main] io.lettuce.core.EpollProvider : Starting without optional epoll library
2018-12-03 16:54:41.433 INFO 88393 --- [ main] io.lettuce.core.KqueueProvider : Starting without optional kqueue library
success