keepalived概念

keepalived是一个开源的虚拟路由冗余协议(VRRP)实现,它能够提供高可用性(HA)的解决方案。VRRP是一种网络协议,用于在多个路由器之间分配路由任务,以保证网络的可靠性。在服务器高可用性环境中,keepalived常用于实现负载均衡和故障切换。

一 双机技术

指由两台服务器运行某种同样的应用,为用户提供服务,当某一台出现问题时,用户的请求将由另一台服务器继续提供,从而实现高可用性。双机技术又被称为双机热备或双机容错

二 HA 的容错过程

1.自动检测

2.自动切换

3.自动恢复

三 HA 的三种工作方式

1.主从模式

2.双机双工

3.集群模式

四 keepalived

1.keepalived 基于 vrrp 协议来实现的

注:vrrp 协议,可以实现服务的切换

2.keepalived 启动后会有三个进程:

父进程: 内存管理,子进程管理等等

子进程: VRRP 子进程

子进程: healthchecker 子进程

注:healthchecker 子进程负责检查各主机间的主机状态,当发现某台主机上的服务不可用时,将通知 vrrp 子进程,由 vrrp 子进程来完成服务的切换

五 实验步骤

1.准备实验环境:client(192.168.1.3)与两台 apache 服务器处于同一网络段,两台 web服务器的 IP 地址为 192.168.1.1 和 192.168.1.2。在两台 web 服务器上创建好主页文件,配置httpd,使客户端能够访问。

2.在 server1 和 server2 上配置好/etc/hosts 文件,并安装 keepalived

 #yum install keepalived -y

3.在 server1 上配置

 编辑配置文件:vim /etc/keepalived/keepalived.conf

 内容如下:

global_defs {

 notification_email {

 root@localhost

 }

 notification_email_from root@localhost

 smtp_server 127.0.0.1

 smtp_connect_timeout 30

 router_id host-4

}

vrrp_instance VI_1 {

 state MASTER(设备状态)

 interface eno16777736(链接备服务器的网卡)

 virtual_router_id 51

 priority 100

 advert_int 1

 authentication {

 auth_type PASS

 auth_pass 1111

 }

 virtual_ipaddress {

 192.168.1.18(同一网段任意设置,此为VIP的IP)

 }

}

 在 server2 上配置

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

 更改设备 ID:host-5

 更改设备状态:BACKUP

 更改优先级:低于 MASTER 的优先级

4.在两台 keepalved/web 服务器上启动服务

 systemctl restart keepalived

5.在客户端测试

 elinks http://VIP(此为之前配置文件中设置的VIP的IP)

    显示的 server1 上的 test1 page。使 server1 宕机,再次访问 VIP,显示的是 server2 上的 test2 page。或者在 server1 上 systemctl stop keepalived,访问 VIP,显示的是 server2 上的 test page

注:如果是停掉 keepalived 服务,再次启动时,注意 IP 的子网掩码(可以通过 nmtui 中重新激活网卡解决)VIP 可以是一个不存在 IP 地址,但是该 IP 地址必须客户端可以访问

六 keepalived+lvs

1.网络拓扑

 五台虚拟机在同一网络段

               --->lvs1(192.168.0.1)-->web1(192.168.0.2)

 client(192.168.0.5)

               --->lvs2(192.168.0.3)-->web2(192.168.0.4)

2.安装软件

 client:yum install elinks -y

 lk1、lk2:yum install keepalived ipvsadm -y

 web1、web2:yum install httpd -y

3.在 lvs1、lvs2 上

 编辑 keepalived 配置文件:

#vim /etc/keepalived/keepalived.conf

Lvs1

Lvs2

 编辑 lvs-dr.sh 脚本:

#!/bin/bash

  ipvsadm -C

  ipvsadm -A -t 192.168.0.88:80 -s rr

  ipvsadm -a -t 192.168.0.88:80 -r 192.168.0.2:80 -g

  ipvsadm -a -t 192.168.0.88:80 -r 192.168.0.4:80 -g

注:两种配置文件都可以。

4.在 web1、web2 上

 配置 httpd

 编辑 web.sh 脚本:

#!/bin/bash

ifconfig lo:0 192.168.0.88 netmask 255.255.255.255 up

route add -host 192.168.0.88 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

5.在 lk1、lk2 上:systemctl restart keepalived

 bash lvs-dr.sh

 在 web1、web2 上:systemctl restart httpd

 bash web.sh

6.客户端测试:elinks http://192.168.0.254 可以看到 web1 和 web2 上的网页交替出现

将其中一台lvs关机。再用客户端测试还是可以看到web1和web2上的网页交替出现。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐