Haproxy+keepalived实现双主负载均衡高可用集群

项目说明

1、         使用LVS负载均衡用户请求到后端web服务器,并且实现健康状态检查

2、         使用keepalived高可用LVS,避免LVS单点故障

3、         集群中分别在LK-01和LK-02运行一个VIP地址,实现LVS双主

4、         用户通过DNS轮训的方式实现访问集群的负载均衡(不演示)

实验拓扑

环境介绍:


IP地址


功能描述


HK-01


172.16.4.100


调度用户请求到后端web服务器,并且和LK-02互为备份


HK-02


172.16.4.101


调度用户请求到后端web服务器,并且和LK-01互为备份


WEB-01


172.16.4.102


提供web服务


WEB-02


172.16.4.103


提供web服务


DNS


172.16.4.10


实现DNS轮训解析用户请求域名地址


VIP1


172.16.4.1


用户访问集群的入口地址,可能在LK-01,也可能在LK-02


VIP2


172.16.4.2


用户访问集群的入口地址,可能在LK-01,也可能在LK-02

配置示例

后端WEB服务器配置

Web服务器的配置极其简单,只需要提供测试页面启动web服务即可,配置如下:

Web-01配置

[[email protected] ~]# echo "web-01" >/var/www/html/index.html
[[email protected] ~]# service httpd start
Web-02配置
[[email protected] ~]# echo "web-02" >/var/www/html/index.html
[[email protected] ~]# service httpd start

LVS访问后端web服务器,验证web服务提供成功

[[email protected] ~]# curl 172.16.4.102
web-01
[[email protected] ~]# curl 172.16.4.103
web-02

出现设置的页面,就说明web服务是正常

Haproxy+keepalived配置

两个HK节点都安装haproxy和keepalived

[[email protected] ~]# yum -y install haproxy
[[email protected] ~]# yum -y install haproxy
[[email protected] ~]# yum -y install keepalived
[[email protected] ~]# yum -y install keepalived

修改内核参数设置,设置haproxy启动的时候不管有没有vip地址都可以启动

[[email protected] ~]# echo"net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
[[email protected] ~]# sysctl –p
[[email protected] ~]# echo "net.ipv4.ip_nonlocal_bind= 1" >> /etc/sysctl.conf
[[email protected] ~]# sysctl -p

设置haproxy

两个haproxy节点的配置文件一模一样,所以只放出一个

[[email protected] ~]# vim /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local2
 
   chroot      /var/lib/haproxy
   pidfile     /var/run/haproxy.pid
   maxconn     4000
    user        haproxy
   group       haproxy
    daemon
 
    statssocket /var/lib/haproxy/stats
 
defaults
    mode                    http
    log                     global
   option                  httplog
   option                 dontlognull
    optionhttp-server-close
    optionforwardfor       except 127.0.0.0/8
   option                  redispatch
   retries                 3
    timeouthttp-request    10s
    timeoutqueue           1m
    timeoutconnect         10s
    timeoutclient          1m
    timeoutserver          1m
    timeouthttp-keep-alive 10s
    timeoutcheck           10s
   maxconn                 3000
 
     statsenable
     statsuri /admin?stats
     statsauth proxy:proxy
 
 
listen www1
        bind172.16.4.1:80
        modehttp
       option forwardfor
       server www01  172.16.4.102:80  check
       server www02  172.16.4.103:80  check
listen www2
        bind172.16.4.2:80
        modetcp
       option forwardfor
       server www01  172.16.4.102:80  check
       server www01  172.16.4.103:80  check

keepalived设置

HK-01配置

[[email protected] ~]# vim /etc/keepalived/keepalived.conf
global_defs {
   router_idLVS_DEVEL
}
 
vrrp_script chk_mt_down {
  script"[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
  interval 1
  weight -5
}
 
vrrp_instance VI_1 {
    stateMASTER
    interfaceeth0
   virtual_router_id 51
    priority100
   advert_int 1
   authentication {
       auth_type PASS
        auth_pass asdfgh
    }
   virtual_ipaddress {
       172.16.4.1/32 brd 172.16.4.1 dev eth0 label eth0:0
    }
  track_script {
   chk_mt_down
   }
}
 
vrrp_instance VI_2 {
    stateBACKUP
    interfaceeth0
   virtual_router_id 52
    priority99
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass qwerty
    }
   virtual_ipaddress {
       172.16.4.2
    }
  track_script {
   chk_mt_down
   }
}

HK-02配置

[[email protected] ~]# vim /etc/keepalived/keepalived.conf
global_defs {
   router_idLVS_DEVEL
}
 
vrrp_script chk_mt_down {
  script"[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
  interval 1
  weight -5
}
 
vrrp_instance VI_1 {
    stateBACKUP
    interfaceeth0
   virtual_router_id 51
    priority99
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass asdfgh
    }
   virtual_ipaddress {
       172.16.4.1/32 brd 172.16.4.1 dev eth0 label eth0:0
    }
  track_script {
   chk_mt_down
   }
}
vrrp_instance VI_2 {
    stateMASTER
    interfaceeth0
   virtual_router_id 52
    priority100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass qwerty
    }
   virtual_ipaddress {
       172.16.4.2
    }
  track_script {
   chk_mt_down
   }
}

设置完成之后两个节点分别启动haproxy和keepalived服务,集群就配置完成了

[[email protected] ~]# service haproxy start
[[email protected] ~]# service keepalived start
[[email protected] ~]# service haproxy start
[[email protected] ~]# service keepalived start

验证

访问状态页面,www1,和www2示例都显示正常

VIP地址也可以正常启动

[[email protected] ~]# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:0c:29:22:c5:c2 brd ff:ff:ff:ff:ff:ff
    inet172.16.4.100/16 brd 172.16.255.255 scope global eth0
    inet172.16.4.1/32 brd 172.16.4.1 scope global eth0:0
    inet6fe80::20c:29ff:fe22:c5c2/64 scope link
      valid_lft forever preferred_lft forever
[[email protected] ~]# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:0c:29:f1:dd:b2 brd ff:ff:ff:ff:ff:ff
    inet172.16.4.101/16 brd 172.16.255.255 scope global eth0
    inet172.16.4.2/32 scope global eth0
    inet6fe80::20c:29ff:fef1:ddb2/64 scope link
      valid_lft forever preferred_lft forever

负载均衡测试

分别访问两个vip地址均实现了负载均衡的效果

[[email protected] ~]# curl 172.16.4.1
web-02
[[email protected] ~]# curl 172.16.4.1
web-01
[[email protected] ~]# curl 172.16.4.2
web-01
[[email protected] ~]# curl 172.16.4.2
web-02

高可用验证

手动关闭其中HK-02,验证vip地址是否会自动漂移到HK-01服务器

[[email protected] ~]# touch /etc/keepalived/down

两个vip地址均正常漂移到HK-02

[[email protected] ~]# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:0c:29:22:c5:c2 brd ff:ff:ff:ff:ff:ff
    inet172.16.4.100/16 brd 172.16.255.255 scope global eth0
    inet172.16.4.1/32 brd 172.16.4.1 scope global eth0:0
    inet172.16.4.2/32 scope global eth0
    inet6fe80::20c:29ff:fe22:c5c2/64 scope link
      valid_lft forever preferred_lft forever

健康状态检测验证

手动关闭web-02,查看是否会自动下线web-02

[[email protected] ~]# service httpd stop

查看web状态页面,WEB-02已经自动下线了

访问验证,调度请求不会转发到web-02

[[email protected] ~]# curl 172.16.4.1
web-01
[[email protected] ~]# curl 172.16.4.1
web-01
[[email protected] ~]# curl 172.16.4.2
web-01
[[email protected] ~]# curl 172.16.4.2
web-01
时间: 2024-08-02 06:59:11

Haproxy+keepalived实现双主负载均衡高可用集群的相关文章

Mysql5.7.22+Keepalived双主互备高可用集群

DB1:192.168.254.128DB2:192.168.254.129配置前进行校时操作#安装ntpdate工具yum install ntpdate -y#使用ntpdate校时(后面的是ntp服务器)ntpdate pool.ntp.org 配置mysql双主备 安装数据库链接(在主页数据库里面可以看到)http://blog.51cto.com/10158955/1926574 DB1修改配置文件(需重启)vi /etc/my.cnf#在[mysqld]添加server-id=166

linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实施linux集群架构,才能既有效保证网站健康运行,又能节省运维成本呢?下面依据近几年的运维经历,简单梳理下自己的一点感悟. (1)机房的选择如果有自己公司的机房那是再好不过的了:如果没有,建议放在BGP机房内托管,如果有选择的话,最好是选择带有硬件防火墙的机房,这样在安全方面也有保障:网站如若是放在

通过KeepAlived搭建MySQL双主模式的高可用集群系统

企业级MySQL集群具备高可用.可扩展.易管理.低成本的特点.下面将介绍企业环境中经常应用的一个解决方案,即MySQL的双主互备架构,主要设计思路是通过MySQL Replication技术将两台MySQL Server互相将对方作为自己的Master,自己又同时作为对方的Slave来进行复制.这样就实现了高可用构架中的数据同步功能,同时,将采用KeepAlived来实现Mysql的自动failover.在这个构架中,虽然两台MySQL Server互为主从,但同一时刻只有一个MySQL Ser

lvs+heartbeat搭建负载均衡高可用集群

[172.25.48.1]vm1.example.com [172.25.48.4]vm4.example.com 集群依赖软件: 1.安装heartbeat集群软件 2.生成heartbeat配置文件. 3.配置heartbeat配置文件.

keepalived + haproxy 实现web 双主模型的高可用负载均衡

1.本文的架构图: 阐述各服务器用途: 1.haproxy在本构架中实现的是:负载均衡 2.keepalived实现对haproxy的高可用 3.apache static 实现静态页面的访问 4.aoache dynamic实现动态页面的访问,图中有两个是实现负载均衡的 配置各功能模块: 一.配置haproxy和keepalived 验证: 1.当一台keepalived宕机后,VIP会不会转移到另外一台服务器 2.当一台haproxy服务出故障,VIP会不会转移到另外一台服务器 注意: 那如

Nginx+Keepalived 实现反代 负载均衡 高可用(HA)配置

Nginx+Keepalived实现反代负载均衡高可用(HA)配置 Nginx+Keepalived实现反代负载均衡高可用配置 OS IP 子网掩码 路由网关 Centos6.6 nginx Keepalived Eth0:192.168.26.210 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6 Nginx Keepalived Eth0:192.168.26.211 255.255.252.0 192.168.25.3 VIP

RHEL6搭建 keepalived (HA) 任意单故障节点的高可用集群

搭建 keepalived (HA) 任意单故障节点的高可用集群 实验拓扑图: 实验要求: 使用Keepalived实现web服务器的高可用 Web服务器IP地址分别为192.168.4.53和192.168.4.54 Web服务器53 为主服务器,Web服务器54为备服务器 Web服务器的VIP地址为192.168.4.251 客户端通过访问VIP地址访问Web页面 实验步骤: 实验准备 配置yum源 # service iptables stop            //关闭防火墙 # c

keepalived+nginx 双主模型实现高可用服务

一.keepalived的工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个虚拟路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为mas

六十一、集群介绍、keepalived介绍、用keepaliver配置高可用集群

一.集群介绍 根据功能划分为两大类:高可用和负载均衡. 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:heartbeat.keepalived.heartbeat有很多bug,所以不再使用. 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2 实现负载均衡的开源软件有LVS.keepalived.hapr