高可用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. JavaScript高级程序设计61.pdf

    JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...

  2. Python中的引用的使用注意

    关于Python中的引用的一些使用注意 在python中,在创建一个对象并给它赋予一个变量时,这个赋予的变量仅仅是一个引用它所代表的对象.也就是说新创建的对象只是指向计算机中储存那个对象的内存. 比如 ...

  3. 研磨设计模式解析及python代码实现——(三)适配器模式(Adapter)

    一.适配器模式定义 将一个类的接口转换成另外一个接口,适配器模式使得原本由于接口不兼容,而不能在一起工作的哪些类能够在一起工作. 二.python 实现 import string import cP ...

  4. [Ruby on Rails Issue] When Setting Sqlite version on the Gemfile, Show error "An error occurred while installing sqlite3 ",

    Issue: Gem files will remain installed in /tmp/bundler20140825-31835-p0c0p/sqlite3-1.3.9/gems/sqlite ...

  5. hdoj 4006 The kth great number【优先队列】

    The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth ...

  6. EL表达式及其定义和使用 转

    作者:http://blog.csdn.net/goskalrie/article/details/51315397 简介 EL(Expression Language)表达式语言实在JSP2.0版本 ...

  7. Python 库大全

    作者:Lingfeng Ai链接:http://www.zhihu.com/question/24590883/answer/92420471来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  8. JavaScript效果之选项卡

    拼了命学习js,想把学到的Javascript效果,可以记在博客里,在记录过程中,加深理解. gogogo,第一个效果,选项卡. 一.选项卡效果的实现思路 选项卡效果的应用很广泛,几乎所有的网站都会用 ...

  9. [rxjs] Creating An Observable with RxJS

    Create an observable var Observable = Rx.Observable; var source = Observable.create(function(observe ...

  10. python中的lambda表达

    C++中的lambda表达式与C++11增加标准库,是一个简短的匿名的可调用对象,编译器会将其转化为一个匿名类的对象.lambda表达式的最大特点就是简短灵活.调用方便.它不须要处理非常复杂的逻辑.通 ...