基于keepalived的redis系统master双机热备读数据负载均衡设置方案.docx
《基于keepalived的redis系统master双机热备读数据负载均衡设置方案.docx》由会员分享,可在线阅读,更多相关《基于keepalived的redis系统master双机热备读数据负载均衡设置方案.docx(47页珍藏版)》请在冰豆网上搜索。
基于keepalived的redis系统master双机热备读数据负载均衡设置方案
基于keepalived的redis系统master双机热备,读数据负载均衡设置方案
==========================================================================================
硬件:
机器 ip 作用
master 192.168.0.2 redis系统的master主机
slave1 192.168.0.3 redis系统的slave机器,和master组成双机热备
slave2 192.168.0.4
redis系统的slave机器,和slave1构成读数据的负载均衡系统
软件:
keepalived,下载地址:
www.keepalived.org
lvs,下载地址:
http:
//www.linuxvirtualserver.org
redis,下载地址:
www.redis.io
centos6.4版本
安装:
不采用编译安装的方式,使用yum安装
1.安装kernel-devel:
yuminstallkernel-devel.这是ipvsadm需要的
2.安装lvs:
yuminstallipvsadm
3.安装keepalived:
yuminstallkeepalived
如果无法联网,请去这里考古寻找自己需要的rpm文件
base:
update:
下面是需要的rpm文件列表截图
kernel-devel需要的文件
以及需要的证书
lvs需要的文件
keepalived需要的文件
注意,三台机器都需要安装keepalived
配置keepalived:
1.centos必要配置:
/etc/sysctl.conf文件
net.ipv4.ip_forward=1#转发开启
2.keepalived必要配置:
master修改/etc/keepalived/keepalived.conf为如下
[plain] viewplaincopy
1.!
ConfigurationFileforkeepalived
2.
3.global_defs{
4. notification_email{
5. 邮箱
6. }
7. notification_email_from邮箱
8. smtp_server邮箱服务器地址
9. smtp_connect_timeout30
10. router_idLVS_DEVEL
11.}
12.vrrp_instanceVI_1{
13. stateMASTER
14. interfaceeth0#eth0是要绑定的网卡
15. virtual_router_id100#同一个vrrp_instance中的值必须一样
16. priority160 #master的值要高于backup的
17. advert_int1
18. authentication{
19. auth_typePASS
20. auth_pass1111
21. }
22. virtual_ipaddress{
23. 192.168.0.5 #用于双机热备的虚拟ip
24. }
25.
26.}
27.virtual_server192.168.0.56379{
28. delay_loop3
29. lb_algowrr
30. lb_kindDR
31. persistence_timeout30
32. protocolTCP
33. real_server192.168.0.26379{
34. weight8
35. notify_downredis服务失败后要执行的脚本的路径/脚本名 #服务失败后要执行的脚本
36. TCP_CHECK{
37. connect_timeout1
38. nb_get_retry3
39. delay_before_retry3
40. connect_port6379
41. }
42. }
43.}
slave1修改/etc/keepalived/keepalived.conf为如下
[plain] viewplaincopy
1.!
ConfigurationFileforkeepalived
2.
3.global_defs{
4. notification_email{
5. 邮箱
6. }
7. notification_email_from邮箱
8. smtp_server邮箱服务器地址
9. smtp_connect_timeout30
10. router_idLVS_DEVEL
11.}
12.
13.vrrp_instanceVI_1{
14. stateMASTER
15. interfaceeth0#eth0是要绑定的网卡
16. virtual_router_id100#同一个vrrp_instance中的值必须一样
17. priority160 #master的值要高于backup的
18. advert_int1
19. authentication{
20. auth_typePASS
21. auth_pass1111
22. }
23. virtual_ipaddress{
24. 192.168.0.5 #用于双机热备的虚拟ip
25. }
26. notify_master将slave重新转换为slave的脚本
27.}
28.vrrp_instanceVI_2{
29. stateMASTER #将此slave作为读数据的master
30. interfaceeth0
31. virtual_router_id101
32. priority151
33. advert_int1
34. authentication{
35. auth_typePASS
36. auth_pass1111
37. }
38. virtual_ipaddress{
39. 192.168.0.6 #用于读取数据的负载均衡的虚拟ip
40. }
41.}
42.virtual_server192.168.0.56379{
43. delay_loop3
44. lb_algowrr
45. lb_kindDR
46. persistence_timeout30
47. protocolTCP
48. real_server192.168.0.26379{
49. weight1
50. notify_downredis服务失败后要执行的脚本的路径/脚本名 #服务失败后要执行的脚本
51. TCP_CHECK{
52. connect_timeout1
53. nb_get_retry2
54. delay_before_retry1
55. connect_port6379
56. }
57. }
58. real_server192.168.0.36379{
59. weight8
60. TCP_CHECK{
61. connect_timeout10
62. nb_get_retry3
63. delay_before_retry3
64. connect_port6379
65. }
66. }
67.}
68.virtual_server192.168.0.66379{
69. delay_loop3
70. lb_algowrr
71. lb_kindDR
72. persistence_timeout30
73. protocolTCP
74. real_server192.168.0.26379{
75. weight8
76. TCP_CHECK{
77. connect_timeout10
78. nb_get_retry3
79. delay_before_retry3
80. connect_port6379
81. }
82. }
83. real_server192.168.0.36379{
84. weight7
85. TCP_CHECK{
86. connect_timeout10
87. nb_get_retry3
88. delay_before_retry3
89. connect_port6379
90. }
91. }
92.}
slave2修改/etc/keepalived/keepalived.conf为如下
[plain] viewplaincopy
1.!
ConfigurationFileforkeepalived
2.
3.global_defs{
4. notification_email{
5. 邮箱
6. }
7. notification_email_from邮箱
8. smtp_server邮箱服务器地址
9. smtp_connect_timeout30
10. router_idLVS_DEVEL
11.}
12.vrrp_instanceVI_2{
13. stateBACKUP
14. interfaceeth0
15. virtual_router_id101
16. priority149
17. advert_int1
18. authentication{
19. auth_typePASS
20. auth_pass1111
21. }
22. virtual_ipaddress{
23. 192.168.0.6
24. }
25.}
26.virtual_server192.168.0.66379{
27. delay_loop3
28. lb_algowrr
29. lb_kindDR
30. persistence_timeout30
31. protocolTCP
32. real_server192.168.0.26379{
33. weight8
34. TCP_CHECK{
35. connect_timeout10
36. nb_get_retry3
37. delay_before_retry3
38. connect_port6379
39. }
40. }
41. real_server192.168.0.36379{
42. weight7
43. TCP_CHECK{
44. connect_timeout10
45. nb_get_retry3
46. delay_before_retry3
47. connect_port6379
48. }
49. }
50.}
配置redis:
master无需特殊配置slave1则设置为master的从机
slave2则需要设置为192.168.0.5的从机,否则在master失效后slave2会无法继续读取数据
需要的脚本:
在master执行的脚本:
[plain] viewplaincopy
1.#!
/usr/bin/envbash
2.ervicekeepalivedstop#需要用户具有权限,不中断keepalived服务虚拟ip无法转移
在slave1执行的脚本:
[plain] viewplaincopy
1.#!
/usr/bin/envbash
2.
3./usr/local/bin/redis-cli-h127.0.0.1-p6379slaveofNOONE#将slave1转换为redis的
slave1第二个脚本,在master服务重启后将slave1重新转换为slave状态
最终效果:
192.168.0.5提供了redis的双机热备服务,192.168.0.6则提供了数据读取的负载均衡
[plain] viewplaincopy
1.#!
/usr/bin/envbash
2.
3./usr/local/bin/redis-clislaveof192.168.0.26379#将slave1重新转换为redis的slave
需要注意,master每次需要先启动redis服务然后再启动keepalived
==========================================================================================
基于keepalived、redissentinel的高可用redis集群【修改版】
2013年12月12日 ⁄综合 ⁄共5289字⁄字号 小 中 大 ⁄ 评论关闭
原方案地址原方案
硬件
机器名
IP
作用
master
192.168.0.2
redis的master服务器
slave1
192.168.0.3
redis的slave服务器
slave2
192.168.0.4
redis的slave服务器
route1
192.168.0.5【虚拟IP:
192.168.0.7】
keepalived和redissentinel服务器,承载写redis的VIP【虚拟ip】,做写的双机热备的主master指定
route2
192.168.0.6【虚拟IP:
192.168.0.8】
keepalived和redissentinel服务器,承载读redis的VIP,做读的负载均衡和写的双机热备的master备份路由指定
详细的keepalived配置,route1
!
ConfigurationFileforkeepalived
global_defs{
notification_email{
邮箱
}
notification_email_from邮箱@
smtp_server邮箱服务器地址
smtp_connect_timeout30
router_idLVS_DEVEL
}
vrrp_instanceVI_1{
stateMASTER
interfaceeth1
virtual_router_id100
priority150
advert_int1
authentication{
auth_typePASS
auth_pass1111
}
virtual_ipaddress{
192.168.0.7
}
}
vrrp_instanceVI_2{
stateBACKUP
interfaceeth1
virtual_router_id101
priority101
advert_int1
authentication{
auth_typePASS
auth_pass1111
}
virtual_ipaddress{
192.168.0.8
}
}
virtual_server192.168.0.76379{
delay_loop3
lb_algorr
lb_kindDR
persistence_timeout15
protocolTCP
real_server192.168.0.46379{
weight4
notify_up/home/wind/redis_up.sh
MISC_CHECK{
misc_path"/home/wind/redischeck.py192.168.0.46379"
misc_timeout5
}
}
real_server192.168.0.26379{
weight3
notify_up/home/wind/redis_up.sh
MISC_CHECK{
misc_path"/home/wind/redischeck.py192.168.0.26379"
misc_timeout5
}
}
real_server192.168.0.36379{
weight3
notify_up/home/wind/redis_up.sh
MISC_CHECK{
misc_path"/home/wind/redischeck.py192.168.0.26379"
misc_timeout5
}
}
}
virtual_server192.168.0.86379{
delay_loop3
lb_algowrr
lb_kindDR
persistence_timeout30
protocolTCP
real_server192.168.0.26379{
weight8
TCP_CHECK{
connect_timeout10
nb_get_retry3
delay_before_retry3
connect_port6379
}
}
real_server192.168.0.36379{
weight2
TCP_CHECK{
connect_timeout10
nb_get_retry3
delay_before_retry3
connect_port6379
}
}
real_server192.168.0.46379{
weight2
TCP_CHECK{
connect_timeout10
nb_get_retry3
delay_before_retry3
connect_port6379
}
}
}
route2的配置文件
!
ConfigurationFileforkeepalived
global_defs{
notification_email{
#xieqj@
#shanghq@
}
notification_email_fromxieqj@
smtp_server
smtp_connect_timeout30
router_idLVS_DEVEL
}
vrrp_instanceVI_1{
stateBACKUP
interfaceeth1
virtual_router_id100
priority100