linux之构建Keepalived双机热备 构建LVS+HA高可用群集

构建Keepalived双机热备    构建LVS+HA高可用群集

 

结构

 

 

 

 

 

1.高可用集群HA

以提高应用系统的可靠性、尽可能减少终端宕机时间为目标,确保服务的连续性,达到高可用(HA)的容错效果,

例如“故障切换”“双击热备”“多机热备”等都属于高可用群集技术。

常用的HA软件:keepalived、heartbeat、corosync、cman

1.基本概念   单点故障(Single Point of Failure

 

 

 

 

2.检测方法

健康状态监测:检测服务器运行是否正常

监测方法  基于协议层次监测:

ping命令:icmp协议

传输层:nmap,nmap是一个网络连接端扫描软件,探测一组主机是否在线,也可扫描主机端口以判断某个服务是否在线

应用层:获取关键性资源,如进程与服务器的端口

状态判断:

下线   ok--->fail--->fail--->fail

上线   fail---->ok---->ok

 

3.高可用思路


为了实现高可用,需要配置VIP,提供同一个访问接口地址。

主节点出现故障,备节点必须第一时间将VIP抢占过来,备节点必须时刻监控主节点的健康状态。

若不是负载均衡调度器,还需考虑共享资源的安全转移,而不仅仅是VIP。

若主节点健康并恢复服务,备节点需要将VIP还给主节点。

主节点需要定时向备节点通知自己的健康状态,让备节点实时了解主节点健康状态。

主节点、备节点包括整个网络架构时间必须是精确同步,需要基于ntp服务进行同步时间。

 

2.keepalived概述及    LVS+HA实验  

关于keepalived
专为LVS和HA设计的一款健康检查工具

支持故障自动切换(Failover)

支持节点健康状态检查(Health Checking)

官方网站:http://www.keepalived.org/

1.)keepalived的热备方式

VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)

一主 + 多备,共用同一个VIP地址,但优先级不同

 

 

 

 

 

 

 

2.)两台服务端 安装keepalived和 httpd服务

yum -y install httpd                   挂载光盘安装HTTP的服务

配置 两台httpd网站服务  设置20网段    IP地址

主、备服务器:192.168.20.100         192.168.20.200

提供的应用服务:Web httpd服务

 

vim /etc/sysconfig/network-scripts/ifcfg-ens33 更改IP

cd /var/www/html/

vim  index.html 编写测试静态网页

 

 

 

 

 

 

3.)双机热备 安装keepalived服务  主服务器配置  漂移地址20.88

设置本地yum源 (可以使用yum方式进行安装,也可以使用编译安装,区别不大)

yum -y install keepalived

 

/etc/keepalived/keepalived.conf        keepalived主配置文件

/usr/sbin/keepalived                         keepalived主程序文件

/usr/lib/systemd/system/keepalived.service  相当于keepalived服务启停脚本

/usr/share/doc/keepalived-1.3.5/samples/  keepalived众多配置的模板

 

vi /etc/keepalived/keepalived.conf更改主配置文件 增加漂移地址

 

global_defs { ... }全局设置

vrrp_instance 实例名称 { ... }热备设置

 

 

主服务器配置

state设置本节点状态,MASTER、BACKUP

priority设置竞选优先级,数值越大优先级越高

virtual_ipaddress { ... }设置漂移IP地址

……

 

[root@localhost ~]# vi /etc/keepalived/keepalived.conf

global_defs {

    router_id LVS_MASTER    本服务器的名称

}

vrrp_instance VI_1 {      定义VRRP热备实例

    state MASTER      MASTER表示主服务器

    interface ens33      承载VIP地址的物理接口

    virtual_router_id 1      虚拟路由器的ID号

    priority 100      优先级,数值越大优先级越高

    advert_int 1      通告间隔秒数(心跳频率)

    authentication {    认证信息

        auth_type PASS      认证类型

        auth_pass 123456     密码字串    可保留默认1111

    }

    virtual_ipaddress {

      192.168.20.88       指定漂移地址(VIP)

    }

}

 

 

 


4.)备用服务器配置

可以从主服务端传过来

scp keepalived.conf root@192.168.20.200:/etc/keepalived/

 

 

 

 

 

router_id设为自有名称

state设为BACKUP

Priority值低于主服务器

—— 其余所有配置均与主服务器相同

 

vi /etc/keepalived/keepalived.conf

 

global_defs {

    router_id BACKUP      本服务器的名称

}

vrrp_instance VI_1 {

    state BACKUP     SLAVE表示从服务器

    interface ens33

    virtual_router_id 1

    priority 99      优先级,低于主服务器

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 123456

    }

    virtual_ipaddress {

     192.168.20.88/24

    }

}

 

 

 


5.)启用keepalidved服务  测试

主、备机中   均启用keepalived服务

其中优先级最高的设备将获得VIP的控制权

VIP地址会    keepalived自动设置
测试双机热备的效果

主、备机均启用Web服务,内容不相同

先后禁用、启用主服务器的keepalived,执行以下测试

测试1:使用ping检测192.168.20.88的连通性

测试2:访问http://192.168.20.88/,确认可用性及内容变化

测试3:查看日志文件/var/log/messages中的变化

 

 

 systemctl start keepalived              --会看到只有主服务器的网页

 

 

 

 

 

关闭主 服务    会漂移到备用服务器的网页

systemctl stop keepalived.service               --关闭主服务器的服务

 

 

 

 

 

查看日志  tail /var/log/messages

 

 

 

 

 tail -100 /var/log/messages  | grep -i master

 

 

 

 

3.LVS与keepalived的结合

 

负载均衡+高可用群集

针对LVS调度器实现双机热备

能够管理服务器池,自动隔离失效节点

 

从外网来请求  交给交换机  交给LVS调度器(主)  调度器根据算法交给web真实服务器

服务器收到请求 经过交换机给予客户端回复

如果主LVS调度器荡掉了  那么辅助服务器替代主服务器

当主LVS 修复好  辅助就会还给主LVS

 

主、从调度器配置要点

清除手动设置的ipvsadm策略

配置keepalived双机热备,并添加服务器池设置

 

[root@localhost ~]# service ipvsadm stop

ipvsadm: Clearing the current IPVS table:[确定]

ipvsadm: Unloading modules:[确定]

 

[root@localhost ~]#systemctl disable ipvsadm

 

1.)源码编译安装keepalived   主KEEP

modprobe ip_vs启动模块

yum -y install ipvsadm安装LVS

yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel安装编译软件

tar xzvf keepalived-2.0.18.tar.gz解压

cd keepalived-2.0.18

./configure --prefix=/ && make && make install到目录解压  指定目录

cd keepalived-2.0.18/

cp keepalived/etc/init.d/keepalived /etc/init.d/辅助keeplived启动服务

 

 

 

 

2.)修改keep主配置文件增加20.88漂移

cd /etc/keepalived/

cp keepalived.conf  keepalived.conf.bak

vi /etc/keepalived/keepalived.confkeep主配置文件

service keepalived start配置完成后启动服务

 

 

[root@localhost ~]# vi /etc/keepalived/keepalived.conf

……

virtual_server 192.168.20.88 80 {

    delay_loop 15健康检查间隔

    lb_algo rr使用轮询调度算法

    lb_kind DRDR模式的群集

    persistence 60连接保持时间

    protocol TCP

    real_server 192.168.20.100 80 {

        ……

    }

    real_server 192.168.20.200 80 {

        ……

    }

    ……

}

 

 

 

 

 

第一台服务器

real_server 192.168.20.100 80 {

        weight 1节点权重

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            retry 3

            delay_before_retry 3

        }

    }

……

第二台服务器

real_server 192.168.20.200 80 {

        weight 1节点权重

        TCP_CHECK {

            connect_port 80

            connect_timeout 3

            retry 3

            delay_before_retry 3

        }

    }

……

 

 

 

 

3.辅助KEEP 同上操作 修改主配置文件即可

scp keepalived.conf root@192.168.20.20:/etc/keepalived/    把主keep服务端 配置发给 辅

vim /etc/keepalived/keepalived.conf

 

 

 

 

 

修改router_idLVS_BACKUP

修改权重  priority   为低于主keep的

修改ip端口 即可

 

 

 

 

 

 

 

4.在所有RS服务器(httpd  web服务)上执行  关闭回环

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig lo:0 192.168.20.88 netmask 255.255.255.255 broadcast 192.168.20.88 up

route add -host 192.168.20.88 dev lo:0

 

 

 

 

 

 

5.LVS+HA群集的测试

访问 http://192.168.20.88/,正常显示Web页面

主、从调度器其中一台失效,站点访问及负载仍然正常

只要保持至少一个Web节点有效,整个站点依然可用

 

 

 

 

当节点状态异常时发送通知

notification_email:设置收信人地址

notification_email_from:设置发信人地址

smtp_server:指定SMTP发信服务器

smtp_connect_timeout:SMTP连接超时

 

 

 

 

 

 

keepalived的邮件通知

 

[root@localhost ~]# vi /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

     root@localhost.localdomain

   }

   notification_email_from TsengYia root@localhost.localdomain

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

 

   router_id LVS_HA_R1

}

……

[root@localhost ~]# service keepalived restart

 

 

 

  

posted @ 2020-08-01 21:19  浅唱I  阅读(651)  评论(0编辑  收藏  举报