高可用LVS 集群构建

在LVS集群当中Director的作用是很关键的,所以我们在生产环境中要保证其高可用。

高可用架构图:

1、通过 piranha搭建LVS高可用性集群

piranha是REDHAT 提供的一个基于Web的LVS 配置软件,通过piranha可以省去手工配置LVS 的繁琐工作;同时,piranha也可以单独提供集群功能,例如,可以通过piranha激活Director Server的备用主机。这里利用piranha来配置Director Server的双机热备功能。

1.安装与配置piranha

通过yum命令直接在线安装,过程如下:

[root@DR2 ~]# yum install ipvsadm modcluster piranha system-config-cluster php php-cli php-common

通过WEB 界面配置Piranha服务需要设置下面步骤。

#/usr/sbin/piranha-passwd  //设置密码,请设置你的piranha服务WEB配置登陆密码. http://192.168.12.130:3636/输入用户名: piranha 及刚才设置的密码登陆.

/etc/sysconfig/ha/lvs.cf     //由http://ip:3636 web 界面配置的配置文件写入此文件.

/etc/init.d/piranha-gui start  //启动piranha服务的WEB配置界面.

/etc/init.d/pulse        //启动piranha服务读取的就是/etc/sysconfig/ha/lvs.cf.

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

也可以直接手动编辑此文件。编辑好的 lvs.cf文件内容类似如下所示, 注意,“#”号后面的内容为注释。

[root@DR1 ~]# more /etc/sysconfig/ha/lvs.cf

serial_no=18#序号

primary=192.168.60.130 #指定主用 Director Server 的真实IP地址

service=lvs#指定双机的服务名

backup_active=1#是否激活备用Director Server。“0”表示不激活,“1”表示激活。这里选择激活方式

backup=192.168.12.131  #这里指定备用 Director Server 的真实 IP 地址,如果没有备用 #Director Server,可以用“0.0.0.0”代替

heartbeat=1#是否开启心跳,1 表示开启,0 表示不开启

heartbeat_port=539 #指定心跳的 UDP 通信端口。

keepalive=5 #心跳间隔时间,单位是秒

deadtime=10 #如果主 Director Server在deadtime(秒)后没有响应,那么备份Director Server就会接管主Director Server的服务

network=direct #指定 LVS 的工作模式,direct表示DR模式,nat表示NAT模式,tunnel表示TUN模式

debug_level=NONE #定义debug调试信息级别

virtual www.ixdba.net{ #指定虚拟服务的名称

active=1 #是否激活此服务

address=192.168.12.200 eth0:0 #虚拟服务绑定的虚拟IP及网络设备名

port=80         #虚拟服务的端口

send="GET / HTTP/1.0\r\n\r\n"  #向real server发送的验证字符串

expect="HTTP"

#服务器正常运行时应该返回的文本应答信息,用来判断 Real Server

#是否工作正常

use_regex=0

#expect选项中是否使用正则表达式,0 表示不使用,1 表示使用。

load_monitor=none

#LVS中的Director Server 能够使用rup或ruptime来监视各个

Real Server的负载状态。该选项有3个可选值,rup、ruptime和none,如果选择 rup,每个 Real Server 就必须运行 rstatd 服务。如果选择了ruptime,每个 Real Server 就必须运行 rwhod 服务

scheduler=rr         #指定LVS的调度算法

protocol=tcp         #虚拟服务使用的协议类型

timeout=6

#Real Server 失效后从 LVS 路由列表中移除失效Real Server所必须经过

的时间,以秒为单位

reentry=15

#某个Real Server被移除后,重新加入LVS路由列表中必须经过的#时间,

以秒为单位

quiesce_server=0

#如果此选项为1.那么当某个新的节点加入集群时,最少连接数会被重设

为零,因此 LVS 会发送大量请求到此服务节点,造成新的节点服务阻塞,建议设置为 0

server RS1 {            #指定 Real Server 服务名

address=192.168.12.132 #指定 Real Server 的 IP 地址

active=1              #是否激活此 Real Server 服务

weight=1

#指定此 Real Server 的权值,是整数值.权值是相对于所有 Real Server

节点而言的,权值高的 Real Server 处理负载的性能相对较强

}

server RS2 {

address = 192.168.12.133 
active = 1

weight = 1 
}

}

接着,还需要对两个 Real Server节点进行配置,也就是创建/etc/init.d/lvsrs脚本,创建文件/etc/init.d/lvsrs,脚本内容如下:

[root@rs1 ~]#more /etc/init.d/lvsrs 
#!/bin/bash

#description : Start Real Server 
VIP=192.168.12.200

./etc/rc.d/init.d/functions 
case "$1" in

start)

echo " Start LVS of  Real Server
"

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

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

stop)

/sbin/ifconfig lo:0 down

echo "close LVS Director server"

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 "Usage: $0 {start|stop}" 
exit 1

esac

2.启动通过piranha 配置的LVS集群系统

将编辑好的 lvs.cf 从 Director Server 的主节点复制到备用节点,然后在主、备节点分别启动pulse服务,即启动LVS 服务,过程如下:

[root@DR1 ~]#service pulse start

接下来,还要在主、备节点启用系统的包转发功能(其实只有在NAT模式下需要),命令如下:

[root@DR1 ~]#echo "1"
>/proc/sys/net/ipv4/ip_forward

最后,在两个Real server节点上执行lvsrs 脚本,命令如下:

[root@rs1 ~]#/etc/init.d/lvsrs start

到此为止,利用piranha工具搭建的高可用LVS 集群系统已经运行起来了。

2、通过
Keepalived搭建LVS高可用性集群

keepalived这个软件最初就是为了LVS诞生的,那么keepalived除了可以实现LVS的高可用,还可以在配置文件里面实现对LVS的配置管理,以及LVS集群后端节点(real server)的健康检查。

1、安装keepalived+ipvsadm 环境

[root@host236 ~]# yum install ipvsadm
keepalived

2.配置Keepalived

Keepalived 的配置非常简单,仅需要一个配置文件即可完成对HA cluster和LVS 服务节点监控。Keepalived的安装已经在前面介绍过,在通过Keepalived搭建高可用的LVS 集群实例中,主、备 Director Server 都需要安装 Keepalived 软件,安装成功后,默认的配置文件路径为/etc/Keepalived/Keepalived.conf。

一个完整的 keepalived 配置文件由三个部分组成,分别是

全局定义部分

vrrp 实例定义部分

LVS配置部分,

下面详细介绍这个配置文件中每个选项的详细含义和用法。

! Configuration File for keepalived 
#全局定义部分

global_defs {

notification_email {    #设置报警邮件地址,可以设置多个,

731431337@qq.com      #每行一个。注意,如果要开启邮件报警,

#需要开启本机的 Sendmail 服务

1148537043@qq.com

}

notification_email_from
Keepalived@localhost

#设置邮件的发送地址

smtp_server 192.168.200.1

#设置smtp server地址

smtp_connect_timeout 30

#设置连接 smtp
server 的超时时间

router_id_LVS_DEVEL  #表示运行 Keepalived服务器的一个标识。发邮件时显示在邮件主题中的信息

}

#vrrp 实例定义部分

vrrp_instance VI_1 {

state MASTER     #指定 Keepalived 的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器.

interface
eth0          #指定HA监测网络的接口

virtual_router_id
51      #虚拟路由标识,这个标识是一个数字,同一个 vrrp 实例使用唯一的标识,即同一个vrrp_instance下,MASTER和BACKUP 必须是一致的

priority
100       #定义优先级,数字越大,优先级越高。在一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级

advert_int 1  #设定MASTER与BACKUP 负载均衡器之间同步检查的时间间隔,单位是秒

authentication{            #设定验证类型和密码

auth_type PASS             #设置验证类型,主要有PASS和AH两种

auth_pass 1111

#设置验证密码,在一个vrrp_instance下,MASTER与BACKUP 必须使用相同的密码才能正常通信

}

virtual_ipaddress {

#设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个。

192.168.12.200

}

}

#虚拟服务器定义部分

virtual_server 192.168.12.200 80 {

#设置虚拟服务器,需要指定虚拟IP地址和服务端口IP与端口之间用空格隔开

delay_loop 6

#设置健康检查的时间间隔,单位是秒

lb_algo rr

#设置负载调度算法,这里设置为rr,即轮询算法

lb_kind DR

#设置LVS实现负载均衡的机制,有 NAT、TUN和DR三个模式可选

persistence_timeout 50

#会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的 session共享提供了一个很好的解决方案。有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话的保持时间。需要注意的是,这个会话保持时间是最大无响应超时时间,也就是说,用户在操作动态页面时,如果在 50秒内没有执行任何操作,那么接下来的操作会被分发到另外节点,但是如果用户一直在操作动态页面,则不受50秒的时间限制。

protocol TCP

#指定转发协议类型,有TCP和UDP两种

real_server 192.168.12.132 80 {

#配置服务节点 1,需要指定 real server的真实IP地址和端口,IP与端口之间用空格隔开

weight 3

#配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以为性能高的服务器设置较高的权值,而为性能较低的服务器设置相对较低的权值,这样才能合理地利用和分配了系统资源

TCP_CHECK {

#realserve的状态检测设置部分,单位是秒

connect_timeout 3

#表示3秒无响应超时

nb_get_retry 3

#表示重试次数

delay_before_retry 3

#表示重试间隔

connect_port 80

#检查80端口

}

}

real_server 192.168.12.133 80 {

#配置服务节点 2

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

在配置 Keepalived.conf 时,需要特别注意配置文件的语法格式,因为Keepalived 在启动时并不检测配置文件的正确性,即使没有配置文件,Keepalived也照样能够启动,所以一定要保证配置文件正确。

在默认情况下,Keepalived 在启动时会查找/etc/Keepalived/Keepalived.conf
配置文件,如果配置文件放在了其他路径下,可以通过“Keepalived  -f”参数指定配置文件的路径即可。

Keepalived.conf配置完毕后,将此文件复制到备用Director Server对应的路径下,然后进行两个简单的修改即可。

u  将“state MASTER”更改为“state BACKUP”

u  将priority 100更改为一个较小的值,这里改为“priority 80”

3.配置Real server 节点

与heartbeat+LVS类似,Keepalived+LVS也需要为Real server节点配置VIP,抑制ARP,以达到与Director Server相互通信的目的。

4.启动Keepalived+LVS 集群系统

在主、备 Director Server上分别启动Keepalived 服务,可以执行如下操作:

[root@DR1 ~]#/etc/init.d/Keepalived  start

接着在两个 Real server 上执行如下脚本:

至此,Keepalived+LVS 高可用的 LVS
集群系统已经运行起来了。

LVS高可用集群的更多相关文章

  1. 使用Keepalived构建LVS高可用集群

    LVS的DR模型配置+Keepalive部署 介绍 下图为DR模型的通信过程,图中的IP不要被扑结构中的IP迷惑,图里只是为了说明DR的通信原理,应用到本例中的拓扑上其工作原理不变. 拓扑结构 服务器 ...

  2. 003.Keepalived搭建LVS高可用集群

    一 基础环境 1.1 IP规划 OS:CentOS 6.8 64位 节点类型 IP规划 主机名 类型 主 Director Server eth0:172.24.8.10 DR1 公共IP eth1: ...

  3. keepalived+lvs高可用集群

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

  4. LVS高可用集群的配置

    网络结构: LVS DR工作原理 LVS集群从客户端上看可以将整个集群看成单个服务器对外提供服务,其IP是集群内部的VIP(虚拟IP).从内部看,转发服务器(DS)其实并没有启动应用层的服务对接口进行 ...

  5. LVS+Keepalived实现高可用集群

    LVS+Keepalived实现高可用集群来源: ChinaUnix博客 日期: 2009.07.21 14:49 (共有条评论) 我要评论 操作系统平台:CentOS5.2软件:LVS+keepal ...

  6. LVS+Heartbeat 高可用集群方案操作记录

    之前分别介绍了LVS基础知识和Heartbeat基础知识, 今天这里简单说下LVS+Heartbeat实现高可用web集群方案的操作说明. Heartbeat 项目是 Linux-HA 工程的一个组成 ...

  7. 基于Keepalived实现LVS双主高可用集群

    Reference:  https://mp.weixin.qq.com/s?src=3&timestamp=1512896424&ver=1&signature=L1C7us ...

  8. LVS+Keepalived-DR模式负载均衡高可用集群

    LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...

  9. CentOS高可用集群LVS+Keepalived(DR模式)

    操作系统:CentOS6.5_x64 mini 负载均衡模式:DR(直接路由) LVS与Keepalived简述: LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是 ...

随机推荐

  1. C语言中的宏

    写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_ ...

  2. node begining

    node begining */--> pre { background-color: #2f4f4f;line-height: 1.6; FONT: 10.5pt Consola," ...

  3. Java--创建线程及常用方法

    继承java.lang.Thread类--Thread类代表线程类  它的常用方法如下: static Thread currentThread():返回当前正在运行的线程对象的引用. static ...

  4. 天津Uber优步司机奖励政策(1月25日~1月31日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. 用jQuery实现优酷首页轮播图

    ▓▓▓▓▓▓ 大致介绍 看到了一个轮播图的思路,就想的自己动手实践一下,总体来说用jQuery实现起来简单多了 如果对代码中使用的方法有疑问,可以参考我的jQuery学习之路(持续更新),里面有讲解: ...

  6. 利用Linq对集合元素合并、去重复处理

    本文转载:http://www.cnblogs.com/yjmyzz/archive/2012/12/18/2823170.html 今天写代码时,需要对一个数组对象中按一定规则合并.去重处理,不想再 ...

  7. css3 -> 多栏布局

    在进行多栏布局时.使用bootstrap的栅格系统能够非常轻松的实现效果,事实上css3本身也提供了多兰布局的功能. 比方,我们在一个section标签内填充了非常多内容.同一时候希望内容可以显示成三 ...

  8. Run-Time Check Failure #2 - Stack around the variable 'ucPriKey' was corrupt

    Run-Time    Check    Failure    #2        一般是栈被破坏,你的代码可能有缓冲区溢出一类的问题. Run-Time Check Failure #2 - Sta ...

  9. UNIX环境高级编程---标准I/O库

    前言:我想大家学习C语言接触过的第一个函数应该是printf,但是我们真正理解它了吗?最近看Linux以及网络编程这块,我觉得I/O这块很难理解.以前从来没认识到Unix I/O和C标准库I/O函数压 ...

  10. PCAP 文件内容解析命令

    针对网络接口.端口和协议的数据包截取.假定你要截取网络接口eth1,端口号6881的tcp数据包.数据文件保存为test.pcap. tcpdump -w test.pcap -i eth1 tcp ...