1.安裝
yum install epel-release.noarch -y
yum install redis -y
2.配置主從
主:
vim /etc/redis.conf #修改配置文件
bind 10.1.1.111 #修改監聽IP
requirepass 233233 #添加密碼node
從:
vim /etc/redis.conf #修改配置文件
bind 10.1.1.112 #修改監聽IP
slaveof 10.1.1.111 6379 #指定主的ip和端口
masterauth 233233 # 指定主的密碼
另外一臺從也這個配置web
systemctl start redis #同時啓動三臺主機 redis-cli -h 10.1.1.111 -a 233233 #登錄主服務器 10.1.1.111:6379> INFO replication #查看主從信息 #Replication role:master connected_slaves:2 slave0:ip=10.1.1.112,port=6379,state=online,offset=1135,lag=0 slave1:ip=10.1.1.113,port=6379,state=online,offset=1135,lag=1 master_repl_offset:1135 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:1134 10.1.1.111:6379>
在主服務器建立一個鍵值redis
11.10.1.1.111:6379> set ID 001 OK 10.1.1.111:6379> get ID "001" 10.1.1.111:6379>
切換到從服務器查看vim
[root@cs112 ~]# redis-cli -h 10.1.1.112 -a 233233 #登錄112服務器 10.1.1.112:6379> get ID #查看ID鍵值 "001" 10.1.1.112:6379>
命令配置主從 (命令配置會自動同步到配置文件)
[root@web1 ~]# redis-cli -h 10.1.1.233服務器
10.1.1.233:6379> slaveof 10.1.1.111 6379 OK 10.1.1.233:6379> config set masterauth 233233 OK 10.1.1.233:6379>
登錄到主服務器查看主從less
10.1.1.111:6379> INFO replication # Replication role:master connected_slaves:3 slave0:ip=10.1.1.112,port=6379,state=online,offset=2602,lag=1 slave1:ip=10.1.1.113,port=6379,state=online,offset=2602,lag=1 slave2:ip=10.1.1.233,port=6379,state=online,offset=2602,lag=1 master_repl_offset:2602 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:2
#能夠看到,這邊從服務器已經有三個了tcp
下面是redis主從複製場景的一些可調參數,須要根據實際環境調整ide
slave-serve-stale-data yes : 是否能夠把不新鮮的數據服務與客戶端 slave-read-only yes : 從節點只讀,啓用slaveof定義後才生效 repl-diskless-sync no :是否同時向多個從節點同時發數據 repl-diskless-sync-delay 5 :發送的延遲時間 repl-ping-slave-period 10 探測從節點狀態 repl-timeout 60 探測節點超時時間 repl-disable-tcp-nodelay no : 啓用nodelay repl-backlog-size 1mb slave-priority 100 : 從節點優先級,複製集羣中,主節點故障時,sentinel應用場景中的主節點選舉時使用的優先級;數字越小優先級越高,但0表示不參與選舉; min-slaves-to-write 3:主節點僅容許其可以通訊的從節點數量大於等於此處的值時接受寫操做; min-slaves-max-lag 10:從節點延遲時長超出此處指定的時長時,主節點會拒絕寫入操做;
3.高可用
先找一臺從服務器把優先級調高
vim /etc/redis.conf #修改112從服務器的配置
slave-priority 110 #調到110,默認100
systemctl restart redis #重啓一下ui
找三臺服務器 配置sentinel服務
vim /etc/redis-sentinel.conf
bind 10.1.1.112 #監聽IP
sentinel monitor mymaster 10.1.1.111 6379 2 #設置主服務器ip
sentinel auth-pass mymaster 233233 #主服務器的認證
#其餘兩臺除了IP不同其餘 同樣配置加密
查看
先將主服務器的redis的服務給停掉
redis-cli -h 10.1.112 -p 26379 #登錄sentinel服務
10.1.1.112:26379> SENTINEL masters #查看主服務器狀態 1) 1) "name" 2) "mymaster" 3) "ip" 4) "10.1.1.113" 5) "port" 6) "6379" 7) "runid" 8) "7ee5fe0e808bd06638f0f4c365d95c7694c6770c" 9) "flags" 10) "master"
上面咱們已經能看到主的已經轉移到113主機了,打開其餘從服務器配置能夠發現,配置文件裏指向10.1.1.111爲主的已經被改爲了113了。
redis-cli -h 10.1.1.112 -a 233233 #等112的從服務器
10.1.1.112:6379> iNFO replication # Replication role:slave master_host:10.1.1.113 master_port:6379 master_link_status:down master_last_io_seconds_ago:-1 master_sync_in_progress:0 slave_repl_offset:1 master_link_down_since_seconds:1574609981 slave_priority:110 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 10.1.1.112:6379>
#上面能夠看到從 從服務器112 主已經變成了113服務器了