LVS高可用集群
高可用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高可用集群的更多相关文章
- 使用Keepalived构建LVS高可用集群
LVS的DR模型配置+Keepalive部署 介绍 下图为DR模型的通信过程,图中的IP不要被扑结构中的IP迷惑,图里只是为了说明DR的通信原理,应用到本例中的拓扑上其工作原理不变. 拓扑结构 服务器 ...
- 003.Keepalived搭建LVS高可用集群
一 基础环境 1.1 IP规划 OS:CentOS 6.8 64位 节点类型 IP规划 主机名 类型 主 Director Server eth0:172.24.8.10 DR1 公共IP eth1: ...
- keepalived+lvs高可用集群
LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国 ...
- LVS高可用集群的配置
网络结构: LVS DR工作原理 LVS集群从客户端上看可以将整个集群看成单个服务器对外提供服务,其IP是集群内部的VIP(虚拟IP).从内部看,转发服务器(DS)其实并没有启动应用层的服务对接口进行 ...
- LVS+Keepalived实现高可用集群
LVS+Keepalived实现高可用集群来源: ChinaUnix博客 日期: 2009.07.21 14:49 (共有条评论) 我要评论 操作系统平台:CentOS5.2软件:LVS+keepal ...
- LVS+Heartbeat 高可用集群方案操作记录
之前分别介绍了LVS基础知识和Heartbeat基础知识, 今天这里简单说下LVS+Heartbeat实现高可用web集群方案的操作说明. Heartbeat 项目是 Linux-HA 工程的一个组成 ...
- 基于Keepalived实现LVS双主高可用集群
Reference: https://mp.weixin.qq.com/s?src=3×tamp=1512896424&ver=1&signature=L1C7us ...
- LVS+Keepalived-DR模式负载均衡高可用集群
LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...
- CentOS高可用集群LVS+Keepalived(DR模式)
操作系统:CentOS6.5_x64 mini 负载均衡模式:DR(直接路由) LVS与Keepalived简述: LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是 ...
随机推荐
- JavaScript高级程序设计61.pdf
JSON对象 早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON. JSON对象有2个方法:stringi ...
- Python中的引用的使用注意
关于Python中的引用的一些使用注意 在python中,在创建一个对象并给它赋予一个变量时,这个赋予的变量仅仅是一个引用它所代表的对象.也就是说新创建的对象只是指向计算机中储存那个对象的内存. 比如 ...
- 研磨设计模式解析及python代码实现——(三)适配器模式(Adapter)
一.适配器模式定义 将一个类的接口转换成另外一个接口,适配器模式使得原本由于接口不兼容,而不能在一起工作的哪些类能够在一起工作. 二.python 实现 import string import cP ...
- [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 ...
- hdoj 4006 The kth great number【优先队列】
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- EL表达式及其定义和使用 转
作者:http://blog.csdn.net/goskalrie/article/details/51315397 简介 EL(Expression Language)表达式语言实在JSP2.0版本 ...
- Python 库大全
作者:Lingfeng Ai链接:http://www.zhihu.com/question/24590883/answer/92420471来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...
- JavaScript效果之选项卡
拼了命学习js,想把学到的Javascript效果,可以记在博客里,在记录过程中,加深理解. gogogo,第一个效果,选项卡. 一.选项卡效果的实现思路 选项卡效果的应用很广泛,几乎所有的网站都会用 ...
- [rxjs] Creating An Observable with RxJS
Create an observable var Observable = Rx.Observable; var source = Observable.create(function(observe ...
- python中的lambda表达
C++中的lambda表达式与C++11增加标准库,是一个简短的匿名的可调用对象,编译器会将其转化为一个匿名类的对象.lambda表达式的最大特点就是简短灵活.调用方便.它不须要处理非常复杂的逻辑.通 ...