hk8lo 发表于 2015-9-1 09:03:40

lvs DR模式 +keepalived 实现directory 高可用、httpd服务负载均衡集群

功能:lvs+keepalived高可用负载均衡集群中:·keepalived负责后端real server健康状态检查如果一台real server服务出现故障,则会从集群服务中剔除,等恢复之后再自动加入到集群。
·keepalived负责负载均衡器(directory server)高可用A和B两台虚拟机装lvs+keepalived(主)和lvs+keepalived(备),但是对外表现为一个虚拟IP,主服务器会发送消息给备服务器,当备服务器收不到消息的时候,认为主出现故障,然后接管虚拟IP继续提供服务,如果主节点恢复,则再次接管虚拟IP,提供服务。原理:·使用layer3工作时,keepalived定期向服务器群组中发送icmp的数据包,如果某台服务器IP地址没有激活,则认为失效,并剔除(典型例子就是 这台服务器被非法关机)·使用layer4工作时,比如是web 80端口的负载均衡,keepalived检测后端服务器群组中的80端口有没有启动,如果没有,则认为失效,并剔除·使用layer7工作时,根据用户设定,如果与用户设定的不符,则认为失效,并剔除三个模块:·core:负责主进程的启动、维护,全局配置文件的加载和解析·health_check:负载健康状态检查·vrrp:实现vrrp协议实验:·主节点和备节点把keepalived启动,web1和web2启动httpd,架构设计:利用keepalived来实现lvs的Directory server的高可用,再利用lvs和keepalived的高可用,来实现Web服务的负载均衡!架构图如下本文中的keepalived是检测Real server的健康状态以及负载均衡器的主和备之间的故障转移。检测real server健康状态:如果有一台web服务器宕机或者出现故障,keepalived会检测到,并从集群群组中剔除,等恢复后,再自动添加进来负载均衡器故障转移:一个web服务器至少需要两台keepalived,一台为主节点(Master),一台为备节点(backup),但对外表现为一个虚拟IP,主服务器会发送组播,如果备服务器收不到vrrp包就认定主服务器出现故障,就会接管虚拟IP,继续对外提供服务,从而保证了高可用性。搭建:重点时间同步
      各个节点能互相解析(1)准备环境
    1.主备节点都装lvs和keepalived
   2.web1和web2都装httpd   3.关闭防火墙   4.关闭SELinux   5.web1和web2都要抑制ARP(2)主节点
1
2
3
安装ipvsadm和keepalived   yum -y install keepalived ipvsadm
关闭防火墙                service iptablesstop
关闭SELinux               setenforce 0




修改keepalived配置文件vim /etc/keepalived/keepalived.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
vrrp_instance VI_1 {
    state MASTER            #备用服务器上为 BACKUP
    interface eth0
    virtual_router_id 51
    priority 100            #备用服务器上为90
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass 1111
    }
    virtual_ipaddress {
      172.16.7.5
    }
}
virtual_server 172.16.7.5 80 {
    delay_loop 6                  #每隔6秒查询realserver状态
    lb_algo wrr                   #lvs 算法
    lb_kind DR                  #lvs 模式
    persistence_timeout 60      #同一IP的连接60秒内被分配到同一台realserver
    protocol TCP                  #指定转发协议类型,有TCP和UDP两种

real_server 172.16.7.3 80 {
      weight 3                  #权重
      TCP_CHECK {
      connect_timeout 3         #表示3秒无响应,则超时
      nb_get_retry 3            #表示重试次数
      delay_before_retry 3      #表示重试间隔
      connect_port 80         #端口为80
      }
    }
real_server 172.16.7.4 80 {
      weight 1
      TCP_CHECK {
      connect_timeout 3
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
      }
   }
}




(3)备节点
1
2
3
安装ipvsadm和keepalived   yum -y install keepalived ipvsadm
关闭防火墙                service iptablesstop
关闭SELinux               setenforce 0




修改keepalived配置文件 vim /etc/keepalived/keepalived.conf 只需要修改两处:               NO.1“state MASTER”修改为“state BACKUP”               NO.2“priority 100”修改为“priority99”(4)web1和web2
1
2
3
4
5
6
7
8
9
10
安装ipvsadm和keepalived   yum -y install keepalived ipvsadm
关闭防火墙                service iptablesstop
关闭SELinux               setenforce 0
安装httpd               yum -y install httpd
抑制ARP                   echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce   
                        echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
                        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
                        echo1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
添加VIP      ifconfig lo:0 192.168.1.10 broadcast 192.168.1.10 netmask 255.255.255.255
添加路由   route add-host 192.168.1.10 dev lo:0




测试
[*]测试健康检查:主节点和备节点启动keepalived,web1和web2启动httpd,主节点上查看ipvs规则,能看到web1和web2,ip addr 查看主节点vip,停止web1的httpd服务,主节点上再次查看ipvs规则,web1规则消失,测试成功

[*]测试故障转移:主节点和备节点启动keepalived,web1和web2启动httpd。停止主节点上的keepalived,查看备节点是否接管VIP,继续提供web服务,如果能,测试成功

[*]测试故障恢复:主节点出现故障,keepalived出现故障停止,备节点接管VIP,继续提供web服务。如果主节点恢复,重新启动keepalived,查看vip是否漂移回来,主节点接管备节点服务,继续提供服务。


[*]



页: [1]
查看完整版本: lvs DR模式 +keepalived 实现directory 高可用、httpd服务负载均衡集群