LVS+keepalived

1 篇文章 0 订阅
1 篇文章 0 订阅

基本概念

LVS

LVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目的是使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,目前主要有三种负载均衡方式:NAT、TUN和DR。本文以DR方式来简单了解其构建过程,结构图参考如下:

Keepalived

Keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层、第4层和第7层交换。主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。

基础环境部署

包含四台服务器,两台RealServer、两台LVS(MASTER、BACKUP)

1、环境简介

操作系统:CentOS 7

Keepalived版本:Keepalived-1.2.13

ipvsadm版本:1.27

2、服务器地址

VIP:192.168.0.100

DR1:192.168.0.101

DR2:192.168.0.102

RS1:192.168.0.103

RS2:192.168.0.104

3、关闭防火墙(所有服务器)

systemctl stop firewalld.service

RealServer部署

RS1服务器部署

1、在 /etc/init.d 目录下创建realserver服务,代码如下:

#!/bin/bash

VIP=192.168.0.100
/etc/rc.d/init.d/functions
case "$1" in
start)
        ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
        /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
        echo "RealServer Start OK"
        ;;
stop)
        ifconfig lo:0 down
        /sbin/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 Stoped"
        ;;
*)
        echo "Usage:$0 {start|stop}"
        exit 1
esac
exit 0

注:由于脚本中使用到 ifconfig 命令,但Centos7默认没有安装,可以通过 yum -y install net-tools

2、运行realserver服务

#添加执行权限
chmod 755 /etc/init.d/realserver
#运行服务
service realserver start

3、部署httpd

#安装 httpd
 yum -y install httpd
#启动httpd服务
service start httpd
#生成测试页面
echo "From RealServer1 192.168.0.103" >/var/www/html/index.html

RS2服务器生成测试页面改成:

echo "From RealServer2 192.168.0.104" >/var/www/html/index.html


部署完毕,在本地主机访问 http://192.168.0.103,查看输出结果是否正确。

LVS部署

DR1部署

1、部署ipvsadm

#安装ipvsadm

yum -y install ipvsadm

<pre class="plain" name="code">#测试是否安装成功
ipvsadm -ln
#出现以下内容代表安装成功

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn


 
 
2、部署Keepalived

#安装keepalived
 yum -y install keepalived
#测试是否安装成功
keepalived -v
#出现以下内容表示成功
Keepalived v1.2.13 (03/06,2015)
#配置keepalived
#打开配置文件
 vi /etc/keepalived/keepalived.conf

<pre class="plain" name="code">! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL  #设置LVS的id,在一个网络内应该是唯一的
}

vrrp_instance VI_1 {
    state MASTER        #指定Keepalived的角色:MASTER、BACKUP
    interface eth0
    virtual_router_id 51
    priority 100        #定义使用优先级,越大级别越高,MASTER必须大于BACKUP
    advert_int 1        #设置MARSTER、BACKUP检查间隔,单位是秒
    authentication {
        auth_type PASS  #设置验证类型,主要有PASS和AH两种
        auth_pass 1111  #验证密码
    }
    virtual_ipaddress {
        192.168.0.100   #设置DR的VIP,可多设,每行一个
    }
}

virtual_server 192.168.0.100 80 {
    delay_loop 2                #设置健康检查时间,单位是秒
    lb_algo wrr                 #设置负载算法
    lb_kind DR                  #设置LVS实现LB机制,有NAT、TUN和DR三种
    persistence_timeout 10      #会话保持时间,单位是秒
    protocol TCP                #指定转发协议类型、有TCP和UDP

    real_server 192.168.0.103 80 {
        weight 3                #配置节点权值,数字越大权值越高
        TCP_CHECK {
            connect_timeout 3   #设置连接超时时间
            nb_get_retry 3      #设置重试次数
            delay_before_retry 1#设置重试间隔
            connect_port 80     #设置端口号
        }
    }

    real_server 192.168.0.104 80 {
        weight 3
        TCP_CHECK {
            connect_timeout 1
            nb_get_retry 1
            delay_before_retry 1
            connect_port 80
        }
    }
}


 
 


#重启keepalived服务
service keepalived restart

#查看ipvs结果
ipvsadm -ln
#显示结果
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.100:80 wrr persistent 10
  -> 192.168.0.103:80             Route   3      0          0
  -> 192.168.0.104:80             Route   3      0          0
<pre class="plain" name="code">#开启IPV4的转发功能
 echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf
 
 


DR2部署

将配置文件中 state 改为BACKUP,priority 改为90

测试

负载均衡测试

1、本机上输入:http://192.168.0.100 ,查看输出结果:From RealServer2 192.168.0.104 ;

2、隔两分钟左右,刷新一下,查看结果:From RealServer1 192.168.0.103

高可用性测试

目前状态为MASTER ,停止DR1上的keepalived服务

service keepalived stop

刷新访问页面,出现结果:From RealServer2 192.168.0.104

故障发生转移,BACKUP接管,页面访问正常,出现结果:From RealServer2 192.168.0.104






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值