Linux系統架構-----redis羣集搭建

目錄

一.redis羣集介紹

主從同步/複製

哨兵模式

Cluster羣集

二.redis-cluster羣集搭建

實驗環境

master的具體配置

創建羣集

salve的具體配置

驗證羣集功能


一.redis羣集介紹

  • redis羣集有三種模式,分別是主從同步/複製、哨兵模式、Cluster,下面會講解一下三種模式的工作方式,以及如何搭建Cluster羣集

主從同步/複製

  • 通過持久化功能,redis保證了即使在服務器重啓的情況下也不會丟失(或少量丟失)數據,因爲持久化會把內存中的數據保存到硬盤上,重啓會從硬盤上加載數據,但是由於數據是存儲在一臺服務器上的,如果這臺服務器出現硬盤故障等問題,也會導致數據丟失。爲了避免單點故障,通常的做法是將數據庫複製多個副本以部署在不同的服務器上,這樣即使有一臺服務器出現故障,其他服務器依然可以繼續提供服務,爲此,redis提供了複製(replication)功能,可以實現當一臺數據庫中的數據更新後,自動將更新的數據同步到其他數據庫上。
  • 在複製的概念中,數據庫分爲兩類,一類是主數據庫(master),另一類是從數據(slave)。主數據可以進行讀寫操作,當寫操作導致數據變化時會自動將數據同步給從數據庫,而從數據庫一般是隻讀的,並接受主數據同步過來的數據。一個主數據庫可以擁有多個從數據庫,而一個從數據庫只能擁有一個主數據庫
  • 主從複製原理圖

  • 主從複製的優勢:支持主從複製,主機會自動將數據同步到從機,可以進行讀寫分離;爲了分載master的讀操作壓力,slave服務器可以爲客戶端提供只讀操作的服務,寫服務仍然必須由master來完成;slave同樣可以接受其他slaves的連接和同步請求,這樣可以有效的分載master的同步壓力;master server是以非阻塞的方式爲slaves提供服務,所以在master-slave同步期間,客戶端仍然可以提交查詢或者修改請求;slave server同樣是以非阻塞的方式完成數據同步,在數據同步期間,如果有客戶端提交查詢請求,redis則返回同步之前的數據。
  • 主從複製的缺點:redis不具備自動容錯和恢復功能,主機從機的宕機都會導致前端部分讀寫請求失敗,需要等待機器重啓或者手動切換前端的IP才能恢復;主機宕機,宕機前有部分數據未能及時同步到從機,切換ip後還會引入數據不一致的問題,降低了系統的可用性;如果多個Slave斷線了,需要重啓的時候,儘量不要在同一時間段重啓,因爲只要slave重啓,就會發送sync請求和主機全量同步;redis較難支持在線擴容,在集羣容量達到上限時在線擴容會變得很複雜

哨兵模式

  • 第一種主從同步/複製模式,當主服務器宕機後,需要手動把一臺從服務器切換爲主服務器,這就需要人工干預,比較費事,還會造成一段時間內服務不可用。所以更多時候,我們優先考慮哨兵模式
  • 哨兵模式是一種特殊的模式,首先redis提供了哨兵的命令,哨兵就是一個獨立的進程,作爲進程,它會獨立運行。其原理是哨兵通過發送命令,等待redis服務響應,從而監控運行的多個redis實例

  • 哨兵模式的作用:通過發送命令,redis服務器返回監控其運行狀態,包括主服務器和從服務器;當哨兵檢測到master宕機,會自動將slave切換成master,然後通過發佈訂閱模式通知其他的從服務,修改配置文件,讓它們切換主機;
  • 然而一個哨兵進程對redis服務器進行監控,也可能會出現問題,爲此,我們可以使用多個哨兵進行監控。各個哨兵之間還會進行監控,這樣就形成了多哨兵模式

  • 故障切換的過程:假設主服務器宕機,哨兵1先檢測到這個結果,系統並不會馬上進行failover過程,僅僅是哨兵1主觀的認爲主服務器不可用,這個現象稱爲主觀下線,當後面的哨兵也檢測到主服務器不可用,並且數量達到一定值時,那麼哨兵之間會進行一次投票,投票的結果由一個哨兵發起,進行failover操作。切換成功後,就會通過發佈訂閱模式,讓各個哨兵把自己監控的從服務器實現切換主機,這個過程稱爲客觀下線。這樣對於客戶端而言,一切都是透明的
  • 哨兵模式的工作方式:①每個Sentinel(哨兵)進程以每秒一次的頻率向整個羣集中的master主服務器,slave從服務器以及其他sentinel進程發送一個ping命令。②如果一個實例(instance)距離最後一次有效回覆ping命令的時間超過down-after-milliseconds選項所指定的值,則這個實例會被sentinel進程標記爲主觀下線(SDOWN);③如果一個master主服務器被標記爲主觀下線(SDOWN),則正在監視這個master主服務器的所有sentinel進程要以每秒一次的頻率確認master主服務器的確進入了主觀下線狀態;④當有足夠數量的sentinel進程(大於等於配置文件指定的值)在指定的時間範圍內確認master主服務器進入了主觀下線狀態(SDOWN),則master主服務器會被標記爲客觀下線(ODOWN);⑤在一般情況下, 每個 Sentinel(哨兵)進程會以每 10 秒一次的頻率向集羣中的所有Master主服務器、Slave從服務器發送 INFO 命令;⑥當Master主服務器被 Sentinel(哨兵)進程標記爲客觀下線(ODOWN)時,Sentinel(哨兵)進程向下線的 Master主服務器的所有 Slave從服務器發送 INFO 命令的頻率會從 10 秒一次改爲每秒一次;⑦若沒有足夠數量的 Sentinel(哨兵)進程同意 Master主服務器下線, Master主服務器的客觀下線狀態就會被移除。若 Master主服務器重新向 Sentinel(哨兵)進程發送 PING 命令返回有效回覆,Master主服務器的主觀下線狀態就會被移除。
  • 哨兵模式的優勢:哨兵模式是基於主從模式的,所有主從模式的優點,哨兵模式都具有;主從可以自動切換,系統更健壯,可用性更高
  • 哨兵模式的缺點:redis比較難支持在線擴容,在羣集容量達到上限時在線擴容會變得很複雜

Cluster羣集

  • redis的哨兵模式基本已經可以實現高可用、讀寫分離,但是在這種模式每臺redis服務器都存儲相同的數據,很浪費內存資源,所以在redis3.0上加入了Cluster羣集模式,實現了redis的分佈式存儲,也就是說每臺redis節點存儲着不同的內容
  • 根據官方推薦,集羣部署至少要3臺以上的master節點,最好使用3主3從六個節點的模式。
  • Cluster羣集由多個redis服務器組成的分佈式網絡服務羣集,羣集之中有多個master主節點,每一個主節點都可讀可寫,節點之間會相互通信,兩兩相連,redis羣集無中心節點

  • 在redis-Cluster羣集中,可以給每個一個主節點添加從節點,主節點和從節點直接遵循主從模型的特性,當用戶需要處理更多讀請求的時候,添加從節點可以擴展系統的讀性能
  • redis-cluster的故障轉移:redis羣集的主機節點內置了類似redis sentinel的節點故障檢測和自動故障轉移功能,當羣集中的某個主節點下線時,羣集中的其他在線主節點會注意到這一點,並且對已經下線的主節點進行故障轉移
  • 集羣進行故障轉移的方法和redis sentinel進行故障轉移的方法基本一樣,不同的是,在集羣裏面,故障轉移是由集羣中其他在線的主節點負責進行的,所以羣集不必另外使用redis sentinel

二.redis-cluster羣集搭建

實驗環境

類別 IP地址 系統 軟件包
master

ens33:192.168.43.101

ens37:192.168.43.247

ens38:192.168.43.248

centos7

redis-5.0.7.tar.gz

rvm-1.29.9.tar.gz

slave

ens33:192.168.43.102

ens36:192.168.43.185

ens37:192.168.43.156

centos7 redis-5.0.7.tar.gz

master的具體配置

  • 安裝redis
1.下載redis的安裝包
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2.通過yum工具,安裝編譯工具
[root@localhost ~]# yum install gcc gcc-c++ make -y 
3.解壓redis軟件包
tar xzvf redis-5.0.7.tar.gz -C /opt
4.編譯且安裝
cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis install
5.開啓服務,設置各類文件
cd /opt/redis-5.0.7/utils/
[root@localhost utils]# ./install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server
 
Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]     //定義主配置文件
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]     //定義日誌文件
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] //數據文件
Selected default - /var/lib/redis/6379
Please select the redis executable path [] /usr/local/redis/bin/redis-server //可執行文件路徑,需要自行定義
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/redis/bin/redis-server
Cli Executable : /usr/local/redis/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
[root@localhost redis]# netstat -natp | grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      6475/redis-server 1 
6.創建軟鏈接,便於服務控制
ln -s /usr/local/redis/bin/* /usr/local/bin/
7.進入redis數據庫
[root@localhost init.d]# vim /etc/redis/6379.conf 
bind 127.0.0.1 192.168.43.101    //綁定本機地址
[root@localhost init.d]# service redis_6379 restart     //重啓服務
Stopping ...
Redis stopped
Starting Redis server...
[root@localhost ~]# redis-cli -h 192.168.43.101 -p 6379    //-h指定地址,-p指定端口
192.168.43.101:6379> 
  • redis的配置文件修改

[root@localhost ~]# cd /etc/redis/
[root@localhost redis]# ls
6379.conf
[root@localhost redis]# vim 6379.conf 
#bind 127.0.0.1    //註釋第70行的監聽127地址,表示監聽所有地址
protected-mode no    //去掉第89行註釋,關閉安全保護
port 6379    //去掉第93行註釋,開啓端口6379
daemonize yes    //去掉第137行註釋,以獨立進程啓動
appendonly yes    //去掉第700行註釋,開啓aof持久化功能
cluster-enabled yes    //去掉第833行註釋,開啓羣集功能
cluster-config-file node-6379.conf    //去掉第841行註釋,羣集名稱文件設置
cluster-node-timeout 15000    //去掉第847行註釋,羣集超時時間設置
[root@localhost ~]# service redis_6379 restart    //重啓服務
[root@localhost ~]# ls /var/lib/redis/6379/    //生成下列三個文件說明設置成功
appendonly.aof  dump.rdb  nodes-6379.conf
[root@localhost ~]# 
  • 安裝rvm、ruby等控制羣集軟件包

  • 先安裝rvm

[root@master1 6379]# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3	'//導入key文件,若出現error,重新導入一次即可'
[root@master1 6379]# curl -sSL https://get.rvm.io | bash -s stable	'//安裝rvm'

注:執行 gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3第一次時會出現超時錯誤,可繼續執行第二次

執行curl -sSL https://get.rvm.io | bash -s stable時可能會出現curl: (7) Failed connect to get.rvm.io:443; 拒絕連接錯誤

可以關閉虛擬機防火牆,安全性功能,也有也可能時網絡比較差,此外也可以把https換成http試試

  • 執行上述命令之後,到指定的網址下載rvm軟件包

  • 繼續安裝ruby
[root@master1 ]# tar xzvf rvm-1.29.9.tar.gz -C /opt
[root@master1 ]# cd /opt/rvm-1.29.9/
[root@master1 rvm-master]# ./install
[root@master1 rvm-master]# source /etc/profile.d/rvm.sh	'//執行環境變量'
[root@master1 rvm-master]# rvm list known	'//列出ruby可以安裝的版本'
[root@master1 rvm-master]# rvm install 2.4.1	'//安裝ruby2.4.1版本,安裝版本的事件會比較長'
[root@master1 rvm-master]# ruby -v '//查看當前ruby版本'
[root@master1 rvm-master]# gem install redis '//再次安裝redis'
  • 在主服務器上添加兩張網卡(NAT模式)
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.101  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::ba30:ef5e:b59f:4f1c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ce:5f:24  txqueuelen 1000  (Ethernet)
        RX packets 20474  bytes 23306731 (22.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13349  bytes 1202079 (1.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.247  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::5002:420d:b2f3:d518  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ce:5f:2e  txqueuelen 1000  (Ethernet)
        RX packets 25  bytes 4365 (4.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 3497 (3.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.248  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::65f1:4a49:7551:b2ad  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ce:5f:38  txqueuelen 1000  (Ethernet)
        RX packets 17  bytes 3581 (3.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22  bytes 3757 (3.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 68  bytes 5916 (5.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5916 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:7a:bf:df  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# 
  • 關閉防火牆,SElinux功能
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# 
  • 創建羣集

[root@localhost ~]# redis-cli --cluster create 192.168.43.101:6379 192.168.43.102:6379 192.168.43.185:6379 192.168.43.156:6379 192.168.43.247:6379 192.168.43.248:6379 --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.43.247:6379 to 192.168.43.101:6379
Adding replica 192.168.43.248:6379 to 192.168.43.102:6379
Adding replica 192.168.43.156:6379 to 192.168.43.185:6379
M: fb29c713b2a345948594e2dfc3ba0d1d7e2b892b 192.168.43.101:6379
   slots:[0-5460] (5461 slots) master
M: f0bb6db083e065ca614b306e92a4c7e347379746 192.168.43.102:6379
   slots:[5461-10922] (5462 slots) master
M: f0bb6db083e065ca614b306e92a4c7e347379746 192.168.43.185:6379
   slots:[10923-16383] (5461 slots) master
S: f0bb6db083e065ca614b306e92a4c7e347379746 192.168.43.156:6379
   replicates f0bb6db083e065ca614b306e92a4c7e347379746
S: fb29c713b2a345948594e2dfc3ba0d1d7e2b892b 192.168.43.247:6379
   replicates fb29c713b2a345948594e2dfc3ba0d1d7e2b892b
S: fb29c713b2a345948594e2dfc3ba0d1d7e2b892b 192.168.43.248:6379
   replicates f0bb6db083e065ca614b306e92a4c7e347379746
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.43.101:6379)
M: fb29c713b2a345948594e2dfc3ba0d1d7e2b892b 192.168.43.101:6379
   slots:[0-5460] (5461 slots) master
M: f0bb6db083e065ca614b306e92a4c7e347379746 192.168.43.102:6379
   slots:[5461-16383] (10923 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@localhost ~]# 

'//一主一從的綁定關係是隨機的'

salve的具體配置

  • 安裝redis
1.下載redis的安裝包
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2.通過yum工具,安裝編譯工具
[root@localhost ~]# yum install gcc gcc-c++ make -y 
3.解壓redis軟件包
tar xzvf redis-5.0.7.tar.gz -C /opt
4.編譯且安裝
cd /opt/redis-5.0.7/
make
make PREFIX=/usr/local/redis install
5.開啓服務,設置各類文件
cd /opt/redis-5.0.7/utils/
[root@localhost utils]# ./install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server
 
Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]     //定義主配置文件
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]     //定義日誌文件
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] //數據文件
Selected default - /var/lib/redis/6379
Please select the redis executable path [] /usr/local/redis/bin/redis-server //可執行文件路徑,需要自行定義
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/redis/bin/redis-server
Cli Executable : /usr/local/redis/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
[root@localhost redis]# netstat -natp | grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      6475/redis-server 1 
6.創建軟鏈接,便於服務控制
ln -s /usr/local/redis/bin/* /usr/local/bin/
7.進入redis數據庫
[root@localhost init.d]# vim /etc/redis/6379.conf 
bind 127.0.0.1   //綁定本機地址
[root@localhost init.d]# service redis_6379 restart     //重啓服務
Stopping ...
Redis stopped
Starting Redis server...
[root@localhost ~]# redis-cli -h 192.168.43.102 -p 6379    //-h指定地址,-p指定端口
192.168.43.102:6379> 
  • 修改redis的配置文件
[root@localhost ~]# cd /etc/redis/
[root@localhost redis]# ls
6379.conf
[root@localhost redis]# vim 6379.conf 
#bind 127.0.0.1    //註釋第70行的監聽127地址,表示監聽所有地址
protected-mode no    //去掉第89行註釋,關閉安全保護
port 6379    //去掉第93行註釋,開啓端口6379
daemonize yes    //去掉第137行註釋,以獨立進程啓動
appendonly yes    //去掉第700行註釋,開啓aof持久化功能
cluster-enabled yes    //去掉第833行註釋,開啓羣集功能
cluster-config-file node-6379.conf    //去掉第841行註釋,羣集名稱文件設置
cluster-node-timeout 15000    //去掉第847行註釋,羣集超時時間設置
[root@localhost ~]# service redis_6379 restart    //重啓服務
[root@localhost ~]# ls /var/lib/redis/6379/    //生成下列三個文件說明設置成功
appendonly.aof  dump.rdb  nodes-6379.conf
[root@localhost ~]# 
  • 添加兩張網卡,NAT模式
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.102  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::8bfb:257d:51e7:df8d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0b:69:b8  txqueuelen 1000  (Ethernet)
        RX packets 104  bytes 14082 (13.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 130  bytes 15325 (14.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.185  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::e290:e267:67cc:d325  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0b:69:cc  txqueuelen 1000  (Ethernet)
        RX packets 23  bytes 4114 (4.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 23  bytes 3790 (3.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.156  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::27d8:17c4:73f1:4b4a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0b:69:c2  txqueuelen 1000  (Ethernet)
        RX packets 15  bytes 2534 (2.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 21  bytes 3566 (3.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 68  bytes 5916 (5.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5916 (5.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:ae:e3:34  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# 
  • 關閉防火牆,SElinux
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# 

驗證羣集功能

  • 驗證主從數據同步
[root@localhost ~]# redis-cli -h 192.168.43.101 -p 6379	'//登陸到101服務器數據庫'
192.168.43.101:6379> keys *
(empty list or set)
192.168.43.101:6379> set user lisi	'//創建一個鍵值'
OK
192.168.43.101:6379> keys *	'//查看所有鍵'
1) "user"
192.168.43.101:6379> get user	'//查看user鍵的值'
"lisi"
192.168.43.101:6379> exit	'//退出'
[root@localhost ~]# redis-cli -h 192.168.43.247 -p 6379	'//登陸到247服務器數據庫'
192.168.43.247:6379> keys *
1) "user"
192.168.43.247:6379> get user	'//查看user鍵的值'
(error) MOVED 5474 192.168.43.102:6379	'//提示移動到102節點上'
192.168.43.247:6379> exit
[root@localhost ~]# redis-cli -h 192.168.43.102 -p 6379	'//登陸到102服務器的數據庫'
192.168.43.102:6379> keys *
1) "user"
192.168.43.102:6379> get user
"lisi"
192.168.43.102:6379> exit

 

發佈了118 篇原創文章 · 獲贊 132 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章