文档章节

LVS+KEEPALIVED实现负载均高可用集群

eddy_linux
 eddy_linux
发布于 2015/11/05 03:01
字数 1568
阅读 45
收藏 0
点赞 0
评论 0

LVS+KEEPALIVED负载均衡高可用集群

通过命令检测kernel是否已经支持LVS的ipvs模块

[root@www ~]# modprobe -l|grep ipvs

kernel/net/netfilter/ipvs/ip_vs.ko

kernel/net/netfilter/ipvs/ip_vs_rr.ko

kernel/net/netfilter/ipvs/ip_vs_wrr.ko

kernel/net/netfilter/ipvs/ip_vs_lc.ko

kernel/net/netfilter/ipvs/ip_vs_wlc.ko

kernel/net/netfilter/ipvs/ip_vs_lblc.ko

kernel/net/netfilter/ipvs/ip_vs_lblcr.ko

kernel/net/netfilter/ipvs/ip_vs_dh.ko

kernel/net/netfilter/ipvs/ip_vs_sh.ko

kernel/net/netfilter/ipvs/ip_vs_sed.ko

kernel/net/netfilter/ipvs/ip_vs_nq.ko

kernel/net/netfilter/ipvs/ip_vs_ftp.ko

有蓝色的两项表明系统内核已经默认支持IPVS

下面就可以进行安装

两种方式

第一:源码包安装

Make

Make install

可能会出错

由于编译程序找不到对应的内核

解决:ln -s /usr/src/kernels/2.6.32-279.el6.x86_64/ /usr/src/linux

第二种:

Rpm包安装

红帽的LoadBalancer是有这个包的

[root@www ~]# yum list |grep ipvs

ipvsadm.x86_64                      1.25-10.el6                 LoadBalancer

 

[root@www ~]# yum install ipvsadm.x86_64

Loaded plugins: product-id, subscription-manager

Updating certificate-based repositories.

Unable to read consumer identity

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package ipvsadm.x86_64 0:1.25-10.el6 will be installed

--> Finished Dependency Resolution

 

Dependencies Resolved

 

=========================================================================================================================================

 Package                       Arch                         Version                             Repository                          Size

=========================================================================================================================================

Installing:

 ipvsadm       x86_64       1.25-10.el6     LoadBalancer               41 k

 

Transaction Summary

=========================================================================================================================================

Install       1 Package(s)

 

Total download size: 41 k

Installed size: 74 k

Is this ok [y/N]: y

Downloading Packages:

ipvsadm-1.25-10.el6.x86_64.rpm                                                                                    |  41 kB     00:00    

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Installed products updated.

 Verifying:                                   ipvsadm-1.25-10.el6.x86_64                                1/1

 

Installed:

  ipvsadm.x86_64 0:1.25-10.el6                                                                                                          

 

Complete!

[root@www ~]# ipvsadm --help

ipvsadm v1.25 2008/5/15 (compiled with popt and IPVS v1.2.1)

Usage:

  ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask]

  ipvsadm -D -t|u|f service-address

  ipvsadm -C

  ipvsadm -R

  ipvsadm -S [-n]

  ipvsadm -a|e -t|u|f service-address -r server-address [options]

  ipvsadm -d -t|u|f service-address -r server-address

  ipvsadm -L|l [options]

  ipvsadm -Z [-t|u|f service-address]

  ipvsadm --set tcp tcpfin udp

  ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]

  ipvsadm --stop-daemon state

  如果看到提示表明IPVS已经安装成功

开始配置LVS两种方式

Ipvsadmin和prianha来进行配置

第一种ipvsadmin

  638  ipvsadm -A -t 192.168.1.250:80 -s rr -p 600添加一个虚拟ip采用轮询的方式每个节点保持10分钟

  639  ipvsadm -a -t 192.168.1.250:80 -r 192.168.1.200:80 -g添加real server -g表示DR方式

  640  ipvsadm -a -t 192.168.1.250:80 -r 192.168.1.201:80 -g添加real server -g表示DR方式

  641  ifconfig eth0:0 192.168.1.250 netmask 255.255.255.0 up 添加虚拟ip

  643  route add -host 192.168.1.250 dev eth0:0添加虚拟ip路由

  645  echo "1" > /proc/sys/net/ipv4/ip_forward添加路由转发,Dr不是必须的NAT是必须的

[root@www ~]# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.250:http rr

  -> www.ha1.com:http             Route   1      0          0        

  -> www.ha2.com:http             Route   1      0          0

方便管理的话可以做一个启动和停止脚本

#!/bin/sh

# description: Start LVS of Director server

VIP=192.168.1.250

RIP1=192.168.1.200

RIP2=192.168.1.201

./etc/rc.d/init.d/functions

case "$1" in

    start)

        echo " start LVS of Director Server"

# set the Virtual  IP Address and sysctl parameter

 /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up

       echo "1" >/proc/sys/net/ipv4/ip_forward

#Clear IPVS table

       /sbin/ipvsadm -C

#set LVS

/sbin/ipvsadm -A -t $VIP:80 -s rr -p 600

/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g

/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g

#Run LVS

      /sbin/ipvsadm

       ;;

    stop)

        echo "close LVS Directorserver"

        echo "0" >/proc/sys/net/ipv4/ip_forward

        /sbin/ipvsadm -C

        /sbin/ifconfig eth0:0 down

        ;;

    *)

        echo "Usage: $0 {start|stop}"

        exit 1

esac

 

第二种方式采用piranha来配置lvs,也可以采用网页登陆piranha方式进行配置

首先安装piranha

yum install piranha

piranha安装完毕后,会产生/etc/sysconfig/ha/lvs.cf文件

编辑这个文件

[root@www ha]# vim /etc/sysconfig/ha/lvs.cf

service = lvs

primary = 192.168.1.202

backup = 0.0.0.0

backup_active = 0

keepalive = 6

deadtime = 10

debug_level = NONE

network = direct

virtual server1 {

        address = 192.168.1.250 eth0:0

 #       vip_nmask = 255.255.255.255

        active = 1

        load_monitor = none

        timeout = 5

        reentry = 10

        port = http

        send = "GET / HTTP/1.0\r\n\r\n"

        expect = "HTTP"

        scheduler = rr

        protocol = tcp

        # sorry_server = 127.0.0.1

 

        server Real1 {

                address = 192.168.1.200

                active = 1

                weight = 1

        }

 

        server Real2 {

                address = 192.168.1.201

                active = 1

                weight = 1

        }

}

[root@www ha]# /etc/init.d/pulse status

pulse (pid  3211) is running...

[root@www ha]# cat  /proc/sys/net/ipv4/ip_forward

1

[root@www ha]# route add -host 192.168.1.250 dev eth0:0

 

Relserver配置

VIP=192.168.1.250

/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 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

sysctl -p

防止arp

验证

 

[root@www ha]# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.1.250:http rr

  -> www.ha1.com:http             Route   1      0          5        

  -> www.ha2.com:http             Route   1      0          5

当我们关掉一台节点的httd进程时

机子会把这台节点提出去

 

这时候就只会访问ha1的站点了

 

形成了负载均衡

剩下的就是对这两台LVS做keepalived高可用 也就是使用vrrp

安装keepalived

[root@www keepalived]# rpm -Uvh ~/keepalived-1.2.7-5.x86_64.rpm

配置keepalived.conf

vrrp_instance VI_1 {

        state MASTER            # master

        interface eth0

        lvs_sync_daemon_interface eth1

        virtual_router_id 50    # unique, but master and backup is same

        priority 150

        advert_int 1

        authentication {

                auth_type PASS

                auth_pass uplooking

        }

        virtual_ipaddress {

                192.168.1.250  # vip

        }

}

virtual_server 192.168.1.250 80 {

        delay_loop 20

        lb_algo rr

        lb_kind DR

        nat_mask 255.255.255.0

        protocol TCP

 

        real_server 192.168.1.200 80 {

                weight 1

                TCP_CHECK {

                        connect_timeout 3

                }

        }

        real_server 192.168.1.201 80 {

                weight 1

                TCP_CHECK {

                        connect_timeout 3

                }

        }

}

完整验证:

第一步:keepalived节点down掉一台

 

从上图中可以看出虚拟ip已经不在这台ma1上面

下面我们来看ma2的配置

 

从上图中可以看出ma2的各项进程都运行正常,虚拟ip迁移,实现了LVS的高可用

 

可以看出依然实现了负载均衡

现在故障处理完毕启动ma1的keepalived

虚拟ip又回到ha1了

 

下面我们来看一下ha1,停掉ha1上httpd服务

查看ma1

我们可以看到虚拟IP没有移动,但是在lvs中的ha1的路由表已经被踢出来了

下面我们来看ma2

也可以看到虚拟IP没有移动过来,但是在lvs中的ha1的路由表已经被踢出来了

现在访问web

就只能看到ha2的web页面了

现在启动ha1的web服务

我们可以看到ma1和ma2中ha1的路由表又自动添加进来了

访问web页面

验证完成

总结说明

网络结构

 

 

集群说明:

1.使用lvs构成web的负载均衡高可用

2.使用keepalived形成lvs节点的高可用

验证说明:

1.停掉任意节点的keepalived进程虚拟IP会迁移到另外一台去,而web服务器任然是两台进行负载均衡,从而实现lvs节点的高可用

2.停掉任意一台web服务器,虚拟ip不会迁移,但是在lvs配置会把ha1的路由表踢出去从而实现web服务器的高可用

 


© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 18
博文 135
码字总数 188789
作品 0
成都
程序员
LVS+Keepalived+nginx+单纯keepalived高可用

LVS+Keepalived实现高可用集群 LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群 系统。本项目在1998年5月由章文嵩博士成立,是中国...

---張榮--- ⋅ 2016/01/28 ⋅ 0

Centos 6.8 配置Lvs

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 宗旨:   使用集群技...

chinawxl ⋅ 2017/12/22 ⋅ 0

负载均衡集群技术-LVS

众所周知,最近几年的IT互联网格局在不断地发生变化,在美国,有很多有名的互联网企业走向了全球,而在中国也成就的不少的互联网企业。今天我们的移动互联网时代也已经到来了,云计算时代也慢...

JohnSuesan ⋅ 2014/02/22 ⋅ 0

负载均衡技术

lvs 、keepalived 、nginx 、F5 (硬件负载) nginx+keepalive主从 双机热备 + 自动切换解决方案 http://www.lvtao.net/19.html 初学必看的lvs负载均衡教程 http://os.51cto.com/art/201202/3...

phacks ⋅ 2015/03/06 ⋅ 1

19个心得 明明白白说Linux下的负载均衡

19个心得 明明白白说Linux下的负载均衡 http://bbs.uchao.net/thread-32910-1-1.html 一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为...

浩源社区 ⋅ 2012/03/01 ⋅ 0

lvs+keepalived 高可用负载均衡模式分析

1. 前言 在《keepalived 双机热备》这篇文章中,我写了利用keepalived 这个开源软件实现高可用的功能,以及keepalived 高可用所使用的协议——利用vrrp 协议,在高可用网络组内广播自己的优先...

hello_cjq ⋅ 03/30 ⋅ 0

LVS+keepalived负载均衡 ??待续

背景: 随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的...

一枚Sir ⋅ 2014/07/25 ⋅ 0

LVS+keepalived负载均衡

背景: 随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的...

凯文加内特 ⋅ 2015/03/03 ⋅ 0

Keepalived配置文件详解

Keepalived的配置非常简单,仅仅需要一个配置文件即可完成HA cluster和lvs服务节点监控功能,Keepalived的安装已经在上面章节进行了介绍,在通过Keepalived搭建高可用的LVS集群实例中,主、备...

90xa ⋅ 2015/12/10 ⋅ 0

LVS(DR)+keepalived实现高可用负载均衡

一、lvs+keepalived 1、lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一...

nmshuishui ⋅ 2014/05/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

两道面试题,带你解析Java类加载机制

在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa{ static { System.out.println("爷爷在静态代码块"); }} cl...

1527 ⋅ 24分钟前 ⋅ 0

SpringCloud(Data Flow)

dataflow-server

赵-猛 ⋅ 35分钟前 ⋅ 0

深入理解Java虚拟机

这本书我读到第8章,之后就是在读不下去了。 读到后面是一种痛苦的体验,太多的东西是不全面的,大量的专有名词是没有解释的,读到最后很多东西仅仅是一个侧面,所以我觉得,这本书不适合初学...

颖伙虫 ⋅ 40分钟前 ⋅ 0

B树和B+树的总结

B树 为什么要B树 磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的...

浮躁的码农 ⋅ 43分钟前 ⋅ 0

NanoPi NEO core/ Ubuntu16.04单网卡配置3个IP地址(2个静态,1个动态)

配置 root@NanoPi-NEO-Core:/etc/network# cat interfacesauto loiface lo inet loopbackallow-hotplug eth0iface eth0 inet static address 172.31.188.249 netmask 255.......

SamXIAO ⋅ 今天 ⋅ 0

三步为你的App集成LivePhoto功能

摘要:LivePhoto是iOS9新推出的一种拍照方式,类似于拍摄Gif图或录制视频片段生成图片。如果没有画面感,可以联想《哈利波特》霍格沃茨城堡的壁画,哈哈,很炫酷有木有,但坑爹的是只有iphone6S以...

壹峰 ⋅ 今天 ⋅ 0

centos7 git安装

由于centos中的源仓库中git不是最新版本,需要进行源码安装。 1、查看yum仓库git信息 [root@iZm5e3d4r5i5ml889vh6esZ zh]# yum info gitLoaded plugins: fastestmirrorLoading mirror s...

xixingzhe ⋅ 今天 ⋅ 0

input file 重复上传同一张图片失效的解决办法

解决办法 方法一:来回切换input[type='file']的type属性值,可以是‘text’,'button','button'....,然后再切换回来‘file’ 方法二:每次取消图片预览后,重置input[type='file']的value的...

时刻在奔跑 ⋅ 今天 ⋅ 0

Mahout推荐算法API详解

前言 用Mahout来构建推荐系统,是一件既简单又困难的事情。简单是因为Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口;困难是因为我们不了解算法细节,很难去根...

xiaomin0322 ⋅ 今天 ⋅ 0

WampServer默认web服务器根目录位置

安装WampServer之后的web服务器根目录默认位置在WampServer安装目录下的www:

临江仙卜算子 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部