如何快速构建高可用集群(Keepalived+Haproxy+Nginx) cycwll

组件及实现的功能

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 {

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4