淘先锋技术网

首页 1 2 3 4 5 6 7

在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 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 

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

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

证明双击热备成功

 

(三)、测试

 在138上进行访问

 cd /opt/kkk

echo HI > index.html

 再将原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

 

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

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

 yum install -y keepalived

vim /etc/keepalived/keepalived.conf

 

 systemctl start keepalived

192.168.238.136(lvs备)

192.168.238.138(lvs)操作

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

ip a 

 

 

(二)、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

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

systemctl restart network

route add -host 192.168.238.100/32 dev lo:0

 192.168.238.140(web)139操作

除了访问文件

cd /usr/share/nginx/html 

echo HOW > index.html

 

(三)、测试

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

 

 停掉138的keepalived

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

 

 

 


 

总结

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