组件及实现的功能
Keepalived:实现对Haproxy服务的高可用,并采用双主模型配置; Haproxy:实现对Nginx的负载均衡和读写分离; Nginx:实现对HTTP请求的高速处理;
架构设计图
重点概念
vrrp_script中节点权重改变算法
vrrp_script 里的script返回值为0时认为检测成功,其它值都会当成检测失败; weight 为正时,脚本检测成功时此weight会加到priority上,检测失败时不加; 主失败:
主 priority <从 priority + weight 时会切换。
主成功:
主 priority + weight >从 priority + weight 时,主依然为主
weight 为负时,脚本检测成功时此weight不影响priority,检测失败时priority – abs(weight) 主失败:
主 priority – abs(weight) <从priority 时会切换主从 主成功:
主 priority >从priority 主依然为主
具体解释详见博文“Keepalived双主模型中vrrp_script中权重改变故障排查” 部署配置 Keepalived部署 配置
001.yum -yinstallkeepalived# 两节点都需部署 002.# 172.16.25.109
003.# vi /etc/keepalived/keepalived.conf 004.! Configuration Fileforkeepalived 005.global_defs {
006. notification_email { 007. root@localhost 008. }
009. notification_email_from admin@lnmmp.com 010. smtp_connect_timeout 3 011. smtp_server 127.0.0.1 012. router_id LVS_DEVEL 013.}
014.vrrp_script chk_maintaince_down {
015. script\
016. interval 1 017. weight 2 018.}
019.vrrp_script chk_haproxy {
020. script\ 021. interval 1 022. weight 2 023.}
024.vrrp_instance VI_1 {
025. interface eth0 #这里应该用心跳网卡,网线直连。 026. state MASTER 027. priority 100
028. virtual_router_id 125 029. garp_master_delay 1 030. authentication { 031. auth_type PASS
032. auth_pass 1e3459f77aba4ded 033. }
034. track_interface { #这里的任何一个网卡故障,都发生切换。当有多个网卡时,这个选项是必要的。比如eth0是外网,eth1是内网用于连接内网的nginx服务器的,那么当eth1挂了之后,就应该切换。 035. eth0
eth1
036. }
037. virtual_ipaddress {
038. 172.16.25.10/16 dev eth0 label eth0:0 039. }
040. track_script { 041. chk_haproxy 042. }
043. notify_master\172.16.25.10\
044. notify_fault\fault 172.16.25.10\ 045.}
046.vrrp_instance VI_2 {