Codis实现readis集群

Codis实现readis集群

1.在内存快照是,由于是异步,因此内存还可以被访问(若是同步,则不行)
2.auf

准备3个readis节点

****三台虚拟机都需要安装readis,且做主从复制
tar zxf redis-4.0.1.tar.gz 
cd redis-4.0.1
make
make install
cd utils/
./install_server.sh
cd /etc/redis/
vim 6379.conf 
70 bind 0.0.0.0 #主|从
284 slaveof 172.25.30.6 6379 #主
/etc/init.d/redis_6379 restart  #默认好像是自动开启的
redis-cli 
127.0.0.1:6379> info        #可以查看本机信息


&&&主从切换
[root@mysql ~]# cd redis-4.0.1
[root@mysql redis-4.0.1]# ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src
[root@mysql redis-4.0.1]# cp sentinel.conf /etc/redis/
[root@mysql redis-4.0.1]# cd /etc/redis/
[root@mysql redis]# ls
6379.conf  sentinel.conf
[root@mysql redis]# vim sentinel.conf
.....
 15 bind  172.0.0.1 172.25.30.6 #从设置为0.0.0.0
 17 protected-mode no
 69 sentinel monitor mymaster 172.25.30.6 6379 2
...
[root@mysql redis]# scp sentinel.conf root@172.25.30.7:/etc/redis/
root@172.25.30.7's password: 
sentinel.conf                                 100% 7604     7.4KB/s   00:00    
[root@mysql redis]# scp sentinel.conf root@172.25.30.9:/etc/redis/
root@172.25.30.9's password: 
sentinel.conf                                 100% 7604     7.4KB/s   00:00    
[root@mysql redis]# redis-sentinel /etc/redis/sentinel.conf 
...
387:X 22 Oct 09:47:49.804 * +slave slave 172.25.30.9:6379 172.25.30.9 6379 @ mymaster 127.0.0.1 6379
1387:X 22 Oct 09:47:49.819 * +slave slave 172.25.30.7:6379 172.25.30.7 6379 @ mymaster 127.0.0.1 6379
1387:X 22 Oct 09:48:19.826 # +sdown slave 172.25.30.9:6379 172.25.30.9 6379 @ mymaster 127.0.0.1 6379
1387:X 22 Oct 09:48:19.826 # +sdown slave 172.25.30.7:6379 172.25.30.7 6379 @ mymaster 127.0.0.1 6379
.....

[root@mysql ~]# redis-cli 
127.0.0.1:6379> SHUTDOWN    #down掉master|然后可以查看到master切换过程
not connected> 







redis-sentinel /etc/redis/sentinel.conf     #master切换过程
...
036:X 22 Oct 10:13:15.914 * +slave slave 172.25.30.7:6379 172.25.30.7 6379 @ mymaster 172.25.30.9 6379
5036:X 22 Oct 10:13:15.914 * +slave slave 172.25.30.6:6379 172.25.30.6 6379 @ mymaster 172.25.30.9 6379
5036:X 22 Oct 10:13:45.916 # +sdown slave 172.25.30.6:6379 172.25.30.6 6379 @ mymaster 172.25.30.9 6379
5036:X 22 Oct 10:13:45.916 # +sdown slave 172.25.30.7:6379 172.25.30.7 6379 @ mymaster 172.25.30.9 6379
&&也可使用redis-cli--->info查看每个node的状态




&&
[root@mysql redis]# cd /var/lib/redis/
[root@mysql redis]# ls
6379
[root@mysql redis]# cd 6379/
[root@mysql 6379]# ls
dump.rdb
[root@mysql 6379]# cd /usr/local/
[root@mysql local]# mkdir redis-cluster
[root@mysql local]# cd /usr/local/redis-cluster/
[root@mysql redis-cluster]# mkdir 300{1..6}
[root@mysql redis-cluster]# ls
3001  3002  3003  3004  3005  3006
[root@mysql redis-cluster]# cd 3001/
[root@mysql 3001]# pwd
/usr/local/redis-cluster/3001
[root@mysql 3001]# vim redis.conf
.....
port 3001
daemonize yes
pidfile /usr/local/redis-cluster/3001/redis.pid
loglevel notice
logfile /usr/local/redis-cluster/3001/redis.log
dir /usr/local/redis-cluster/3001/
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
.....
[root@mysql redis-cluster]# cp 3001/redis.conf 3002/
[root@mysql redis-cluster]# cp 3001/redis.conf 3003/
[root@mysql redis-cluster]# cp 3001/redis.conf 3004/
[root@mysql redis-cluster]# cp 3001/redis.conf 3005/
[root@mysql redis-cluster]# cp 3001/redis.conf 3006/
[root@mysql redis-cluster]# vim 3002/redis.conf #修改conf文件|:%s/3001/300$/g
[root@mysql redis-cluster]# vim 3003/redis.conf 
[root@mysql redis-cluster]# vim 3004/redis.conf 
[root@mysql redis-cluster]# vim 3005/redis.conf 
[root@mysql redis-cluster]# vim 3006/redis.conf 
[root@mysql redis-cluster]# redis-server 3001/redis.conf    #开启3001进程
[root@mysql redis-cluster]# redis-server 3002/redis.conf 
[root@mysql redis-cluster]# redis-server 3003/redis.conf 
[root@mysql redis-cluster]# redis-server 3004/redis.conf 
[root@mysql redis-cluster]# redis-server 3005/redis.conf 
[root@mysql redis-cluster]# redis-server 3006/redis.conf 
[root@mysql redis-cluster]# ps ax   #此时6个进程全部开启
[root@mysql redis-cluster]# cd ~/redis-4.0.1/src/
[root@mysql src]# cp redis-trib.rb /usr/local/bin/
[root@mysql src]# cd
[root@mysql ~]# redis-trib.rb
/usr/bin/env: ruby: No such file or directory
[root@mysql ~]# yum install ruby -y
[root@mysql ~]# redis-trib.rb
/usr/local/bin/redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
    from /usr/local/bin/redis-trib.rb:24
[root@mysql ~]# ls
redis-4.0.1  redis-4.0.1.tar.gz  rubygems-1.3.7-5.el6.noarch.rpm
[root@mysql ~]# yum install rubygems-1.3.7-5.el6.noarch.rpm 
redis-4.0.1  redis-4.0.1.tar.gz  rubygems-1.3.7-5.el6.noarch.rpm
[root@mysql ~]# redis-trib.rb
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /usr/local/bin/redis-trib.rb:25
[root@mysql ~]# gem list

*** LOCAL GEMS ***
[root@mysql ~]# ls
redis-3.3.1.gem  redis-4.0.1  redis-4.0.1.tar.gz  rubygems-1.3.7-5.el6.noarch.rpm
[root@mysql ~]# gem install --local redis-3.3.1.gem 
Successfully installed redis-3.3.1
1 gem installed
Installing ri documentation for redis-3.3.1...
Installing RDoc documentation for redis-3.3.1...
[root@mysql ~]# gem list

*** LOCAL GEMS ***

redis (3.3.1)

[root@mysql ~]# redis-trib.rb create --replicas 1 127.0.0.1:3001 127.0.0.1:3002 127.0.0.1:3003 127.0.0.1:3004 127.0.0.1:3005 127.0.0.1:3006        #创建集群
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:3001
127.0.0.1:3002
127.0.0.1:3003
Adding replica 127.0.0.1:3004 to 127.0.0.1:3001
Adding replica 127.0.0.1:3005 to 127.0.0.1:3002
Adding replica 127.0.0.1:3006 to 127.0.0.1:3003
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:0-5460 (5461 slots) master
M: 3b6bd56e85cf111cda37aa391c791e93e4837932 127.0.0.1:3002
   slots:5461-10922 (5462 slots) master
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:10923-16383 (5461 slots) master
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
S: 4a77f351753244de5f44c83ddc8f4f94a9f62aec 127.0.0.1:3005
   replicates 3b6bd56e85cf111cda37aa391c791e93e4837932
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
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 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   slots: (0 slots) slave
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
M: 3b6bd56e85cf111cda37aa391c791e93e4837932 127.0.0.1:3002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 4a77f351753244de5f44c83ddc8f4f94a9f62aec 127.0.0.1:3005
   slots: (0 slots) slave
   replicates 3b6bd56e85cf111cda37aa391c791e93e4837932
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   slots: (0 slots) slave
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

[root@mysql ~]# redis-trib.rb check 127.0.0.1:3001 #查看集群信息
>>> Performing Cluster Check (using node 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   slots: (0 slots) slave
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
M: 3b6bd56e85cf111cda37aa391c791e93e4837932 127.0.0.1:3002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 4a77f351753244de5f44c83ddc8f4f94a9f62aec 127.0.0.1:3005
   slots: (0 slots) slave
   replicates 3b6bd56e85cf111cda37aa391c791e93e4837932
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   slots: (0 slots) slave
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@mysql ~]# redis-trib.rb info 127.0.0.1:3001      #查看节点信息
127.0.0.1:3001 (422be8b0...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:3003 (ba332c88...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:3002 (3b6bd56e...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
[root@mysql ~]# redis-cli -c -p 3001
127.0.0.1:3001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:537
cluster_stats_messages_pong_sent:542
cluster_stats_messages_sent:1079
cluster_stats_messages_ping_received:537
cluster_stats_messages_pong_received:537
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:1079
127.0.0.1:3001> set name wxh
-> Redirected to slot [5798] located at 127.0.0.1:3002
OK
127.0.0.1:3002> get name
"wxh"
127.0.0.1:3002> 
[root@mysql ~]# redis-cli -c -p 3006
127.0.0.1:3006> get name
-> Redirected to slot [5798] located at 127.0.0.1:3002
"wxh"
127.0.0.1:3002> SHUTDOWN
not connected> 
[root@mysql ~]# ps ax  #此时进程2已经被宕掉
.....
 1561 ?        Ssl    0:02 redis-server *:3001 [cluster]
 1572 ?        Ssl    0:02 redis-server *:3003 [cluster]
 1577 ?        Ssl    0:02 redis-server *:3004 [cluster]
 1582 ?        Ssl    0:02 redis-server *:3005 [cluster]
 1587 ?        Ssl    0:02 redis-server *:3006 [cluster]
....
[root@mysql ~]# redis-trib.rb check 127.0.0.1:3001
>>> Performing Cluster Check (using node 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   slots: (0 slots) slave
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
M: 4a77f351753244de5f44c83ddc8f4f94a9f62aec 127.0.0.1:3005
   slots:5461-10922 (5462 slots) master
   0 additional replica(s)
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   slots: (0 slots) slave
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots
[root@mysql ~]# redis-cli -c -p 3001
127.0.0.1:3001> get name
-> Redirected to slot [5798] located at 127.0.0.1:3005
"wxh"
127.0.0.1:3005> SHUTDOWN
not connected> 
not connected> 
[root@mysql ~]# redis-cli -c -p 3001
127.0.0.1:3001> get name
(error) CLUSTERDOWN The cluster is down
127.0.0.1:3001> 
[root@mysql ~]# redis-trib.rb check 127.0.0.1:3001 #此时两个节点宕掉
>>> Performing Cluster Check (using node 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   slots: (0 slots) slave
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   slots: (0 slots) slave
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[ERR] Not all 16384 slots are covered by nodes.
[root@mysql ~]# cd /usr/local/redis-cluster/
[root@mysql redis-cluster]# ls
3001  3002  3003  3004  3005  3006
[root@mysql redis-cluster]# redis-server 3002/redis.conf 
[root@mysql redis-cluster]# redis-server 3005/redis.conf 
[root@mysql redis-cluster]# redis-trib.rb check 127.0.0.1:3001
>>> Performing Cluster Check (using node 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   slots: (0 slots) slave
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
S: 3b6bd56e85cf111cda37aa391c791e93e4837932 127.0.0.1:3002
   slots: (0 slots) slave
   replicates 4a77f351753244de5f44c83ddc8f4f94a9f62aec
M: 4a77f351753244de5f44c83ddc8f4f94a9f62aec 127.0.0.1:3005
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   slots: (0 slots) slave
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@mysql redis-cluster]# redis-cli -c -p 3001
127.0.0.1:3001> get name
-> Redirected to slot [5798] located at 127.0.0.1:3005
"wxh"
127.0.0.1:3005> 
[root@mysql redis-cluster]# mkdir 3007
[root@mysql redis-cluster]# mkdir 3008
[root@mysql redis-cluster]# cp 3001/redis.conf 3007/
[root@mysql redis-cluster]# cp 3001/redis.conf 3008/
[root@mysql redis-cluster]# vim 3007/redis.conf 
[root@mysql redis-cluster]# vim 3008/redis.conf 
[root@mysql redis-cluster]# redis-server 3007/redis.conf 
[root@mysql redis-cluster]# redis-server 3008/redis.conf 
[root@mysql redis-cluster]# ps ax
.....
 1561 ?        Ssl    0:03 redis-server *:3001 [cluster]
 1572 ?        Ssl    0:04 redis-server *:3003 [cluster]
 1577 ?        Ssl    0:03 redis-server *:3004 [cluster]
 1587 ?        Ssl    0:03 redis-server *:3006 [cluster]
 1612 ?        S      0:00 [flush-253:0]
 1654 ?        Ssl    0:00 redis-server *:3002 [cluster]
 1659 ?        Ssl    0:00 redis-server *:3005 [cluster]
 1674 ?        Ssl    0:00 redis-server *:3007 [cluster]
 1686 ?        Ssl    0:00 redis-server *:3008 [cluster]
 1690 pts/0    R+     0:00 ps ax
.....
[root@mysql redis-cluster]# ls
3001  3002  3003  3004  3005  3006  3007  3008
[root@mysql redis-cluster]# redis-trib.rb check 127.0.0.1:3001  #此时信息也只有6个节点
[root@mysql redis-cluster]# redis-trib.rb add-node 127.0.0.1:3007 127.0.0.1:3001    #添加节点7
>>> Adding node 127.0.0.1:3007 to cluster 127.0.0.1:3001
>>> Performing Cluster Check (using node 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   slots: (0 slots) slave
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
S: 3b6bd56e85cf111cda37aa391c791e93e4837932 127.0.0.1:3002
   slots: (0 slots) slave
   replicates 4a77f351753244de5f44c83ddc8f4f94a9f62aec
M: 4a77f351753244de5f44c83ddc8f4f94a9f62aec 127.0.0.1:3005
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   slots: (0 slots) slave
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 127.0.0.1:3007 to make it join the cluster.
[OK] New node added correctly.
[root@mysql redis-cluster]# redis-trib.rb check 127.0.0.1:3001  #此时节点7已经添加成功
>>> Performing Cluster Check (using node 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 0deac650c9251c81fc2dff0e4752b910a4fda402 127.0.0.1:3007
   slots: (0 slots) master
   0 additional replica(s)
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   slots: (0 slots) slave
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
S: 3b6bd56e85cf111cda37aa391c791e93e4837932 127.0.0.1:3002
   slots: (0 slots) slave
   replicates 4a77f351753244de5f44c83ddc8f4f94a9f62aec
M: 4a77f351753244de5f44c83ddc8f4f94a9f62aec 127.0.0.1:3005
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   slots: (0 slots) slave
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@mysql redis-cluster]# redis-trib.rb rebalance --threshold 1 --use-empty-masters 127.0.0.1:3001        #实现数据均衡
[root@mysql redis-cluster]# redis-trib.rb check 127.0.0.1:3001
>>> Performing Cluster Check (using node 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
M: 0deac650c9251c81fc2dff0e4752b910a4fda402 127.0.0.1:3007
   slots:0-1364,5461-6826,10923-12287 (4096 slots) master
   0 additional replica(s)
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:12288-16383 (4096 slots) master
   1 additional replica(s)
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   slots: (0 slots) slave
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
S: 3b6bd56e85cf111cda37aa391c791e93e4837932 127.0.0.1:3002
   slots: (0 slots) slave
   replicates 4a77f351753244de5f44c83ddc8f4f94a9f62aec
M: 4a77f351753244de5f44c83ddc8f4f94a9f62aec 127.0.0.1:3005
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   slots: (0 slots) slave
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@mysql redis-cluster]# redis-trib.rb add-node --slave --master-id 0deac650c9251c81fc2dff0e4752b910a4fda402 127.0.0.1:3008 127.0.0.1:3001   #把8以slave的模式加上去
[root@mysql redis-cluster]# redis-trib.rb check 127.0.0.1:3001
>>> Performing Cluster Check (using node 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
M: 0deac650c9251c81fc2dff0e4752b910a4fda402 127.0.0.1:3007
   slots:0-1364,5461-6826,10923-12287 (4096 slots) master
   1 additional replica(s)
M: ba332c88577e0b98dd6b9adac8db6c5cb012ef88 127.0.0.1:3003
   slots:12288-16383 (4096 slots) master
   1 additional replica(s)
S: 690603aeb4b2ef5a01431c403d31b09a388ef02e 127.0.0.1:3008
   slots: (0 slots) slave
   replicates 0deac650c9251c81fc2dff0e4752b910a4fda402
S: 799b312160e419dc226ac55208827de06335686b 127.0.0.1:3006
   slots: (0 slots) slave
   replicates ba332c88577e0b98dd6b9adac8db6c5cb012ef88
S: 3b6bd56e85cf111cda37aa391c791e93e4837932 127.0.0.1:3002
   slots: (0 slots) slave
   replicates 4a77f351753244de5f44c83ddc8f4f94a9f62aec
M: 4a77f351753244de5f44c83ddc8f4f94a9f62aec 127.0.0.1:3005
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
S: 9fdd788d4882e1ce10160e58048d533f1a286cde 127.0.0.1:3004
   slots: (0 slots) slave
   replicates 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@mysql redis-cluster]# redis-trib.rb reshard --from 0deac650c9251c81fc2dff0e4752b910a4fda402 --to 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3005  #数据迁移(from7to1)
.....
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 212   
Ready to move 212 slots.
.....
[root@mysql redis-cluster]# redis-trib.rb check 127.0.0.1:3001
>>> Performing Cluster Check (using node 127.0.0.1:3001)
M: 422be8b0a3c8fdcc9f9a249a33c391c0700d90c3 127.0.0.1:3001
   slots:0-212,1365-5460 (4309 slots) master
   1 additional replica(s)
M: 0deac650c9251c81fc2dff0e4752b910a4fda402 127.0.0.1:3007
   slots:213-1364,5461-6826,10923-12287 (3883 slots) master
   1 additional replica(s)
.....
[root@mysql redis-cluster]# 




&&&Readis做数据库缓存

[root@mysql ~]# killall redis-server 
[root@mysql ~]# ls
redis            redis-4.0.1         rubygems-1.3.7-5.el6.noarch.rpm
redis-3.3.1.gem  redis-4.0.1.tar.gz
[root@mysql ~]# cd redis
[root@mysql redis]# rpm -q httpd
httpd-2.2.15-29.el6_4.x86_64
[root@mysql redis]# rpm -q php
package php is not installed
[root@mysql redis]# yum install php-* -y    #此时装的是redis包里面的php(系统自带的php没有启动脚本)
[root@mysql redis]# rpm -iv nginx-1.8.0-1.el6.ngx.x86_64.rpm 
[root@mysql redis]# cd /etc/php.d/
[root@mysql php.d]# /etc/init.d/php-fpm start
Starting php-fpm:                                          [  OK  ]
[root@mysql php.d]# netstat -antlp |grep 9000
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      1785/php-fpm      
[root@mysql php.d]# cd /etc/nginx/
[root@mysql nginx]# vim nginx.conf 
[root@mysql nginx]# cd -
/etc/php.d
[root@mysql php.d]# cd /etc/nginx/conf.d/
[root@mysql conf.d]# vim default.conf   #打开php页面
.....
10         index  index.php index.html index.htm;  #默认读取文件
34         fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_n    ame;
.....
[root@mysql conf.d]# /etc/init.d/nginx start
Starting nginx:                                            [  OK  ]
[root@mysql conf.d]# cd /usr/share/nginx/html/
[root@mysql html]# vim index.php    
<?php
phpinfo()
?>
#此时浏览器可访问到php页面
[root@mysql html]# php -m | grep mysql
mysql
mysqli
pdo_mysql
[root@mysql html]# php -m | grep redis
[root@mysql html]# cd ~/redis
[root@mysql redis]# yum install unzip -y
[root@mysql redis]# unzip phpredis-master.zip 
[root@mysql redis]# cd phpredis-master
[root@mysql phpredis-master]# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
[root@mysql phpredis-master]# ./configure 
[root@mysql phpredis-master]# make 
[root@mysql phpredis-master]# make install
Installing shared extensions:     /usr/lib64/php/modules/
[root@mysql phpredis-master]# cd /usr/lib64/php/modules/
[root@mysql modules]# cd /etc/php.
-bash: cd: /etc/php.: No such file or directory
[root@mysql modules]# cd /etc/php.d/
[root@mysql php.d]# cp mysql.ini redis.ini
[root@mysql php.d]# vim redis.ini 
[root@mysql php.d]# cat redis.ini 
extension=redis.so
[root@mysql php.d]# /etc/init.d/php-fpm reload
Reloading php-fpm: [22-Oct-2017 14:17:29] NOTICE: configuration file /etc/php-fpm.conf test is successful

                                                           [  OK  ]
[root@mysql php.d]# php -m | grep redis
redis
[root@mysql php.d]# 

##浏览器访问,此时有redis模块




&&&在mysql2上把readis设置成master

redis多用于秒杀场景:瞬时高并发

[root@mysql2 redis]# vim 6379.conf
70 bind 0.0.0.0
283 #slaveof 172.25.30.6 6379
[root@mysql2 redis]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...

[root@mysql2 redis]# redis-cli 
127.0.0.1:6379> info
....
# Replication
role:master
....


&&&&在mysql4上搭建mysql
[root@mysql4 ~]# yum install mysql mysql-server -y




[root@mysql1 redis]# cp test.php  /usr/share/nginx/html/
[root@mysql1 redis]# cd /usr/share/nginx/html/
[root@mysql1 html]# vim test.php 
 3         $redis->connect('172.25.30.7',6379) or die ("could net connect redis se    rver");
10                         $connect = mysql_connect('172.25.30.9','redis','westos'    );      
[root@mysql1 html]# ls
50x.html  index.html  index.php  test.php
[root@mysql1 html]# cd ~/redis
[root@mysql1 redis]# scp test.sql root@172.25.30.9:
root@172.25.30.9's password: 
test.sql                                         100%  493     0.5KB/s   00:00    
[root@mysql redis]# 




[root@mysql4 ~]# /etc/init.d/mysqld start
[root@mysql4 ~]# cat test.sql 
use test;
CREATE TABLE `test` (`id` int(7) NOT NULL AUTO_INCREMENT, `name` char(8) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `test` VALUES (1,'test1'),(2,'test2'),(3,'test3'),(4,'test4'),(5,'test5'),(6,'test6'),(7,'test7'),(8,'test8'),(9,'test9');

#DELIMITER $$
#CREATE TRIGGER datatoredis AFTER UPDATE ON test FOR EACH ROW BEGIN
#    SET @RECV=gman_do_background('syncToRedis', json_object(NEW.id as `id`, NEW.name as `name`)); 
#  END$$
#DELIMITER ;
[root@mysql4 ~]# mysql < test.sql 
[root@mysql4 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.71 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> grant all on test.* to redis@'%' identified by 'westos';
Query OK, 0 rows affected (0.00 sec)
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from test;
+----+-------+
| id | name  |
+----+-------+
|  1 | test1 |
|  2 | test2 |
|  3 | test3 |
|  4 | test4 |
|  5 | test5 |
|  6 | test6 |
|  7 | test7 |
|  8 | test8 |
|  9 | test9 |
+----+-------+
9 rows in set (0.00 sec)

mysql> exit
Bye
[root@mysql4 ~]# 


#测试:

http://172.25.30.6/test.php
或者:
[root@redis2 ~]# vim /etc/redis/sentinel.conf
..... 
69 sentinel monitor mymaster 172.25.66.2 6379 2
.....
[root@redis2 ~]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
[root@mysql2 redis]# redis-cli 
127.0.0.1:6379> get 1
"test1"
127.0.0.1:6379> get 2
"test2"
127.0.0.1:6379> 
[root@mysql2 redis]# 




***更新同步
mysql> update test set name='westos' where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from test;
+----+--------+
| id | name   |
+----+--------+
|  1 | westos |
|  2 | test2  |
|  3 | test3  |
|  4 | test4  |
|  5 | test5  |
|  6 | test6  |
|  7 | test7  |
|  8 | test8  |
|  9 | test9  |
+----+--------+
9 rows in set (0.00 sec)

[root@mysql2 redis]# redis-cli 
127.0.0.1:6379> get 1
"test1"
127.0.0.1:6379> del 1
(integer) 1
127.0.0.1:6379> 
[root@mysql2 redis]# 
****浏览器刷新成功






mysql1:lnmp架构
mysql2:redis
mysql4:mysql
[root@mysql1 redis]# yum install -y gearmand-1.1.8-2.el6.x86_64.rpm libgearman-* libevent-* -y
[root@redis3 ~]# /etc/init.d/gearmand start
Starting gearmand:                                         [  OK  ]

&&在mysql上
[root@mysql4 ~]# ls
gearman-mysql-udf-0.6.tar.gz  redis-4.0.1         test.sql
lib_mysqludf_json-master.zip  redis-4.0.1.tar.gz
[root@mysql4 ~]# unzip lib_mysqludf_json-master.zip 
[root@mysql4 lib_mysqludf_json-master]# yum install mysql-devel -y
[root@mysql4 lib_mysqludf_json-master]# gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.os lib_mysqludf_json.c 
[root@mysql4 lib_mysqludf_json-master]# ll lib_mysqludf_json.so
-rwxr-xr-x 1 root root 13578 Feb 22  2013 lib_mysqludf_json.so
[root@mysql4 lib_mysqludf_json-master]# cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
[root@mysql4 lib_mysqludf_json-master]# 
[root@mysql redis]# scp libgearman-* libevent-* root@172.25.30.9:
[root@mysql4 ~]# ls
gearman-mysql-udf-0.6.tar.gz  lib_mysqludf_json-master.zip  redis-4.0.1.tar.gz
lib_mysqludf_json-master      redis-4.0.1 
[root@mysql4 ~]# yum install -y libgearman-* libevent-*                   test.sql
[root@mysql4 ~]# tar xf gearman-mysql-udf-0.6.tar.gz 
[root@mysql4 ~]# ls
gearman-mysql-udf-0.6         lib_mysqludf_json-master.zip  test.sql
gearman-mysql-udf-0.6.tar.gz  redis-4.0.1
lib_mysqludf_json-master      redis-4.0.1.tar.gz
[root@mysql4 ~]# cd gearman-mysql-udf-0.6
[root@mysql4 gearman-mysql-udf-0.6]# ./configure --with-mysql --libdir=/usr/lib64/mysql/plugin/
[root@mysql4 gearman-mysql-udf-0.6]# make
[root@mysql4 gearman-mysql-udf-0.6]# make install

****参考redis文档








&&&&&Cacti监控

[root@server4 ~]# ls
cacti-0.8.8h.tar.gz  cacti-spine-0.8.8h.tar.gz
[root@server4 ~]# yum install httpd php php-mysql -y
[root@server4 ~]# tar zxf cacti-0.8.8h.tar.gz -C /var/www/html/
[root@mysql4 ~]# cd /var/www/html/
[root@server4 html]# ln -s cacti-0.8.8h/ cacti
[root@server4 html]# cd cacti
[root@server4 cacti]# yum install rrdtool -y
[root@server4 cacti]# yum install php-snmp net-snmp net-snmp-utils -y
[root@server4 cacti]# rpm -qa | grep snmp
net-snmp-libs-5.5-49.el6.x86_64
net-snmp-5.5-49.el6.x86_64
net-snmp-utils-5.5-49.el6.x86_64
root@server4 ~]# ls
cacti-0.8.8h.tar.gz  cacti-spine-0.8.8h.tar.gz  php-snmp-5.3.3-26.el6.x86_64.rpm
[root@server4 ~]# rpm -ivh php-snmp-5.3.3-26.el6.x86_64.rpm 
warning: php-snmp-5.3.3-26.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:php-snmp               ########################################### [100%]


[root@server4 ~]# vim /etc/php.ini 
 946 date.timezone =Asia/Shanghai
[root@server4 ~]# cd /var/www/html/cacti
[root@mysql4 cacti]# ll cacti.sql 
-rw-rw-r-- 1 1000 1000 178349 Apr 10  2012 cacti.sql
[root@mysql4 cacti]# mysqladmin create cacti
[root@mysql4 cacti]# mysql cacti < cacti.sql 
[root@redis1 cacti]# mysql
.....
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'westos';  #授权
Query OK, 0 rows affected (0.00 sec)
.....
[root@mysql4 cacti]# ll
[root@mysql4 cacti]# useradd -u 1000 -M -d /var/www/html/cacti cacti
[root@mysql4 cacti]# cd include/
[root@mysql4 include]# vim config.php 
.....
 26 $database_type = "mysql";
 27 $database_default = "cacti";
 28 $database_hostname = "localhost";
 29 $database_username = "cacti";
 30 $database_password = "westos";
 31 $database_port = "3306";
 32 $database_ssl = false;
 39 $url_path = "/cacti/";
 42 $cacti_session_name = "Cacti";
.....
[root@mysql4 include]# /etc/init.d/httpd start



测试:浏览器访问
http://172.25.30.9/cacti/install/(默认登陆用户:admin(密码:admin))
    创建表格

添加定时任务
[root@mysql4 ~]# su - cacti
-bash-4.1$ crontab -e
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1
:wq





作业:
codis实现redis集群
zabbix监控
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值