外國服務器的網站搜索引擎排名的三大指標
1.redis主從復制
? ? ? ? 主從復制是指將一臺redis服務器(主節(jié)點-master)的數據復制到其他的redis服務器(從節(jié)點-slave),默認每臺redis服務器都是主節(jié)點,每個主節(jié)點可以有多個或沒有從節(jié)點,但一個從節(jié)點只能有一個主節(jié)點
1.1 主從復制的作用
? ? ? ? 數據冗余:主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式
? ? ? ? 故障恢復:當主節(jié)點出現問題時,可以由從節(jié)點提供服務
? ? ? ? 負載均衡:在主從復制的基礎上配合讀寫分離,主節(jié)點提供寫服務,從節(jié)點提供讀服務,分擔服務器負載
? ? ? ? 高可用基石:主從復制是哨兵和集群能夠實施的基礎
1.2 常見主從結構
? ? ? ? 一主一從:用于主節(jié)點故障轉移從節(jié)點,主要為了數據安全性和避免持久化對主節(jié)點的影響
? ? ? ? 一主多從:主要針對讀較多的場景,讀由多個節(jié)點分擔,但影響主節(jié)點的穩(wěn)定,影響帶寬
? ? ? ? 樹狀主從:為了緩解一主多從導致的主節(jié)點壓力大的問題,形成層級結構,主管從-從再管從
1.3 實現主從復制
? ? ? ? 將redis.conf復制多份并修改配置
92? ? ? ? ? prot?? ?6379
158????????pidfile /var/run/redis_6379.pid
171?? ??? ?logfile "redis6379.log"
253?? ??? ?dbfilename dump6379.rdb
? ? ? ? 可以用指令批量替換
:%s/6379/6380/g ?
? ? ? ? 啟動不同服務器并開啟不同終端連接不同服務器
redis-server redis6379.conf
redis-cli -p 6379
? ? ? ? 輸入info replication可以查看當前服務器的角色等信息
? ? ? ? 在服務器下輸入指令,設置當前服務為從服務器和其主服務器是誰
salveof 主服務器ip 端口號
2.redis哨兵
? ? ? ? 當主服務器宕機時,為了保持功能的正常實現,我們需要一個哨兵來選一臺從服務器成為主服務器;(哨兵也是一臺單獨的redis服務器,連接主服務器,并經過主連接從)
? ? ? ? 為了防止單個哨兵出現宕機誤判等問題,我們還可以使用多個哨兵(必須為奇數),設置一個投票參數,只有當達到這個數目的哨兵認為主服務器宕機,才會主從切換
? ? ? ? 哨兵的sentinel.conf應該如下設置(注釋去掉)
protected-mode no?? ??? ??? ??? ?# 關閉保護模式,方便測試
port 26379?? ??? ??? ??? ??? ??? ?# 哨兵的端口
sentinel monitor mymaster 192.168.41.226 6379 1?? ??? ?# 192.168.41.226:主機ip 6379:端口? ? ?1:至少幾個哨兵認為主機下線時進行故障切換
? ? ? ? ?輸入redis-sentinel sentinel6379.conf 啟動哨兵
3.redis集群
? ? ? ? 從redis 3.0后版本都支持redis-cluster集群,就是開啟多臺redis主服務器連接一起形成集群,
這是為了解決sentinel模式雖然能滿足大多數需求,但無法處理大量寫的請求的問題;
? ? ? ? ?這也是經典的P2P(去中心化)
3.1 redis集群的實現
-
在/usr/local/redis下創(chuàng)建redis-cluster目錄
-
拷貝redis6379到redis-cluster中并命名為redis8001.conf
-
92? ?修改redis8001.conf中的端口號
-
158 修改pidfile
-
171 修改日志文件
-
253 修改rdb文件
-
699?開啟aof設為yes
-
703 指定aof文件名
-
832 開啟集群 設為yes
-
840 指定nodes配置文件
? ? ? ? 為了方便多個redis服務器的啟動,我們可以編寫一個啟動腳本,在/user/local/redis下創(chuàng)建start_all.sh文件,在文件中加入
redis-server redis-cluster/redis8001.conf
redis-server redis-cluster/redis8002.conf
redis-server redis-cluster/redis8003.conf
redis-server redis-cluster/redis8004.conf
redis-server redis-cluster/redis8005.conf
redis-server redis-cluster/redis8006.conf
ps -ef|grep redis
? ? ? ? 保存退出,為start_all.sh文件添加執(zhí)行權限
chmod +x start_all.sh
? ? ? ? ?啟動redis
./start_all
? ? ? ? 創(chuàng)建集群
redis-cli --cluster create 192.168.74.130:8001 192.168.74.130:8002 192.168.74.130:8003 192.168.74.130:8004 192.168.74.130:8005 192.168.74.130:8006 --cluster-replicas 1?
? ? ? ? 創(chuàng)建過程中要輸入yes?
? ? ? ? 連接redis集群要使用-c
redis-cli -c -p 8001
? ? ? ? 創(chuàng)建集群關閉腳本
#!/bin/bash
PORT=8001
ENDPORT=8006
while [ $((PORT <= ENDPORT)) != "0" ]; do
? ?echo "Stopping Redis $PORT"
? ?redis-cli -p $PORT shutdown
? ?PORT=$((PORT+1))
done
echo "done"
exit 0?
? ? ? ? 添加執(zhí)行權限?
chmod +x stop_all.sh ?