LVS(linux虚拟机服务器集群系统)DR模式+keepalive实现高可用

1.keepalive是什么

中文名为存活检测机制,顾名思义,就是用来检测群组服务器中有没有服务器停止工作了,具有防止单点故障的功能

主要可以实现loadbalancing(负载均衡)和 high-availability(高可用)功能

负载均衡需要配合DR模式,keepalive就是基于vrrp协议协议而实现高可用的

采用多进程的设计模式,每个进程负责不同的功能

2.vrrp协议

概念:在节点(主机)出现故障时,实现ip地址的切换。
keepalive就是基于此协议而实现高可用的。

Failover:故障切换,即某资源的主节点故障时,将资源转移至其它节点的操作;
Failback:故障移回,即某资源的主节点故障后重新修改上线后,将转移至其它节点的资源重新切回的过程;

3.配置keepalive

1)server1

首先配置yum源,将其中的内核软件加入yum源中

vim /etc/yum.repos.d/rhel-source.repo            ##添加以下内容

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.1.254/rhel6.5/HighAvailability
enabled=1
gpgcheck=1

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.1.254/rhel6.5/LoadBalancer
enabled=1
gpgcheck=1

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.1.254/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=1

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.1.254/rhel6.5/ResilientStorage
enabled=1
gpgcheck=1

然后需要编译keepalive的源码包,我这里是通过ftp方式传到的虚拟机

tar zxf keepalived-2.0.6.tar.gz
cd keepalived-2.0.6

在进行编译之前,我们需要进行安装keepalive的依赖包

yum install openssl-devel -y
yum install gcc -y

 然后进行编译

./configure --prefix=/usr/local/keepalived --with-init=SYSV
make && make install

 接下来赋予脚本可执行权限

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived 

 制作keepalived软连接

ip addr del 172.25.1.100/24 dev eth0                ##删除虚拟ip
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin

 最重要的一步,修改keepalive的配置文件

vim /etc/keepalived/keepalived.conf    修改为如下内容

! Configuration File for keepalived
## 全局配置
global_defs {          ##全局定义块
   notification_email {     ##邮件通知
   root@localhost   
}
   #设置邮件的发送地址
   notification_email_from keepalived@localhost 
   smtp_server 127.0.01           #设置 smtp server 地址
   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
}

## VRRPD配置
vrrp_instance VI_1 {
    state MASTER    #备机改为 BACKUP,此状态是由 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      
    }
    ##指定漂移地址(VIP),即切换到MASTER时,这些IP会被添加,切换到BACKUP时,这些IP会被删除(传给ip addr命令),所以每台服务器可以不用绑定任何的虚拟地址。
    virtual_ipaddress {
    	172.25.1.100      
    }
}

## 虚拟服务配置
virtual_server 172.25.1.100 80 {   #定义虚拟服务器
    delay_loop 6       #定义虚拟服务器
    lb_algo rr        #lvs 调度算法,这里使用轮叫
    lb_kind DR        #LVS 是用 DR 模式
    #persistence_timeout 50         #注释掉
    protocol TCP     #指定转发协议类型,有 tcp 和 udp 两种

    real_server 172.25.1.2 80 {    #配置服务节点
        weight 1      ##默认为1,0为失效
	TCP_CHECK{       ##TCP方式的健康检查,realserve 的状态检测设置部分,单位是秒
            connect_timeout 3     #10 秒无响应超时
            retry 3               #重试次数
            delay_before_retry 3    #重试间隔
        }
    }
    
    real_server 172.25.1.3 80 {
        weight 1
	TCP_CHECK{
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

将配置好的所有文件发给备用机server4

scp -r /usr/local/keepalived [email protected]:/usr/local

2)server4

首先配置yum源,将其中的内核软件加入yum源中

vim /etc/yum.repos.d/rhel-source.repo            ##添加以下内容

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.1.254/rhel6.5/HighAvailability
enabled=1
gpgcheck=1

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.1.254/rhel6.5/LoadBalancer
enabled=1
gpgcheck=1

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.1.254/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=1

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.1.254/rhel6.5/ResilientStorage
enabled=1
gpgcheck=1

 修改keepalive配置

vim /usr/local/keepalived/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP      ##修改地方1
    interface eth0
    virtual_router_id 19
    priority 50       ##修改地方2
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    	172.25.1.100
	}
}

virtual_server 172.25.1.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP

    real_server 172.25.1.2 80 {
        TCP_CHECK {
	weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.1.3 80 {
     	TCP_CHECK {
	   weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
 	}
    }

}

作跟servre1一样的软连接

ip addr del 172.25.1.100/24 dev eth0                ##删除虚拟ip
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin

3.测试

1)高可用

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived         ##server1和server4都加权限
/etc/init.d/keepalived start                                      ##server和server4都开启keepalive服务

开启服务以后会自动分配ip地址,以下是server1

我们这里将server的keepalive服务关闭,就会发现keepalive服务自动漂移到了server4,如下图

2)高可用下的健康检查

当realserver即server2和server3都正常的时候

当其中server2坏掉的时候

当两台都坏掉的时候

ok~

猜你喜欢

转载自blog.csdn.net/weixin_40543283/article/details/87830894