通过Keepalived实现Redis双机(3)

测试关闭Redis Master

[root@node3 redis]# redis-cli redis 127.0.0.1:6379> get foo "bar" redis 127.0.0.1:6379> shutdown

查看keepalived backup信息,此时keepalvied进入master状态

Nov 12 18:47:25 message4 Keepalived_vrrp: VRRP_Instance(mes_Redis) Transition to MASTER STATE Nov 12 18:47:26 message4 Keepalived_vrrp: VRRP_Instance(mes_Redis) Entering MASTER STATE Nov 12 18:47:26 message4 Keepalived_vrrp: VRRP_Instance(mes_Redis) setting protocol VIPs. Nov 12 18:47:26 message4 Keepalived_vrrp: VRRP_Instance(mes_Redis) Sending gratuitous ARPs on eth0 for 192.168.172.100 Nov 12 18:47:36 message4 Keepalived_vrrp: VRRP_Instance(mes_Redis) Sending gratuitous ARPs on eth0 for 192.168.172.100

查看Redis slave信息,此时redis进入master状态

[root@node4 redis]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether d4:85:64:50:47:48 brd ff:ff:ff:ff:ff:ff inet 192.168.172.4/24 brd 192.168.172.255 scope global eth0 inet 192.168.172.100/32 scope global eth0 inet6 fe80::d685:64ff:fe50:4748/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether d4:85:64:50:47:4a brd ff:ff:ff:ff:ff:ff 4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether d4:85:64:50:47:44 brd ff:ff:ff:ff:ff:ff 5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state

测试恢复Redis Master,此时keepalived状态变为backup,redis变为slave

Nov 12 10:56:23 node3 Keepalived_vrrp: VRRP_Script(chk_redis) succeeded Nov 12 10:56:23 node3 Keepalived_vrrp: VRRP_Instance(mes_Redis) Entering BACKUP STATE role:slave master_host:192.168.172.4 master_port:6379 master_link_status:up master_last_io_seconds_ago:4 master_sync_in_progress:0

数据同步正常

测试关闭Keepalived backup

[root@node4 redis]# service keepalived stop

查看keepalived master信息

Nov 12 11:15:49 node3 Keepalived_vrrp: VRRP_Instance(mes_Redis) Transition to MASTER STATE Nov 12 11:15:50 node3 Keepalived_vrrp: VRRP_Instance(mes_Redis) Entering MASTER STATE Nov 12 11:15:50 node3 Keepalived_vrrp: VRRP_Instance(mes_Redis) setting protocol VIPs. Nov 12 11:15:50 node3 Keepalived_vrrp: VRRP_Instance(mes_Redis) Sending gratuitous ARPs on eth0 for 192.168.172.7 Nov 12 11:16:00 node3 Keepalived_vrrp: VRRP_Instance(mes_Redis) Sending gratuitous ARPs on eth0 for 192.168.172.7

测试关闭Redis Slave重启数据是否丢失

[root@node4 redis]# /dragon/bin/redis/bin/redis-cli redis 127.0.0.1:6379> get foo "bar"

用redis-benchmark测试Redis性能

[root@node2 ~]# redis-benchmark -h 192.168.172.7 -t set -n 1000000 -r 100000000 ====== SET ====== 1000000 requests completed in 18.96 seconds 50 parallel clients 3 bytes payload keep alive: 1 99.28% <= 1 milliseconds 99.85% <= 2 milliseconds 99.96% <= 3 milliseconds 99.97% <= 8 milliseconds 99.97% <= 9 milliseconds 99.98% <= 14 milliseconds 99.98% <= 15 milliseconds 99.99% <= 17 milliseconds 99.99% <= 18 milliseconds 100.00% <= 87 milliseconds 100.00% <= 87 milliseconds 52748.18 requests per second

压力测试一段时间,master内存数据量达到15.9G,slave内存数据量达到9G,此时slave持久化时间消耗很大,查询时延很大。

master的info

redis 127.0.0.1:6379> info redis_version:2.4.14 redis_git_sha1:00000000 redis_git_dirty:0 arch_bits:64 multiplexing_api:epoll gcc_version:4.4.6 process_id:24839 uptime_in_seconds:8348 uptime_in_days:0 lru_clock:2086437 used_cpu_sys:3687.96 used_cpu_user:1733.84 used_cpu_sys_children:0.01 used_cpu_user_children:0.00 connected_clients:1 connected_slaves:1 client_longest_output_list:495810 client_biggest_input_buf:0 blocked_clients:0 used_memory:17087636096 used_memory_human:15.91G used_memory_rss:16042332160 used_memory_peak:17119264664 used_memory_peak_human:15.94G mem_fragmentation_ratio:0.94 mem_allocator:jemalloc-2.2.5 loading:0 aof_enabled:0 changes_since_last_save:300459493 bgsave_in_progress:0 last_save_time:1342063376 bgrewriteaof_in_progress:0 total_connections_received:8839 total_commands_processed:301293452 expired_keys:0 evicted_keys:0 keyspace_hits:425469 keyspace_misses:1 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:1616 vm_enabled:0 role:master slave0:192.168.172.4,38292,online db0:keys=94571396,expires=0

slave的info

redis 127.0.0.1:6379> info redis_version:2.4.14 redis_git_sha1:00000000 redis_git_dirty:0 arch_bits:64 multiplexing_api:epoll gcc_version:4.4.6 process_id:21820 uptime_in_seconds:6894 uptime_in_days:0 lru_clock:2089328 used_cpu_sys:695.35 used_cpu_user:1090.20 used_cpu_sys_children:24.67 used_cpu_user_children:188.16 connected_clients:5 connected_slaves:0 client_longest_output_list:0 client_biggest_input_buf:4 blocked_clients:0 used_memory:9740498160 used_memory_human:9.07G used_memory_rss:8099332096 used_memory_peak:9740500440 used_memory_peak_human:9.07G mem_fragmentation_ratio:0.83 mem_allocator:jemalloc-2.2.5 loading:0 aof_enabled:1 changes_since_last_save:160162637 bgsave_in_progress:0 last_save_time:1342094071 bgrewriteaof_in_progress:1 total_connections_received:6799 total_commands_processed:226063438 expired_keys:0 evicted_keys:0 keyspace_hits:13 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:142125 vm_enabled:0 role:slave aof_current_size:7735856830 aof_base_size:3791924084 aof_pending_rewrite:0 aof_buffer_length:16400 aof_pending_bio_fsync:0 master_host:192.168.172.3 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 db0:keys=88586614,expires=0 (1.76s) redis 127.0.0.1:6379> get foo "bar" (2.33s)

参考

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/73db2b9ac894f4d429e2baea159fc29c.html