LVS的DR模式+Keepalived(高可用)

1.基本概念

1.keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。
2.Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
3.作用主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。
4.高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选 可不选)
5.注意的点
1.如果客户端和用户直接连接的话,会出现很多问题,例如网络,存储,访问
2.如果服务器压力很大:解决方法是先访问缓存,再访问负载均衡
3.搜索服务器:专门用来接受搜索的请求的,一般来说存储都比较高效
4.对于用户来说,等待的时间都是查询的时间
5.节耦的用处:为了避免某一个节点坏了,所有都坏
6.redhat 6.5和6的启动方式都使用了IPVS的架构
7.SNMP是简单网络管理协议
8.在高可用的目录下bin脚本,etc是配置文件,sbin下是一个编译好的二进制文件
9.在做项目的时候注意网卡接口的名称
10.优先级 也即权重

2.实验

实验环境:

主机 ip 服务
server1 172.25.66.1 LVS ACTIVE(主)
server4 172.25.66.4 LVS BACKUP(备)
VIP 172.25.66.100 LVS VIP
server2 172.25.66.2 Realserver1
server3 172.25.66.3 Realserver2

LVS ACTIVE(主) 172.25.66.1
LVS BACKUP(备) 172.25.66.4
LVS VIP 172.25.66.100
Realserver1 172.25.66.2
Realserver2 172.25.66.3
前提:
首先建立一个快照,名称为vm4,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.配置
<1>配置高级yum源

[root@server1 ~]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# vim rhel-source.repo 

在这里插入图片描述
配置文件中的内容如下:
在这里插入图片描述
<2>将keepalived包进行解压并进入keepalived-2.0.6目录

[root@server1 yum.repos.d]# cd
[root@server1 ~]# ls
[root@server1 ~]# tar zxf keepalived-2.0.6.tar.gz 
[root@server1 ~]# ls
[root@server1 ~]# cd keepalived-2.0.6

在这里插入图片描述
<3>在keepalived-2.0.6目录下安装keepalived的依赖包:openssl-devel,gcc

[root@server1 keepalived-2.0.6]# yum install openssl-devel -y
[root@server1 keepalived-2.0.6]# yum install gcc -y

在这里插入图片描述
在这里插入图片描述
<4>编译keepalived的源码包

[root@server1 keepalived-2.0.6]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV
[root@server1 keepalived-2.0.6]# make && make install

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:
编译时要注意要在keepalived-2.0.6目录下

补充:
如果出现以下情况,说明没有安装gcc

在这里插入图片描述
<5>给脚本可执行权限

    [root@server1 keepalived-2.0.6]# cd /usr/local/keepalived/etc/rc.d/init.d/
    [root@server1 init.d]# ls
    [root@server1 init.d]# chmod +x keepalived 

在这里插入图片描述
<6>制作软链接为了keepalived的管理与设置

[root@server1 init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d
[root@server1 init.d]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
[root@server1 init.d]# ln -s /usr/local/keepalived/etc/keepalived/ /etc
[root@server1 init.d]# ln -s /usr/local/keepalived/sbin/keepalived /sbin

在这里插入图片描述
<7>在server1中修改文件中的配置

[root@server1 init.d]# cd /etc/keepalived/
[root@server1 keepalived]# ls
[root@server1 keepalived]# vim keepalived.conf 

在这里插入图片描述
配置内容如下:

! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost  #接收警报的email地址,可以添加多个
}
   notification_email_from keepalived@localhost #设置邮件的发送地址
   smtp_server 127.0.0.1        #设置smtp swrver地址
   smtp_connect_timeout 30      #设置连接smtp服务器超时时间
   router_id LVS_DEVEL  #load balancer的标识ID,用于email警报
   vrrp_skip_check_adv_addr
 #  vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER        #备机改成BACPUP,此状态是由priority的值来决定的,当前priority的值小于备>机的值,那么将会失去MASTER状态
    interface eth0      #HA监测网络接口
    virtual_router_id 51        #主,备机的virtual_router_id 必须相同,取值0-255
    priority 100        #主机的优先级,备份机改为50,主机优先级一定要大于备机
    advert_int 1        #主备之间的通告间隔秒数
    authentication {    #主备切换时的验证
        auth_type PASS  #设置验证类型,主要有PASS和AH两种
        auth_pass 1111  #设置验证密码,在一个vrrp_instance下,MASTER与BACPUP必须使用相同的密码才
能正常通信
    }
    virtual_ipaddress { #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
        172.25.66.100
    }
}

virtual_server 172.25.66.100 80 {       #定义虚拟服务器
    delay_loop 6        #每隔6秒查询realserver状态
    lb_algo rr  #lvs调度算法,这里使用轮叫
    lb_kind DR  #lvs是用DR模式
   # persistence_timeout 50      #会话保持时间,单位是秒,这个选项对于动态网页是非常有
#用的,为集群系统中 session 共享提供了一个很好的解决方案。有了这个会话保持功能,用户的
#请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保
#持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在 50 秒内没有执行任
#何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受 50 秒
#的时间限制。
    protocol TCP        #指定转发协议类型,有tcp和udp两种
         real_server 172.25.66.2 80 {   #配置服务节点
        weight 1        #配置服务节点的权值,权值大小用数字表示,数字越大,权
#值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设
#置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统资源
        TCP_CHECK{      #realserve的状态检测设置部分,单位是秒
            connect_timeout 3   #10s无响应超时
            retry 3     #重试次数
            delay_before_retry 3        #重试间隔
        }
    }

    real_server 172.25.66.3 80 {
        weight 1
        TCP_CHECK{
            connect_timeout 3
            retry 3
                delay_before_retry 3
        }
   }
}

在这里插入图片描述
在这里插入图片描述
<8>将配置号的文件发送给备机(server4),并做修改

[root@server1 keepalived]# cd /usr/local
[root@server1 local]# scp -r keepalived [email protected]:/usr/local
[root@server4 ~]# cd /usr/local/keepalived/etc/keepalived/
[root@server4 keepalived]# ls
[root@server4 keepalived]# vim keepalived.conf 

在这里插入图片描述
在这里插入图片描述
配置内容如下:

state BACKUP        #备机改成BACPUP,此状态是由priority的值来决定的,当前priority的值小于备机的值,那么将会失去MASTER状态
    priority 50   #主机的优先级,备份机改为50,主机优先级一定要大于备机 

在这里插入图片描述
<9>在server4中同样做软链接

[root@server4 keepalived]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d
[root@server4 keepalived]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig
[root@server4 keepalived]# ln -s /usr/local/keepalived/etc/keepalived/ /etc
[root@server4 keepalived]# ln -s /usr/local/keepalived/sbin/keepalived /sbin

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
<10>在server1和server4中都重启服务
在server1中重启服务(如果重启没有成功,说明之前没有开启那个服务)

[root@server1 local]# /etc/init.d/keepalived restart
[root@server1 local]# /etc/init.d/keepalived start
[root@server1 local]# /etc/init.d/keepalived restart

在这里插入图片描述
在server4中重启服务(如果重启没有成功,说明之前没有开启那个服务)

[root@server4 keepalived]# /etc/init.d/keepalived restart
[root@server4 keepalived]# /etc/init.d/keepalived start
[root@server4 keepalived]# /etc/init.d/keepalived restart

在这里插入图片描述
2.测试
(1)测试vip是否发生了漂移(要等差不多10s)
<1>开启服务后,会发现自动分配vip地址(172.25.66.100)
在这里插入图片描述
<2>将server1(主机)的keepalived服务关闭,则vip地址会漂移到server4(备机)
在这里插入图片描述
在这里插入图片描述
<3>再次在server1中将服务开启,会发现vip地址又会漂移回去,而server4中便没有vip地址了
在这里插入图片描述
在这里插入图片描述
(2)测试健康检查
<1>测试当没有服务宕机时,在物理机中测试的结果,发现测试页轮叫输出(注意:要开启server2和server3的apache服务,并关闭健康检查)
开启apache服务:

[root@server2 ~]#  /etc/init.d/httpd start
[root@server3 ~]# /etc/init.d/httpd start
[root@server1 html]# /etc/init.d/ldirectord stop

在物理机上测试:

[root@foundation66 images]# curl 172.25.66.100
[root@foundation66 images]# curl 172.25.66.100
[root@foundation66 images]# curl 172.25.66.100
[root@foundation66 images]# curl 172.25.66.100

在这里插入图片描述
<2>当将server3的apache关闭后,再次测试,发现只正常输出server2的测试页
关闭apache服务:

[root@server3 ~]# /etc/init.d/httpd stop

在物理机上测试:

[root@foundation66 ~]# curl 172.25.66.100
[root@foundation66 ~]# curl 172.25.66.100
[root@foundation66 ~]# curl 172.25.66.100
[root@foundation66 ~]# curl 172.25.66.100

在这里插入图片描述
<3>当再将server2的apache关闭后,再次测试,发现无法正常输出(要关闭ldirectord,因为此处的检查与ldirectord健康检查没有关系)
关闭apache服务:

[root@server2 ~]#  /etc/init.d/httpd stop

在物理机上测试:

[root@foundation66 images]# curl 172.25.66.100
[root@foundation66 images]# curl 172.25.66.100
[root@foundation66 images]# curl 172.25.66.100
[root@foundation66 images]# curl 172.25.66.100

在这里插入图片描述
(静文小姐姐,我也想你,我们明天去吃拔丝地瓜,会给你拍照片的)

猜你喜欢

转载自blog.csdn.net/qq_39376481/article/details/89387967