天天看点

LVS负载均衡篇4---Lvs+keepalived+apche 安装部署

1.简介

  • Keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅是双机热备。优点:keepalived对lvs负载调度器实现热备切换,提高可用性,对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。
  • 基于lvs+keepalived实现的lvs群集结构中,至少包含两台热备的负载调度器。使用keepalived构建lvs群集时,也需要用到ipvsadm管理工具,但是大部分工作会由keepalived自动完成,不需要手动执行ipvsadm(除了查看和监控群集以外)。
  • LVS群集是针对Linux内核开发的一个负载均衡项目,基于IP地址虚拟化应用VIP,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决办法。可使用ipvsadm管理工具。通过整合多台相对廉价的普通服务器,以同一个地址对外提供相同的服务。
  • 负载均衡的直接路由工作模式。简称DR工作模式,负载调度器仅作为客户机的访问入口,各节点服务器与调度器位于同一个物理网络,节点服务器直接回应客户机的请求,而不再经过负载调度器。
  • Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能--判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入集群。

2.配置清单

LVS-DR-MASTER         192.168.253.130          centos7.5

LVS-DR-BACKUP          192.168.253.135          centos7.5

LVS-DR-VIP                    192.168.253.100         centos7.5

WEB1-Realserver          192.168.253.178           centos6.5

WEB2-Realserver           192.168.253.179          centos6.5

基本思路如下图(忽略ip)

LVS负载均衡篇4---Lvs+keepalived+apche 安装部署

3.分别在master和backup上安装lvs(LVS采用dr模式)和keepalived软件包

[ro[email protected] ~]# yum -y install ipvsadm.x86_64 keepalived.x86_64

[[email protected] ~]# service keepalived start

配置主keepalived:

[[email protected] ~]# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived                       #http://www.keepalived.org/pdf/UserGuide.pdf 官方配置文档

global_defs {

   router_id LVS_R1               #标识本节点的字条串,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到,主机和备机上的router_id设置为一致,同一个网络中必须唯一,注意在一个网段里有多个集群的话需要设置成不同的router_id。

}

vrrp_instance VI_1 {

    state MASTER                      #指定实例状态,配置为MASTER

    interface eth0                        #指定实例运行在哪个网络接口上

    virtual_router_id 51               #虚拟路由ID(0-255),在一个VRRP实例中主备服务器ID必须一样,但是在同一个网络中不可存在同样的virtual_router_id,不要和其他集群重复,如果一个配置文件中配置了多个VRRP实例,各个实例的virtual_router_id也必须区分开来

    priority 100                          #优先级值设定:MASTER要比BACKUP的值大

    advert_int 1                         #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒。

    authentication {                   #认证机制

        auth_type PASS            #默认PASS; 有两种:PASS或AH

        auth_pass 1111             #默认1111; 可多位字符串,但仅前8位有效,设置验证密码,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信。 }

    }

    virtual_ipaddress {

        192.168.253.100          #虚拟IP,可多个,写法为每行一个

    }

}

virtual_server 192.168.253.100 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

!    persistence_timeout 50     #持久连接超时时间,会话保持时间,单位是秒,这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在50秒内没有执行任何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受50秒的时间限制。

    protocol TCP       #指定转发协议类型,有tcp和udp两种。

    real_server 192.168.253.178 80 {

        weight 1

        TCP_CHECK {      #使用TCP_CHECK检测RS的使用可用性

            connect_port 80    #指定连接的RS端口

           connect_timeout 3   #指定连接RS超时时间

            nb_get_retry 3        #重试次数

            delay_before_retry 3   #重试间隔

        }

    }

   real_server 192.168.253.179 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}                     

[[email protected] ~]# service keepalived start

正在启动 keepalived:                                      [确定]

通过ip命令查看(ifconfig看不到),实际状态为MASTER的主服务器上将为eth0自动添加VIP地址。在主上:

[[email protected] ~]# ip a

4.备keepalived配置文件配置信息:备用服务器可以有多台,配置时候基本相同只要修改路由器名称,热备状态,优先级就可以

[[email protected] ~]# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {

   router_id LVS_R2

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 99

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

! Configuration File for keepalived

global_defs {

   router_id LVS_R2

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 99

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.253.100

    }

}

virtual_server 192.168.253.100 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

!    persistence_timeout 50

    protocol TCP

    real_server 192.168.253.178 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

   real_server 192.168.253.179 80 {

        weight 1

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

}

[[email protected] ~]# service keepalived start

正在启动 keepalived:                                      [确定]

5.节点服务器配置

使用DR模式的时候,节点服务器也需要配置vip地址,并且调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突。

[[email protected] ~]# cd /etc/sysconfig/network-scripts/

[[email protected] network-scripts]# cp ifcfg-lo ifcfg-lo:0

[[email protected] network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.253.100

NETMASK=255.255.255.255

ONBOOT=yes

[[email protected] ~]# systemctl  restart network  #重启下网卡

添加VIP本地访问路由(将访问VIP的数据限制正在本地,避免通信紊乱)

[[email protected] network-scripts]# vim /etc/rc.local 

/sbin/route add -host 192.168.253.100 dev lo:0

[[email protected] network-scripts]# route add -host 192.168.253.100 dev lo:0

修改内核参数

[[email protected] network-scripts]# vim /etc/sysctl.conf   #在最下面添加

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

#注意:

arp_announce为2时:只向该网卡回应与该网段匹配的ARP报文。

arp_ignore为1:只响应目的IP地址为接收网卡上的本地地址的arp请求

其主要是实现禁止响应ARP的请求。

[[email protected] network-scripts]# sysctl -p   #检测参数是否写错

6.另一个节点也是同样的操做.

7.安装httpd,创建网页测试lvs集群

[[email protected] ~]# yum -y install httpd

[[email protected] ~]# vim /var/www/html/index.html

welcome to web1!

[[email protected] ~]# systemctl  start httpd

#web2跟上面操作一样

8.测试

在外面直接访问虚拟ip地址,则可以访问到对应节点上的网站信息,当主调度器坏掉的时候,会自动切换到备用的调度器上面,网站访问量根据权重和算法来计算。

查看负载分配情况可以执行下面命令

LVS负载均衡篇4---Lvs+keepalived+apche 安装部署
LVS负载均衡篇4---Lvs+keepalived+apche 安装部署
LVS负载均衡篇4---Lvs+keepalived+apche 安装部署

这时候我们的部署就完成了.

继续阅读