keepalived

在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡,当有服务出现异常,也能够自动剔除。但是负载均衡服务自身也可能出现故障,因此需要引入其他的软件来实现负载均衡服务的高可用。本文就介绍了一种基于 LVS+Keepalived 的方式,来实现高可用 Web 集群。


前言

一、keepalived双机热备

(一)、概述

Keepalived 是一个基于 VRRP 协议来实现的 LVS 服务高可用方案,可以解决静态路由出现的单点故障问题。

1.原理

在一个 LVS 服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但
是对外表现为一个虚拟 IP,主服务器会发送 VRRP 通告信息给备份服务器,当备份服务器收不到 VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。

解决单点故障问题

2.功能模块


    core                主进程启动
        
    vrrp                vrrp协议:热备份路由协议
        
    check             健康状态检测

3.双机热备的脑裂现象


    Keepalived配置里同一 VRRP实例,如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。
    vrrp实例名字不一致、优先级一致
    防火墙打开,导致心跳无法正常通信
    网卡故障,网卡进行多路复用
        
      

案列

192.168.238.138

192.168.238.139(web)

192.168.238.140(web)

基础环境(防火墙配置、宽容模式、IP配置)

(二)、web配置

192.168.238.139(web)

yum install -y keepalived

yum install -y epel-release

yum install -y nignx

cd /etc/keepalived

vim keepalived.conf

 systemctl start keepalived

ip a 

keepalived_第1张图片

systemctl start nginx

192.168.238.140(web)

yum install -y keepalived

yum install -y epel-release

yum install -y nignx

cd /etc/keepalived

vim keepalived.conf

systemctl start keepalived

systemctl start nginx

192.168.238.138

创建个共享目录

mkdir /opt/kkk -p

vim /etc/exports

keepalived_第2张图片

systemclt start nfs

将web的访问目录挂载到共享目录上

showmount -e 192.168.238.138:/opt/kkk /usr/share/nginx/html

停掉master(139)        systemctl stop keepalived

查看backup(140)            ip a

keepalived_第3张图片

证明双击热备成功

 

(三)、测试

 在138上进行访问

keepalived_第4张图片

 cd /opt/kkk

echo HI > index.html

keepalived_第5张图片

 再将原master启动又恢复原master

二、keepalived+lvs(DR)

作用                使用keepalived解决lvs的单点故障,高可用集群。

案列

192.168.238.136(lvs备)

192.168.238.138(lvs)

192.168.238.139(web)

192.168.238.140(web)

(一)、调度器配置

192.168.238.138(lvs)

yum install -y epel-release

yum install -y ipvsadm

cd /etc/sysconfig/network-scripts

vim ifcfg-ens33:0

keepalived_第6张图片

keepalived_第7张图片

 

vim /etc/sysctl.conf中插入

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p
keepalived_第8张图片

modprobe ip_vs

systemctl start ipvsadm

ipvsadm -A -t 192.168.238.100:80 -s rr

ipvsadm -a -t 192.168.238.100:80 -r 192.168.238.139:80 -g

ipvsadm -a -t 192.168.238.100:80 -r 192.168.238.140:80 -g

ipvsadm-save > /etc/sysconfig/ipvsadm

ipvsadm -ln

keepalived_第9张图片

 yum install -y keepalived

vim /etc/keepalived/keepalived.conf

keepalived_第10张图片

keepalived_第11张图片 

 systemctl start keepalived

192.168.238.136(lvs备)

192.168.238.138(lvs)操作

除了keepalived文件和不需要创建ens33:0

keepalived_第12张图片

ip a 

keepalived_第13张图片

 

 

(二)、web节点配置

192.168.238.139(web)

cd /usr/share/nginx/html 

echo OK > index.html

vim /etc/sysctl.conf中插入

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce=2

sysctl -p
keepalived_第14张图片

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

keepalived_第15张图片

systemctl restart network

keepalived_第16张图片

route add -host 192.168.238.100/32 dev lo:0

keepalived_第17张图片

 192.168.238.140(web)139操作

除了访问文件

cd /usr/share/nginx/html 

echo HOW > index.html

 

(三)、测试

正常访问可以实现负载均衡

keepalived_第18张图片

keepalived_第19张图片 

 停掉138的keepalived

systemctl stop keepalived访问依然正常,136中 ip a 可以查看到虚拟IP,表面已实现双击热备和负载均衡

keepalived_第20张图片

 keepalived_第21张图片

keepalived_第22张图片 

 


 

总结

今天的双机备热比较简单,只需修改配置文件即可。keepalived+lvs要在LVS的DR工作模式之上,构建好DR后再创建备用LVS即可。理清思绪,保持头脑清醒,才能更快的将实验做通。

你可能感兴趣的:(linux,运维,服务器)