3合一網(wǎng)站怎么做江蘇搜索引擎優(yōu)化公司
主從復制實現(xiàn)Redis集群實驗 (一主二從):
實驗環(huán)境: 使用Docker 搭建 Redis 版本 5.0.5
打開一個終端窗口,在其中運行如下命令創(chuàng)建一個名為redis-master的Redis容器。注意,它的端口是6379 (本地的端口:映射到容器的端口)
docker run -itd--name redis-master -p 6379:6379 redis:5.0.5(冒號后可跟特定的版本號;不寫的話, 默認latest,即最新的版本)
新開一個命令窗口,在其中運行如下命令創(chuàng)建一個名為redis·slave1的容器。注意,它的端口是6380。這里是在一臺電腦端口號來區(qū)別一臺主Redis容器和另外兩臺從Redis容器。在真實項目里,多臺Redis會部署在不同的服務器上 可以通過命令來創(chuàng)建從服務器
docker run -itd --name redis-slave1 -p 6380:6380 redis:5.0.5
docker run -itd --name redis-slave2 -p 6381:6381 redis:5.0.5
查看redis-master容器的ip地址, 這里是172.17.0.2
docker inspect my_redis | grep IPAddress
在真實項目里,Redis服務器所在的IP地址是固定的 而容器啟動的Redis服務器的IP地址是動態(tài)的,所以這里用上述命令來獲取IP地址 在redis-master容器的命令窗口里,分別運行命令,進入命令行窗口
docker exec -it 容器id可以(頭幾個字母就行), names也可以(能唯一標識容器即可) /bin/bashexit # 這個命令用于退出容器
可以使用redis-cli命令進入Redis的客戶端命令行
redis-cli
因為還沒有配置, 所以 顯示的從節(jié)點連接數(shù)為0。
然后從服務器中, 可以到由于此時還沒有通過命令行設置主從模式,因此輸出結(jié)果里依然能看到當前服務器是“主服務器”,同時沒有攜帶從服務器。在redis-slave1容器的命令窗口里運行如下的命令,指定當前Redis服務器為從服務器。該命令的格式是slaveof IP地址端口號
在從節(jié)點上執(zhí)行下述指令, 使得與主節(jié)點建立關(guān)系
slaveof 172.17.0.2 6379
主從服務器建立關(guān)系
操作后, 主節(jié)點的狀態(tài)
從節(jié)點的狀態(tài)
主從復制模式能達到的效果: 主節(jié)點寫東西, 從節(jié)點能夠讀取到數(shù)據(jù)
在項目里除了可以用slaveof命令搭建主從模式的集群外,還可以用配置參數(shù)的方式來搭建,具體的步驟如下: 搭建主服務器的命令不變,并且還是用6379端口
docker run -itd my_redis -p 6379:6379 redis:5.0.5
// 配置從節(jié)點的配置文件 如: cd /usr/server vim redisSlave1.conf
port 6380
slaveof 172.12.0.2 6379
修改完配置文件后, 啟動容器時需要進行映射 (本地:容器里), 并在啟動后讀指定的配置文件 (docker logs 容器id -> 能看到報錯信息)
docker run -itd --name redis-slave1 -v /usr/server/redisSlave1.conf:/redisConfig/
redisSlave1.conf -p 6380:6380 redis:5.0.5 redis-server /redisConfig/redisSlave1.conf
因為修改了端口 (配置文件中已修改), 所以從節(jié)點在啟動 redis-cli的時候需要指定端口號
redis-cli -h 127.0.0.1 -p 6380
默認從節(jié)點只能讀, 不能寫
可以在配置文件中增加一行, 從而使得從節(jié)點可讀可寫
slave-read-only no # 指定該服務器可讀可寫
還有一些配置 能控制主從節(jié)點復制的操作
// 主節(jié)點的配置
min-slaves-to-write 2
min-slaves-max-1ag 15
第1行的參數(shù)表示實現(xiàn)主從復制的從服務器個數(shù)最少是2臺,第2行的參數(shù)表示如果由第1行參數(shù)指定的從服務器個數(shù)(這里是2臺)的心跳延遲時間(lag值)大于15秒,就不執(zhí)行主從復制。
這兩個條件是“或者”的關(guān)系,即只要出現(xiàn)從服務器個數(shù)小于2,或者2臺從服務器的心跳延遲時間大于15秒,主服務器即停止主從復制的操作 (控制主從復制)