国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Redis 3.0集群搭建測試(二)

2019-11-08 20:30:52
字體:
供稿:網(wǎng)友

四、客戶端集群命令

cluster集群相關(guān)命令,更多Redis相關(guān)命令見文檔:http://redis.readthedocs.org/en/latest/

[plain] view plain copy PRint?在CODE上查看代碼片集群  cluster info 打印集群的信息  cluster nodes 列出集群當(dāng)前已知的所有節(jié)點(diǎn)(node),以及這些節(jié)點(diǎn)的相關(guān)信息。  節(jié)點(diǎn)  cluster meet <>>> Adding node 192.168.36.54:6383 to cluster 192.168.36.54:6380  Connecting to node 192.168.36.54:6380: OK  Connecting to node 192.168.36.189:6380: OK  Connecting to node 192.168.36.189:6382: OK  Connecting to node 192.168.36.54:6382: OK  Connecting to node 192.168.36.54:6381: OK  Connecting to node 192.168.36.189:6381: OK  >>> Performing Cluster Check (using node 192.168.36.54:6380)  M: f6285c8a7506b224840d7b26b2b5d1671320c21f 192.168.36.54:6380     slots:0-5460 (5461 slots) master     1 additional replica(s)  M: b1a15a3cd14ea65671a7134850e17b8919a17da5 192.168.36.189:6380     slots:5461-10922 (5462 slots) master     1 additional replica(s)  S: de4302f43ff89843675446396552fd19f741246a 192.168.36.189:6382     slots: (0 slots) slave     replicates 26ce71d626175f88e0416e3f45b2bfb29304c7b3  S: 83fc65283bbbb71b4c089337df05594d67f4cab6 192.168.36.54:6382     slots: (0 slots) slave     replicates b1a15a3cd14ea65671a7134850e17b8919a17da5  M: 26ce71d626175f88e0416e3f45b2bfb29304c7b3 192.168.36.54:6381     slots:10923-16383 (5461 slots) master     1 additional replica(s)  S: 1080e423a55a2c24dae649dac03ffa09ed26d3e8 192.168.36.189:6381     slots: (0 slots) slave     replicates f6285c8a7506b224840d7b26b2b5d1671320c21f  [OK] All nodes agree about slots configuration.  >>> Check for open slots...  >>> Check slots coverage...  [OK] All 16384 slots covered.  Connecting to node 192.168.36.54:6383: OK  >>> Send CLUSTER MEET to node 192.168.36.54:6383 to make it join the cluster.  [OK] New node added correctly.  新節(jié)點(diǎn)沒有包含任何數(shù)據(jù),%20因?yàn)樗鼪]有包含任何slot。新加入的加點(diǎn)是一個主節(jié)點(diǎn),%20當(dāng)集群需要將某個從節(jié)點(diǎn)升級為新的主節(jié)點(diǎn)時,%20這個新節(jié)點(diǎn)不會被選中。

2)為新節(jié)點(diǎn)分配slot

你只需要指定集群中其中一個節(jié)點(diǎn)的地址,%20redis-trib%20就會自動找到集群中的其他節(jié)點(diǎn)。目前%20redis-trib%20只能在管理員的協(xié)助下完成重新分片的工作,%20要讓%20redis-trib%20自動將哈希槽從一個節(jié)點(diǎn)移動到另一個節(jié)點(diǎn),%20目前來說還做不到%20(不過實(shí)現(xiàn)這個功能并不難)。./bin/redis-trib.rb%20reshard%20192.168.36.54:6383設(shè)定你打算移動的哈希槽slots的數(shù)量(這里槽數(shù)量設(shè)置為1000)How%20many%20slots%20do%20you%20want%20to%20move%20(from%201%20to%2016384)?%201000除了移動的哈希槽數(shù)量之外,%20redis-trib%20還需要知道重新分片的目標(biāo)(target%20node),%20也即是,%20負(fù)責(zé)接收這%201000%20個哈希槽的節(jié)點(diǎn)。指定目標(biāo)需要使用節(jié)點(diǎn)的%20ID%20,%20而不是%20IP%20地址和端口。%20比如說,%20我們打算使用集群的第一個主節(jié)點(diǎn)來作為目標(biāo),%20它的%20IP%20地址和端口是%20192.168.36.54:6383%20,%20而節(jié)點(diǎn)%20ID%20則是50cd88737109d0398e35b19747cc02832f05d125%20,%20那么我們應(yīng)該向%20redis-trib%20提供節(jié)點(diǎn)的%20ID%20:What%20is%20the%20receiving%20node%20ID?50cd88737109d0398e35b19747cc02832f05d125redis-trib%20會打印出集群中所有節(jié)點(diǎn)的%20ID%20,%20并且我們也可以通過執(zhí)行以下命令來獲得節(jié)點(diǎn)的運(yùn)行%20ID%20:./bin/redis-cli%20-h%20192.168.36.54%20-p%206380%20cluster%20nodes%20|grep%20192.168.36.54:6383接著,%20redis-trib%20會向你詢問重新分片的源節(jié)點(diǎn)(source%20node),%20也即是,%20要從哪個節(jié)點(diǎn)中取出%201000%20個哈希槽,并將這些槽移動到目標(biāo)節(jié)點(diǎn)上面。如果我們不打算從特定的節(jié)點(diǎn)上取出指定數(shù)量的哈希槽,%20那么可以向%20redis-trib%20輸入%20all%20,%20這樣的話,%20集群中的所有主節(jié)點(diǎn)都會成為源節(jié)點(diǎn),%20redis-trib%20將從各個源節(jié)點(diǎn)中各取出一部分哈希槽,%20湊夠%201000%20個,%20然后移動到目標(biāo)節(jié)點(diǎn)上面:Please%20enter%20all%20the%20source%20node%20IDs.Type%20'all'%20to%20use%20all%20the%20nodes%20as%20source%20nodes%20for%20the%20hash%20slots.Type%20'done'%20once%20you%20entered%20all%20the%20source%20nodes%20IDs.Source%20node%20#1:all

輸入%20all%20并按下回車之后,%20redis-trib%20將打印出哈希槽的移動計(jì)劃,%20如果你覺得沒問題的話,%20就可以輸入%20yes%20并再次按下回車,%20redis-trib%20就會正式開始執(zhí)行重新分片操作,%20將指定的哈希槽從源節(jié)點(diǎn)一個個地移動到目標(biāo)節(jié)點(diǎn)上面。在重新分片操作執(zhí)行完畢之后,%20可以使用以下命令來檢查集群是否正常:./bin/redis-trib.rb%20check%20192.168.36.54:6380根據(jù)檢查結(jié)果顯示,%20集群運(yùn)作正常。

2.添加新的slave節(jié)點(diǎn)

1)添加節(jié)點(diǎn)

./bin/redis-trib.rb%20add-node%20192.168.36.189:6383%20192.168.36.54:6380

2)redis-cli連接上新節(jié)點(diǎn)shell,輸入命令:cluster%20replicate%20對應(yīng)master的node-id./bin/redis-cli%20-c -h%20192.168.36.189%20-p%206383>cluster%20replicate%2050cd88737109d0398e35b19747cc02832f05d125在線添加slave%20時,需要dump整個master進(jìn)程,并傳遞到slave,再由%20slave加載rdb文件到內(nèi)存,rdb傳輸過程中Master可能無法提供服務(wù),整個過程消耗大量io,小心操作.查看執(zhí)行結(jié)果:./bin/redis-cli%20-h%20192.168.36.189%20-p%206383%20cluster%20nodes%20|%20grep%20slave%20|%20grep%2050cd88737109d0398e35b19747cc02832f05d1255178d6342a6470f928cfa6d43d98640b9303ad38%20192.168.36.189:6383%20myself,slave%2050cd88737109d0398e35b19747cc02832f05d125%200%200%200%20connected

3)在線reshard%20數(shù)據(jù)對于負(fù)載/數(shù)據(jù)不均勻的情況,可以在線reshard%20slot來解決,方法與添加新master的reshard一樣,只是需要reshard的master節(jié)點(diǎn)是老節(jié)點(diǎn)。4)刪除一個slave節(jié)點(diǎn)./bin/redis-trib.rb%20del-node%20192.168.36.54:6380%205178d6342a6470f928cfa6d43d98640b9303ad385)刪除一個master節(jié)點(diǎn)刪除master節(jié)點(diǎn)之前首先要使用reshard移除master的全部slot,然后再刪除當(dāng)前節(jié)點(diǎn)(目前只能把被刪除master的slot遷移到一個節(jié)點(diǎn)上),操作和分配slot類似,指定具體的Source%20node即可。然后在使用4步驟中的命令刪除節(jié)點(diǎn)

六、集群測試

1.數(shù)據(jù)測試

使用redis客戶端redis-cli進(jìn)行添加數(shù)據(jù)操作。

[plain] view%20plain copy print?./bin/redis-cli -c -h 192.168.36.189 -p 6380  192.168.36.189:6380> set abc 123  OK  192.168.36.189:6380> set xxx 123  -> Redirected to slot [4038] located at 192.168.36.54:6380  OK  192.168.36.54:6380> set ttt aaa  -> Redirected to slot [15942] located at 192.168.36.54:6381  OK  redis-cli%20對集群的支持是非常基本的,%20所以它總是依靠%20Redis%20集群節(jié)點(diǎn)來將它轉(zhuǎn)向(redirect)至正確的節(jié)點(diǎn)。

2.故障轉(zhuǎn)移測試

要觸發(fā)一次故障轉(zhuǎn)移,%20最簡單的辦法就是令集群中的某個主節(jié)點(diǎn)進(jìn)入下線狀態(tài)。首先用以下命令列出集群中的所有主節(jié)點(diǎn):

[plain] view%20plain copy print? ./bin/redis-cli -h 192.168.36.189 -p 6383 cluster nodes |grep master  50cd88737109d0398e35b19747cc02832f05d125 192.168.36.54:6383 master - 0 1428823692383 7 connected 0-332 5461-5794 10923-11255  26ce71d626175f88e0416e3f45b2bfb29304c7b3 192.168.36.54:6381 master - 0 1428823692893 2 connected 11256-16383  f6285c8a7506b224840d7b26b2b5d1671320c21f 192.168.36.54:6380 master - 0 1428823693918 1 connected 333-5460  b1a15a3cd14ea65671a7134850e17b8919a17da5 192.168.36.189:6380 master - 0 1428823692893 4 connected 5795-10922  通過命令輸出,%20我們知道端口號為%20192.168.36.54:6380、%20192.168.36.54:6381、192.168.36.54:6383%20和%20192.168.36.189:6380的節(jié)點(diǎn)都是主節(jié)點(diǎn),%20然后我們可以通過向端口號為192.168.36.54:6380的主節(jié)點(diǎn)發(fā)送%20DEBUG%20SEGFAULT%20命令,%20讓這個主節(jié)點(diǎn)崩潰:./bin/redis-cli%20-h%20192.168.36.54%20-p%206380%20 debug%20segfaultError:%20Server%20closed%20the%20connection我們使用%20cluster%20nodes%20命令,%20查看集群在執(zhí)行故障轉(zhuǎn)移操作之后,%20主從節(jié)點(diǎn)的布局情況:[plain] view%20plain copy print?./bin/redis-cli -h 192.168.36.189 -p 6383 cluster nodes  50cd88737109d0398e35b19747cc02832f05d125 192.168.36.54:6383 master - 0 1428823969555 7 connected 0-332 5461-5794 10923-11255  1080e423a55a2c24dae649dac03ffa09ed26d3e8 192.168.36.189:6381 master - 0 1428823968475 8 connected 333-5460  de4302f43ff89843675446396552fd19f741246a 192.168.36.189:6382 slave 26ce71d626175f88e0416e3f45b2bfb29304c7b3 0 1428823968886 2 connected  26ce71d626175f88e0416e3f45b2bfb29304c7b3 192.168.36.54:6381 master - 0 1428823967861 2 connected 11256-16383  83fc65283bbbb71b4c089337df05594d67f4cab6 192.168.36.54:6382 slave b1a15a3cd14ea65671a7134850e17b8919a17da5 0 1428823969555 4 connected  f6285c8a7506b224840d7b26b2b5d1671320c21f 192.168.36.54:6380 master,fail? - 1428823891006 1428823888448 1 disconnected  b1a15a3cd14ea65671a7134850e17b8919a17da5 192.168.36.189:6380 master - 0 1428823970008 4 connected 5795-10922  5178d6342a6470f928cfa6d43d98640b9303ad38 192.168.36.189:6383 myself,slave 50cd88737109d0398e35b19747cc02832f05d125 0 0 0 connected  重啟了之前下線的節(jié)點(diǎn)192.168.36.54:6380,%20該節(jié)點(diǎn)已經(jīng)從原來的主節(jié)點(diǎn)變成了從節(jié)點(diǎn)。[plain] view%20plain copy print? ./bin/redis-cli -h 192.168.36.189 -p 6383 cluster nodes  50cd88737109d0398e35b19747cc02832f05d125 192.168.36.54:6383 master - 0 1428824165896 7 connected 0-332 5461-5794 10923-11255  1080e423a55a2c24dae649dac03ffa09ed26d3e8 192.168.36.189:6381 master - 0 1428824166406 8 connected 333-5460  de4302f43ff89843675446396552fd19f741246a 192.168.36.189:6382 slave 26ce71d626175f88e0416e3f45b2bfb29304c7b3 0 1428824165382 2 connected  26ce71d626175f88e0416e3f45b2bfb29304c7b3 192.168.36.54:6381 master - 0 1428824165896 2 connected 11256-16383  83fc65283bbbb71b4c089337df05594d67f4cab6 192.168.36.54:6382 slave b1a15a3cd14ea65671a7134850e17b8919a17da5 0 1428824164870 4 connected  f6285c8a7506b224840d7b26b2b5d1671320c21f 192.168.36.54:6380 slave 1080e423a55a2c24dae649dac03ffa09ed26d3e8 0 1428824166920 8 connected  b1a15a3cd14ea65671a7134850e17b8919a17da5 192.168.36.189:6380 master - 0 1428824166407 4 connected 5795-10922  5178d6342a6470f928cfa6d43d98640b9303ad38 192.168.36.189:6383 myself,slave 50cd88737109d0398e35b19747cc02832f05d125 0 0 0 connected  注:cluster%20nodes%20命令的輸出有點(diǎn)兒復(fù)雜,%20它的每一行都是由以下信息組成的:節(jié)點(diǎn)%20ID%20:例如%203fc783611028b1707fd65345e763befb36454d73%20。ip:port%20:節(jié)點(diǎn)的%20IP%20地址和端口號,%20例如%20127.0.0.1:7000%20,%20其中%20:0%20表示的是客戶端當(dāng)前連接的%20IP%20地址和端口號。flags%20:節(jié)點(diǎn)的角色(例如%20master%20、%20slave%20、%20myself%20)以及狀態(tài)(例如%20fail%20,等等)。如果節(jié)點(diǎn)是一個從節(jié)點(diǎn)的話,%20那么跟在%20flags%20之后的將是主節(jié)點(diǎn)的節(jié)點(diǎn)%20ID%20:%20例如%20127.0.0.1:7002%20的主節(jié)點(diǎn)的節(jié)點(diǎn)%20ID%20就是%203c3a0c74aae0b56170ccb03a76b60cfe7dc1912e%20。集群最近一次向節(jié)點(diǎn)發(fā)送%20PING%20命令之后,%20過去了多長時間還沒接到回復(fù)。節(jié)點(diǎn)最近一次返回%20PONG%20回復(fù)的時間。節(jié)點(diǎn)的配置紀(jì)元(configuration%20epoch):詳細(xì)信息請參考%20Redis%20集群規(guī)范%20。本節(jié)點(diǎn)的網(wǎng)絡(luò)連接情況:例如%20connected%20。節(jié)點(diǎn)目前包含的槽:例如192.168.36.189:6380%20目前包含號碼為5795-10922的哈希槽。七、集群下java客戶端使用

如下以jedis為例:

[java] view%20plain copy print?派生到我的代碼片package cn.slimsmart.redis.demo.cluster;    import java.util.HashSet;  import java.util.Set;    import redis.clients.jedis.HostAndPort;  import redis.clients.jedis.JedisCluster;  import redis.clients.jedis.JedisPoolConfig;    public class RedisClusterTest {        public static void main(String[] args) {          JedisPoolConfig config = new JedisPoolConfig();          config.setMaxTotal(100);          config.setMaxIdle(100);          config.setMinIdle(100);          config.setMaxWaitMillis(6 * 1000);          config.setTestOnBorrow(true);            Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();          jedisClusterNodes.add(new HostAndPort("192.168.36.54", 6380));          jedisClusterNodes.add(new HostAndPort("192.168.36.54", 6381));          jedisClusterNodes.add(new HostAndPort("192.168.36.54", 6382));          jedisClusterNodes.add(new HostAndPort("192.168.36.54", 6383));            jedisClusterNodes.add(new HostAndPort("192.168.36.189", 6380));          jedisClusterNodes.add(new HostAndPort("192.168.36.189", 6381));          jedisClusterNodes.add(new HostAndPort("192.168.36.189", 6382));          jedisClusterNodes.add(new HostAndPort("192.168.36.189", 6383));            JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, 2000, 2, config);          try {              for (int i = 0; i < 1000; i++) {                  long t1 = System.currentTimeMillis();                  jedisCluster.set("" + i, "" + i);                  long t2 = System.currentTimeMillis();                  String value = jedisCluster.get("" + i);                  long t3 = System.currentTimeMillis();                  System.out.println("" + value);                  System.out.println((t2 - t1) + "mills");                  System.out.println((t3 - t2) + "mills");              }          } catch (Exception e) {              e.printStackTrace();          } finally {              jedisCluster.close();          }      }  }  jedis客戶端不足之處:1.cluster環(huán)境下redis的slave不接受任何讀寫操作2.client端不支持keys批量操作,不支持select dbNum操作,只有一個db:select 03.JedisCluster 的info()等單機(jī)函數(shù)無法調(diào)用,返回(No way to dispatch this command to Redis Cluster)錯誤4.JedisCluster 沒有針對byte[]的API,需要自己擴(kuò)展
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 赣榆县| 兰坪| 佛学| 永平县| 长岛县| 临朐县| 延川县| 牙克石市| 兴义市| 泰安市| 翁牛特旗| 桦甸市| 大邑县| 潞西市| 玛多县| 永定县| 三亚市| 灵石县| 满城县| 平陆县| 闻喜县| 阿拉善左旗| 鄂尔多斯市| 高要市| 石渠县| 临高县| 元氏县| 彰化市| 龙海市| 临城县| 新乡市| 连云港市| 丘北县| 永安市| 大悟县| 五华县| 永福县| 广丰县| 松江区| 凤翔县| 陆良县|