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监控