首页 > Web开发 > 详细

lvs+keepalived+apache

时间:2020-04-12 21:40:34      阅读:83      评论:0      收藏:0      [点我收藏+]

 

Keepalived介绍

       keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第 5层交换。 Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自动将web 服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web 服务器。

 

Keepalived工作原理

Layer3,4&5 工作在 IP/TCP 协议栈的 IP 层, TCP 层,及应用层,。

Layer3: Keepalived 使用 Layer3 的方式工作式时, Keepalived 会定期向服务器群中的服务器发送一个 ICMP 的数据包(既我们平时用的 Ping 程序) , 如果发现某台服务的 IP 地址没有激活,Keepalived 便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。 Layer3 的方式是以服务器的 IP 地址是否有效作为服务器工作正常与否的标准。

Layer4: 主要以 TCP 端口的状态来决定服务器工作正常与否。如 web server 的服务端口一般是80,如果 Keepalived 检测到 80 端口没有启动,则 Keepalived 将把这台服务器从服务器群中删除。

Layer5: Layer5 就是工作在具体的应用层了,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。 Keepalived 将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则 Keepalived 将把服务器从服务器群中剔除。

Keepalived的作用与构建

1.管理 VIP    VIP 会在 LVS 之间漂移

2.监控 LVS分发器

运行在主分发的 Keepalived 会以组播的形式向网络中宣告自己,即主分发器还活着,备用节点能收到。当备用节点,在一个时间单位中收不到组播,备用节点会认为主 LVS 挂了,开始接手主分发器工作,把 VIP 配给自己。

 

3.管理 RS

Keepalived 会每隔一个时间段去做一次类似于访问的操作如:

探针: elinks http://192.168.3.64 –dump

经典高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选)

 

我理解是keeplived防止vip主机宕机,宕机后备份的机子马上得到vip

实验说明:

准备4台机子

192.168.1.5 搭建lvs+keepalived(master)

192.168.1.6 搭建lvs+keepalived(backup)

192.168.1.7 搭建apache

192.168.1.8 搭建apache

 

1.5配置:

[root@5 ~]# yum -y install keepalived ipvsadm

[root@5 ~]# cd /etc/keepalived/

[root@5 keepalived]# cp keepalived.conf keepalived.conf.bak

[root@5 keepalived]# vim keepalived.conf

配置文件详解:

global_defs {
   notification_email {
     root@localhost                         #默认三个地址,修改可用地址
   }
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id LVS1                       #标识当前节点名字,两个节点的此项需要不相同。
#  vrrp_skip_check_adv_addr
#  vrrp_strict
#  vrrp_garp_interval 0
#  vrrp_gna_interval 0

}
#默认的配置文件中,使用第三方 smtp 服务器,但这在现实中几乎没有意义,发不出邮件,我们将其挃定为 localhost, 我们也可以将通知信息的发送交给本地 sendmail 服务处理。 

vrrp_instance VI_1 {  #定义一个实例,一个集群就是一个实例。 默认VI_1 可以随意改
    state MASTER        #指定 A 节点为主节点 备用节点上设置为 BACKUP 即可 
    interface eth0          #绑定虚拟 IP 的网络接口 
    virtual_router_id 51    #VRRP 组名,两个节点的设置必须一样,以指明各个节点属于同一 VRRP 组
    priority 100            #主节点的优先级(1-254 之间),备用节点必须比主节点优先级低 
    advert_int 1             #组播信息发送间隔,两个节点设置必须一样 
    authentication {         #设置验证信息,两个节点必须一致 
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100        #指定虚拟 IP, 两个节点设置必须一样
    }
}
#类似添加虚拟一个服务 ipvsadm -A -t 192.168.1.70:80 -s rr
virtual_server 192.168.1.100 80 {    #对虚拟IP63添加LVS相关内容
    delay_loop 6                    #Keepalived 多长时间监测一次 RS
    lb_algo rr                      #分发算法
    lb_kind DR                      #DR 模式
    nat_mask 255.255.255.0  #非NAT模式注释掉此行  注释用!号
    persistence_timeout 50  #同一 IP 50秒内的请求都发到同个real server ,这个会影响LVS的 rr 调度算法, 同一 IP 超过 50 秒后,再次访问,才会被转发到另一台 real server 上。 persistence 持久性的意思
    protocol TCP
# ipvsadm -a -t 192.168.2.111:80 -r 192.168.2.64 -g 添加的内容,类似这条命令
# ipvsadm -a -t 192.168.2.111:80 -r 192.168.2.65 –g 添加的内容,类似这条命令
    real_server 192.168.1.7 80 { #配置服务节点 1,需要指定 realserver 的真实 IP 地址和端口,IP不端口之间用空格隔开 
        weight 1    #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小可以为不同性能的服务器  
        TCP_CHECK {     #这段内容手动添加,把以前的内容删除
                connect_timeout 3       #表示 3 秒无响应超时
                nb_get_retry 3          #表示重试次数
                delay_before_retry 3    #表示重试间隔
                connect_port 80         #检测端口
                }
    }
}
   real_server 192.168.1.8 80 {
        weight 1
TCP_CHECK {
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
           connect_port 80
 }
}
}

[root@5 keepalived]# systemctl restart keepalived

[root@5 keepalived]# ip add

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:8b:73:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.5/24 brd 192.168.1.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.1.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::f65:8c5a:42bc:7204/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

 

1.6配置:

[root@6 ~]# yum -y install keepalived ipvsadm

[root@6 ~]# cd /etc/keepalived/

[root@6 keepalived]# cp keepalived.conf keepalived.conf.bak

[root@6 keepalived]# vim keepalived.conf

 

! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id LVS2
#  vrrp_skip_check_adv_addr
#  vrrp_strict
#  vrrp_garp_interval 0
#  vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100
    }
}
virtual_server 192.168.1.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
!    persistence_timeout 50
    protocol TCP

    real_server 192.168.1.7 80 {
        weight 1
TCP_CHECK {
           connect_timeout 3
           nb_get_retry 3
           delay_before_retry 3
           connect_port 80
 }
} real_server 192.168.1.8 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80
} } }

[root@6 keepalived]# systemctl restart keepalived

测试:

[root@6 keepalived]# ip add (可以看到BACKUP节点没有vip)

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:8b:39:cd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.6/24 brd 192.168.1.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::da4c:d4e1:a3de:ee91/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

 

[root@5 keepalived]# systemctl stop keepalived (停止掉master)

[root@6 keepalived]# ip add  (打红部分可以看到VIP出来了)

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:8b:39:cd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.6/24 brd 192.168.1.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.1.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::da4c:d4e1:a3de:ee91/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

测试成功。

当master恢复时,vip会再次回到master

1.7配置(1.8也差不多。就改了echo那个1.7变1.8):

[root@7 ~]# echo "<h1>我是1.7</h1>" > /var/www/html/index.html

[root@7 ~]# systemctl restart httpd

[root@7 ~]# vim vip.sh

#!/bin/bash
#description:start relserver
VIP=192.168.1.100
source /etc/init.d/functions                #加载环境变量(可以加载所有的环境变量)
case $1 in
start)
        echo start LVS of Realserver DR
        /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
        /sbin/route add -host $VIP dev lo:0
        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
        ;;
stop)
        /sbin/ifconfig lo:0 down
        echo Close LVS of Realserver DR
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        ;;
*)
        echo "Usage:$0 (start|stop)"
exit 1
esac

[root@7 ~]# sh vip.sh start

 测试:

[root@6 keepalived]# ipvsadm -Ln

Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.100:80 rr
  -> 192.168.1.7:80               Route   1      0          0         
  -> 192.168.1.8:80               Route   1      0          0    

技术分享图片

 

技术分享图片

 

lvs+keepalived+apache

原文:https://www.cnblogs.com/meml/p/12686851.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!