Haproxy+Keepalived+Apache实现高可用

2022-07-14 09:26:31 浏览数 (1)

Haproxy通过结合Keepalived实现负载均衡器节点的高可用

环境介绍:CentOS 6.5平台 Haproxy1:10.10.10.128/24 Haproxy2:10.10.10.129/24 web1:10.10.10.130/24 web2:10.10.10.131/24 VIP:10.10.10.100/24

部署前准备: 1、时间同步: ntpdate ntp1.aliyun.com 2、防火墙策略: service iptables stop chkconfig iptables off 3、SELinux策略: sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinux/config 4、更换国内yum源: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo yum clean all yum makecache 5、重启服务器 reboot

web服务器配置: 1、安装httpd服务     yum install httpd -y 2、修改配置文件:/etc/httpd/conf/httpd.conf     .....     Listen 8080     ServerName 10.10.10.130:8080  #web1     ServerName 10.10.10.131:8080  #web2 3、修改web主页:/var/www/html/index.html     echo "web1" >/var/www/html/index.html    #web1     echo "web2" >/var/www/html/index.html    #web2 4、启动web服务:     service httpd start     chkconfig httpd on 5、验证服务是否正常:     lsof -i:8080     curl 10.10.10.130:8080  #返回web1     curl 10.10.10.131:8080  #返回web2

Haproxy服务器配置: 1、安装Haproxy服务     yum install haproxy -y 2、修改配置文件:/etc/haproxy/haproxy.cfg     cp /etc/haproxy/haproxy /etc/haproxy/haproxy.cfg.bak     vim /etc/haproxy/haproxy.cfg   .........   ......... #--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend  main     bind 0.0.0.0:80     acl url_static      path_beg      -i /static /images /javascript /stylesheets     acl url_static      path_end      -i .jpg .gif .png .css .js

    use_backend static          if url_static     default_backend            dynamic

#--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- backend static     balance    roundrobin     server      static 127.0.0.1:80 check

#--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend dynamic     balance    roundrobin     server  web1 10.10.10.130:8080 check maxconn 2000     server  web2 10.10.10.131:8080 check maxconn 2000

3、检测配置文件是否正确:     haproxy -c -f /etc/haproxy/haproxy.cfg

4、启动Haproxy     service haproxy start     chkconfig haproxy on 5、验证是否正常解析:     curl 10.10.10.128  //重复两次,分别显示web1和web2     curl 10.10.10.129  //重复两次,分别显示web1和web2

Keepalived配置: 1、安装keepalived服务:     yum -y install keepalived 2、修改配置文件: #MASTER端: ! Configuration File for keepalived #定义检查脚本 vrrp_script check_haproxy {         script "/etc/keepalived/check_haproxy.sh"         interval 2         weight 2 } global_defs {   notification_email {         root@localhost   }   notification_email_from keepalived@localhost   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id haproxy1 }

vrrp_instance ha1 {     state MASTER     interface eth0     virtual_router_id 51     priority 100     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {         10.10.10.100/24 dev eth0     }     track_script{         check_haproxy     } }

#BACKUP端: ......... router_id haproxy2  #修改虚拟路由的ID state BACKUP  #修改角色 priority 80    #修改优先级

重启各服务: service keepalived restart service haproxy restart

验证: ip addr 发现虚拟ip:10.10.10.100在MASTER端 访问10.10.10.100正常

/etc/keepalived/check_haproxy.sh

#!/bin/bash A=`ps -C haproxy --no-header |wc -l` if [ $A -eq 0 ];then /etc/init.d/keepalived stop fi

验证Haproxy Keepalived服务的可靠性:

web端:关闭web1的httpd服务,service httpd stop curl 10.10.10.100  #正常返回web2 Haproxy端:关闭haproxy1的keepalived服务,service keepalived stop curl 10.10.10.100 #正常轮询返回web1/web2 通过ip addr 可以查看 VIP漂移到Haproxy2中

0 人点赞