KEEPALIVED的高可用实现

目录

一.高可用集群 

1.1 集群类型 

Keepalived 环境准备

1.2Keepalived 相关文件

1.3实验步骤

1.3.1HTTP配置

1.3.2安装KA

1.3.3实现master/slave的 Keepalived 单主架构

1.3.4抢占模式和非抢占模式

非抢占模式

抢占模式

抢占延迟模式 preempt_delay

1.3.5开启KA的日志功能

1.3.6独立子配置文件

1.3.7 VIP单播配置

1.3.8邮件服务器

编写邮件

编写脚本

1.3.9keepalived双主架构

1.3.10实现IPVS的高可用性

1.3.11Haproxy高可用


一.高可用集群 


1.1 集群类型 

LB:Load Balance 负载均衡
LVS/HAProxy/nginx(http/upstream, stream/upstream)
HA:High Availability 高可用集群
数据库、Redis
SPoF: Single Point of Failure,解决单点故障
HPC:High Performance Computing 高性能集群

Keepalived 环境准备

各节点时间必须同步:ntp, chrony

关闭防火墙及SELinux

4台rh7

vip 100

2台KA 110 120

两台 webserver 10 20

KA1172.25.250.110
KA2172.25.250.120
webserver1172.25.250.10
webserver2172.25.250.20

1.2Keepalived 相关文件

软件包名:keepalived 
主程序文件:/usr/sbin/keepalived
主配置文件:/etc/keepalived/keepalived.conf
配置文件示例:/usr/share/doc/keepalived/
Unit File:/lib/systemd/system/keepalived.service
Unit File的环境配置文件:/etc/sysconfig/keepalived

RHEL7中可能会遇到以下bug

systemctl restart keepalived #新配置可能无法生效

systemctl stop keepalived;systemctl start keepalived #无法停止进程,需要 kill 停 止

1.3实验步骤

1.3.1HTTP配置

两个RS上下载httpd

yum install httpd

启动httpd

写入网页文件

rs1和rs2都要写

在KA上curl测试访问

1.3.2安装KA

KA1,KA2都要安装

1.3.3实现master/slave的 Keepalived 单主架构

配置文件

vim /etc/keepalived/keepalived.conf

KA1--MASTER

KA2--SLAVE

重启服务

进行抓包

tcpdump -i eth0 -nn host 224.0.0.18

一开始一直是10

因为KA2优先级低抢不过KA1

把10关闭就会变成20

停止10的ka服务

1.3.4抢占模式和非抢占模式

默认为抢占模式preempt,即当高优先级的主机恢复在线后,会抢占低先级的主机的master角色,

这样会使vip在KA主机中来回漂移,造成网络抖动

建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的master角色

非抢占模块下,如果原主机down机, VIP迁移至的新主机, 后续也发生down时,仍会将VIP迁移回原主机

注意:要关闭 VIP抢占,必须将各 keepalived 服务器state配置为BACKUP

即将所有ka服务器的虚拟路由器状态都改成BACKUP

以及添加nopreempt

非抢占模式

KA1

KA2

现在当KA1关闭后,vip移动给KA2后,KA1再重启也不会抢回vip

抢占模式

即有一个是master并且优先级最高

设置为抢占模式,当10重启就会直接抢夺vip

KA1

KA2

抢占延迟模式 preempt_delay

抢占延迟模式,即优先级高的主机恢复后,不会立即抢回VIP,而是延迟一段时间(默认300s)再抢回 VIP

preempt_delay

注意:需要各keepalived服务器state为BACKUP,并且不要启用 vrrp_strict

此处设置5s是为了方便查看结果

KA1和KA2都要设置这一项

1.3.5开启KA的日志功能

编辑日志配置文件并重启

1.3.6独立子配置文件

格式:

include /path/file

注释掉虚拟路由器

创建配置文件

写入注释掉的配置内容

然后重启服务

发现vip仍然存在

1.3.7 VIP单播配置

默认keepalived主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量

注意:启用 vrrp_strict 时,不能启用单播

格式

unicast_src_ip <IPADDR>  #指定发送单播的源IP
unicast_peer {
   <IPADDR>     #指定接收单播的对方目标主机IP
   ......
}

KA1

KA2

抓包查看

tcpdump -i eth0 -nn src host 172.25.250.20 and dst 172.25.250.10

要测20的要把10的keealive服务关掉

tcpdump -i eth0 -nn src host 172.25.250.20 and dst 172.25.250.10

1.3.8邮件服务器

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

 KA1和KA2上面这global_def部分是一样的,注意都要写

我们利用qq邮箱来实现

进入qq优先点击右上角的账号与安全

在安全设置里面

找到下面的授权码

然后编写配置文件

/etc/mail.rc


编写邮件

看自己的邮箱能否收到邮件

然后KA2主机也这样配置

编写脚本

KA1配置

重启服务

两边都要写脚本

然后给脚本权限

chmod +x mail.sh

1.3.9keepalived双主架构

master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却 很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。

master/master 的双主架构: 即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高 服务器资源利用率

两个vip对接一个服务

10上

额外设置一个vi_2虚拟路由

20上

20本来是backup 添加的虚拟路由v2就要设置成master

重启服务

记得优先级要进行改变,master的优先级都一样,backup的优先级也要一样

1.3.10实现IPVS的高可用性

110和120加

这个是vip的ip

然后禁止arp的响应,只进不出

然后120scp命令把文件复制过来再重启服务

KA1

ka2也这样做

KA1

vim /etc/keepalived/keepalived.conf 

KA2

重启服务

查看是否成功写入策略

在20上也能查看到策略只是没有生效,因为没有vip

另外开一台虚拟机进行测试

模拟故障,关闭110后

1.3.11Haproxy高可用

10 20下载haproxy

启用内核参数,两台都要做

这个作用是让本地没有写入的ip也能启用

编写haproxy配置文件

重启haproxy服务

110 120要删掉之前添加的环回ip以及打开arp响应

要注释掉keep的virt-server,也就是刚才ipvs中写的

编写脚本,杀死haproxy服务

ka1中

vim /etc/keepalived/keepalived.conf 
 

ka2

在测试机执行死循环

然后关闭一台KA的keepalived服务和haproxy服务,发现死循环还在执行

  • 25
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 HAProxy+Keepalived 高可用需要按照以下步骤进行: 1. 安装 HAProxy 和 Keepalived 在主服务器和备份服务器上安装 HAProxy 和 Keepalived。 2. 配置 HAProxy 编辑 HAProxy 配置文件,配置监听端口和后端服务器信息,并启用统计页面。例如: ``` global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon defaults log global mode http option httplog option dontlognull option forwardfor option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout check 10s listen webfarm bind 0.0.0.0:80 mode http stats enable stats uri /haproxy balance roundrobin option httpchk HEAD / HTTP/1.1\r\nHost:localhost server web1 192.168.0.1:80 check server web2 192.168.0.2:80 check ``` 3. 配置 Keepalived 编辑 Keepalived 配置文件,配置虚拟 IP 地址、HAProxy 的状态检测方式和状态转移时的优先级。例如: ``` vrrp_script chk_haproxy { script "killall -0 haproxy" interval 2 weight 2 } vrrp_instance VI_1 { interface eth0 state MASTER virtual_router_id 51 priority 101 virtual_ipaddress { 192.168.0.100/24 } track_script { chk_haproxy } } ``` 4. 启动 HAProxy 和 Keepalived 在两台服务器上分别启动 HAProxy 和 Keepalived。 5. 测试高可用 访问虚拟 IP 地址,检查是否能够正常访问,并手动切换主备服务器,检查是否能够自动切换。 注意:以上仅为简单示例,请根据实际情况进行配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值