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)

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

[root@localhost ~]# yum -y install ipvsadm.x86_64 keepalived.x86_64

[root@localhost ~]# service keepalived start

配置主keepalived:

[root@localhost ~]# 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
        }
    }
}                     

[root@localhost ~]# service keepalived start
正在启动 keepalived:                                      [确定]

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

[root@localhost ~]# ip a

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

[root@localhost ~]# 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
        }
    }
}

[root@localhost ~]# service keepalived start
正在启动 keepalived:                                      [确定]

5.节点服务器配置

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

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.253.100
NETMASK=255.255.255.255
ONBOOT=yes

[root@localhost ~]# systemctl  restart network  #重启下网卡

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

[root@localhost network-scripts]# vim /etc/rc.local 
/sbin/route add -host 192.168.253.100 dev lo:0
[root@localhost network-scripts]# route add -host 192.168.253.100 dev lo:0

修改内核参数

[root@localhost 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的请求。

[root@localhost network-scripts]# sysctl -p   #检测参数是否写错

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

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

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# vim /var/www/html/index.html

welcome to web1!

[root@localhost ~]# systemctl  start httpd

#web2跟上面操作一样

8.测试

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

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

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

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖胖不胖、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值