博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集
阅读量:6942 次
发布时间:2019-06-27

本文共 6611 字,大约阅读时间需要 22 分钟。

  • 实现LVS的DR模式

    LVS的DR模式的原理详细介绍请看这篇博文。

    一. 实验环境

三台机器:

  • Director节点: (ens33 192.168.10.53 vip ens33:0 192.168.10.80)

  • Real server1: (ens33 192.168.10.51 vip lo:0 192.168.10.80)

  • Real server2: (ens33 192.168.10.52 vip lo:0 192.168.10.80)

二. 安装和配置

1. 配置两个real server服务器

(1) 配置虚拟IP地址(VIP)

VIP地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器Director监听并分发)。因此使用虚接口lo:0来承载VIP地址。

cd /etc/sysconfig/network-scripts/cp ifcfg-lo ifcfg-lo:0vim ifcfg-lo:0 DEVICE=lo:0 IPADDR=192.168.10.80 NETMASK=255.255.255.255   #子网掩码必须全为1 ONBOOT=yes 1ifup lo:0     #开启虚拟接口

LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集

(2)安装httpd,创建测试网页

#安装httpdyum install httpd -y
#real server1创建测试网页echo "Server 192.168.10.51" > /var/www/html/index.html#real server2创建测试网页echo "Server 192.168.10.52" > /var/www/html/index.html

(3)启动httpd服务,关闭防火墙和安全性策略

#启动httpd服务systemctl start httpd.service systemctl enable httpd.service
#关闭防火墙和安全性策略systemctl stop  firewalld.service systemctl disable firewalld.servicesetenforce 0

(4)在两台real server上配置启动脚本

vim /etc/init.d/rs.sh  #!/bin/bash  VIP=192.168.10.80        case "$1" in        start)                ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP                /sbin/route add -host $VIP 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                sysctl -p >/dev/null 2>&1                echo "RealServer Start OK "                ;;        stop)                ifconfig lo:0 down                route del $VIP /dev/null 2>&1                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore                echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce                echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore                echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce                echo "RealServer Stopd"                ;;        *)                echo "Usage: $0 {start|stop}"                exit 1        esac        exit 0

这里需要注意的是避免ARP通信紊乱,解决方案是:修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。

  • arp_ignore=1表示系统只响应目的IP为本地IP的ARP请求。

  • arp_announce=2表示系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。
    (5)运行启动脚本
    chmod +x rs.shservice rs.sh start

    最后在本机上自测访问网站服务

    LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集
    LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集

    2. 配置Director server服务器

    (1)配置虚拟IP地址,以便响应群集访问

    cd /etc/sysconfig/network-scripts/cp ifcfg-ens33 ifcfg-ens33:0vim ifcfg-ens33:0DEVICE=ens33:0ONBOOT=yesIPADDR=192.168.10.80NETMASK=255.255.255.0ifup ens33:0

    LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集

    (2)安装ipvsadm管理工具

    yum install ipvsadm -y

    (3)开启路由功能

    vim /etc/sysctl.confnet.ipv4.ip_forward=1sysctl -p     #保存

    (4)调整/proc响应参数,关闭Linux内核重定向参数响应

    vim /etc/sysctl.confnet.ipv4.conf.all.send_redirects = 0  net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0sysctl -p #保存

    (5)配置Director启动脚本

    vim /etc/init.d/dr.sh#!/bin/bashGW=192.168.10.1VIP=192.168.10.80RIP1=192.168.10.51RIP2=192.168.10.52case "$1" in    start)    /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm    systemctl start ipvsadm    /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up    /sbin/route add -host $VIP dev ens33:0    /sbin/ipvsadm -A -t $VIP:80 -s rr    /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g    /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g    echo "ipvsadm starting --------------------[ok]"    ;;    stop)    /sbin/ipvsadm -C    systemctl stop ipvsadm    ifconfig ens33:0 down    route del $VIP    echo "ipvsamd stoped----------------------[ok]"     ;;    status)    if [ ! -e /var/lock/subsys/ipvsadm ];then    echo "ipvsadm stoped---------------"    exit 1            else            echo "ipvsamd Runing ---------[ok]"    fi    ;;    *)    echo "Usage: $0 {start|stop|status}"    exit 1esacexit 0

    (6)启动脚本,添加两个Real Server节点服务器

    chmod +x /etc/init.d/dr.shservice dr.sh start

    (7)关闭防火墙和安全策略

    systemctl stop firewalld.servicesystemctl disable firewalld.servicesetenforce 0

    三.测试LVS群集

    用Windows客户端直接访问http://192.168.10.80/, 将能够看到由真实服务器提供的网页内容。

第一次访问:

LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集
Real Server连接次数查看:
LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集

刷新一次:

LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集

Real Server连接次数查看:

LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集


  • LVS结合keepalive

1.高可用群集(High Availability Cluster):以提高应用系统的可靠性、尽可能的减少中断时间为目标,确保服务的连续性,达到高可用(HA)容错效果。

2.LVS可以实现负载均衡,但是不能够故障切换和健康检查,也就是当一个rs服务器出现故障时,LVS仍然会把请求转发给故障的rs服务器,这样就会导致请求无效。keepalive软件可以解决 LVS 单点故障的问题,能同时实现 LVS 的高可用性。这里以LVS-DR模式为例。

一.实验环境

上述的LVS-DR搭建好web群集后,再添加一台备用的Director Server服务器,其配置同上。

四台机器:

  • Keepalived1 + lvs1(Director1):192.168.10.53 (主)
  • Keepalived2 + lvs2(Director2):192.168.10.54 (从)
  • Real server1:192.168.10.51
  • Real server2:192.168.10.52
  • VIP: 192.168.10.80

二.安装配置

在两个Director Server 节点服务器部署keepalived服务。

(1)安装keepalive软件

yum install keepalived -y

(2)主keepalived节点配置(lvs1)

#主节点( MASTER )配置文件vim /etc/keepalived/keepalived.conf global_defs {  ...    #省略部分  smtp_server 127.0.0.1           #指向本地  router_id LVS_01               #指定名称,备份服务器不同名称  ...    #省略部分          } vrrp_instance VI_1 {        #定义VRRP热备实例    state MASTER            #MASTER表示主调度器    interface ens33         #承载VIP地址的物理接口    virtual_router_id 51    #虚拟路由器的ID号,每个热备组保持一致    priority 100            #主调度器优先级    advert_int 1            #通告间隔秒数    authentication {        #认证信息        auth_type PASS      #认证类型        auth_pass 1111      #字码密串    }    virtual_ipaddress {     #指定群集VIP地址,也就是漂移地址        192.168.10.80    }}virtual_server 192.168.10.80 80 {  #虚拟服务器VIP地址    delay_loop 6                   #健康检查的间隔时间    lb_algo rr                     #轮询rr的调度算法    lb_kind DR                     #直接路由工作模式    persistence_timeout 0          #连接保持时间    protocol TCP                   #应用服务采用的是TCP协议    real_server 192.168.10.51 80 {                          #第一个web节点的服务器地址、端口        weight 1        TCP_CHECK {            connect_timeout 10            nb_get_retry 3            delay_before_retry 3            connect_port 80               }    }    real_server 192.168.10.52 80 {                         #第二个web节点的服务器地址、端口 router_id LVS_01         weight 1        TCP_CHECK {            connect_timeout 10            nb_get_retry 3            delay_before_retry 3            connect_port 80        }    }}

(3)从keepalived节点配置(lvs2)

拷贝主节点的配置文件keepalived.conf,然后修改如下内容:

router_id LV ->  router_id LVS_02 #从调度器名称state MASTER -> state BACKUP  #从调度器priority 100 -> priority 90   #从调度器优先级

(4)启动keepalive

#先主后从分别启动keepalivesystemctl start keepalived

三.测试 keepalived 的HA特性

(1)虚拟IP地址漂移

首先在master(lvs1)上执行命令 ip addr ,可以看到vip在master节点上的;

LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集
这时如果在master上执行 systemctl stop keepalived 命令,这时vip已经不在master上,在slave节点上执行 ip addr 命令可以看到 vip 已经正确漂到slave节点。
LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集
这时客户端去访问 访问依然正常。
LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集

(2)连通性

在客户机执行“ping 192.168.10.80 -t”,能够正常ping通。

禁用master(lvs1)的ens33网卡,发现还是能正常ping通。
LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集
LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集

(3)web访问测试

禁用master(lvs1)的ens33网卡,再次访问上述web服务,网页文档显示正常。

LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集
LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集
LVS负载均衡之三:LVS-DR搭建web群集、LVS结合Keepalived搭建高可用web群集

转载于:https://blog.51cto.com/11134648/2133893

你可能感兴趣的文章
2014华为机试——两个城市之间的最多路径
查看>>
[LintCode] 两个排序数组的中位数
查看>>
Linux c 学习第一天
查看>>
sql server显示某一列中有重复值的行
查看>>
dtoj#4138. 染色(ranse)
查看>>
隔离级别
查看>>
数组字典转为json
查看>>
Web容器启动中执行某个Java类
查看>>
Datastage里Aggregator的一些注意事项
查看>>
Eclipse中Maven插件部分常用功能命令介绍
查看>>
云风:我所偏爱的C语言面向对象编程范式
查看>>
IIS与Apache共用80端口
查看>>
VA助手(Visual Assist X) 笔记
查看>>
COCI2015/2016 CONTEST#4 简易题解
查看>>
测试管理工具实践Mantis-使用说明及不同环境下的安装
查看>>
小团队如何提高工作效率
查看>>
杭电 1045 Fire Net
查看>>
高效开发Android App的10个建议
查看>>
fiddler Android下https抓包全攻略
查看>>
让多个Fragment 切换时不重新实例化
查看>>