-
Centos6.5
搭建
HA(lvs+kee
palived
)
集群环境过程
引言
本文
档指导服务器开发或维护人员配置高性能的集群环境
,
附录还收
集了一些服务器搭
建的其它相关技术
本文档的预期读者是服务器开发或服务器维护技术人员
由于我们的网络布局和有限的公网
IP
地下,
LVS
采用
NAT
的方式实现集群。
概述
:
LVS
集群结构
一般的
LVS+keepalived
集群的体系结构以下
图所示。
LVS
集群的体系结构
1
)
Load Balancer
p>
层:
位于整个集群系统的最前端,
有一台或
者多台负载调度器
(
Director
Server
)组成,
LVS
模块就
安装在
Director
Server
上,而
Director
的主要作用类似于一个路
由器,它含有完成
LVS
功能所设定的路由表,通
过这些路由表把用户的请求分发给
Server
Array
层的应用服务器(
Real
Server
)上。同时,在
Director
Server
上还要安装对
Real Server
服务的监控模块
Ldirectord
,
此模块用于监测各个
Real Server
服
务的健康状况。
在
Real Server
不可用时把它从
LVS
路由表中剔除,恢复时重新加入。<
/p>
2
)服务器池(
server poo
l
),是一组真正执行客户请求的服务器,由一组实际运行应用
服务的机器组成,
Real Server
可以是
WEB
服务器、
MAIL
服
务器、
FTP
服务器、
DNS
服务
器、视频服务器中的一个或者多个,每个
R
eal Server
之间通过高速的
LAN
< br>或分布在各地的
WAN
相连接。在实际的应用中,
Director
Server
也可以同时兼任
Real
Server
的角色。
3
)后端存储(
backend st
orage
),它为服务器池提供一个共享的存储区,是为所有
Real
Server
提供共享存储空间和内容一致性的存储
区域,在物理上,一般有磁盘阵列设备组成,
为了提供内容的一致性,一般可以通过
p>
NFS
网络文件系统共享数据,但是
NFS
在繁忙的业
务系统中,性能并不是很好,此时可以采用集群文件
系统,例如
Red hat
的
GFS<
/p>
文件系统,
oracle
提供的
OCFS2
文件系统等。
4
)
从整个
LVS
结构可以看出,
Director Server
是整
个
LVS
的核心,
目前,
用于
Director
Server
的操作系统只能是
Linux
和
FreeBSD
,
linux2.6
内核不用任何设置就可以支持
LVS
功
能,对于
Real Server
,几乎可以是所有的系统平
台,
Linux
、
windows
p>
、
Solaris
、
AIX
、
BSD
系列都能很好的支持
。
Director Server
服务器上安装
ipvsadm
和
kee
palived
两个软件。
通过
ipv
sadm
配置
LVS
负载均衡算法把用
户请求分发到
Real Server
服务器;
keepalived
实现
Director Ser
ver
单点
失败问题,通过
keepa
lived
的心跳检测和资源管理,当主
Director <
/p>
Server
服务器失效后,
备
Director
Server
服务器立即接管服务。实现
Director
Server
服务不会中断
。
keepalived
简介
:
官方网站
:
参考网址:
/windy_dcm/blog/static/
Keepalived
的作用是检测
w
eb
服务器的状态,如果有一台
web
服务器死机,或工作出
现故障,
Keepalived
将检测到,并将有故障的
web
服务器从系统中
剔除,当
web
服务器工
作正常后
p>
Keepalived
自动将
web
服务器加入到服务器群中,这些工作全部自动完成,不需
要人工干涉,
需要人工做的只是修复故障的
web
服务器。
< br>
keepalived
可以看做是
lvs
的扩展,可以跟
lvs
实现
无缝对接,并且相比于
lvs+heartbeat
来说,
p>
lvs+keepalived
配置更简单。
keepalived
只需要配置一个配置文件即可与
lvs
稳定的工
作,
heartbeat
p>
需要配置三个文件。
(但
heartbea
t
比
keepalived
功能更强大
,可以实现资源主
备功能,而
keepalived
只能实现路由主备功能,个人观点),我们这里只需要实现
virtual
IP
的主备功能和监视
web
服务器,
选择
keepalived
。
keepalived
原理
keepalived
也是模块化设计,不同模块复杂不同的功能,下面
是
keepalived
的组件
core check vrrp libipfwc libipvs-2.4
libipvs-2.6
core
:是
keepalived
的核心,复杂主进程的启动和维护,
全局配置文件的加载解析等
check
:负责
healthchecker(
健康检查
)
,包括了各种健康检查方式,以及对应的配置的解析包
括
LVS
的配置解析
vrrp
:
VRRPD
子
进程,
VRRPD
子进程就是来实现
V
RRP
协议的
libipfwc
p>
:
iptables(ipchains)
库,配置
LVS
会用到
libipvs*
:配置
LVS
会用到
注意,
keepaliv
ed
和
LVS
完全是两码事,只不过他
们各负其责相互配合而已
keep
alived
启动后会有三个进程
父进程:内存管理,子进程管理等等
子进程:
VRRP
子进程
子进程:
healthchecker
子进程
p>
检查
keepalived
进程
ps
aux|grep keepalived
有图可知,两个
子进程都被系统
WatchDog
看管,两个子进程各自复杂自
己的事,
healthchecker
子进程复杂检查各自服务
器的健康程度,例如
HTTP
,
LVS
等等,如果
healthchecker
子进程
检查到
MASTER
上服务不
可用了,就会通知本机上的兄弟
VRRP
子进
< br>程
,让他删除通告,并且去掉虚拟
IP
< br>,转换为
BACKUP
状态
安装和配置
keepalived
安装
执行下面命令安装
keepalived
,其中
-y
表示碰到
yes/no
询问,一律选择
yes
yum -y install keepalived
出现如下图所示表示安装成功
keepalived
配置项详解
执行下面命令打开配置文件
cd
/etc/keepalived/
cp
#
备份配置文件
vim
p>
#
如果没有
vim,
可用
vi
代表,也可安装它
配置文件里关键项解释
state
:
state
指定
instance(Initial)
的初始状态,就是说
在配置好后,这台服务器的初始状态就
是这里指定的,
但这里指
定的不算,
还是得要通过竞选通过优先级来确定,
如果这里设置
为
master
,但如若他的优先级不及另外一台,那么这台在
发送通告时,会发送自己的优先级,
另外一台发现优先级不如自己的高,那么他会就回抢
占为
master
interfa
ce
:
实例绑定的网卡,因为在配置虚拟
IP
的时候必须是在已有的网卡上添加的
dont track primary
:
忽略
VRRP
的
interface
错误
track
interface
:<
/p>
跟踪接口,设置额外的监控,里面任意一块网卡出现问题,都会进入故障
< br>(FAULT)
状态,例如,用
nginx
做均衡器的时候,内网必须正常工作,如果内网出问题了,
这个均衡器也就无
法运作了,所以必须对内外网同时做健康检查
mcast
src
ip
:
发送多播数据包时的源
IP
地址,这里注意了,这里实际上就是在哪个地址上
发送
VR
RP
通告,
这个非常重要,
一定要选择
稳定的网卡端口来发送,
这里相当于
heartbeat
的心跳端口,如果没有设置那么就用默认的绑定的网卡的
IP
,也就是
interface
指定的
IP
地
址
garp master delay
:
在切换到
master
状态后,延
迟进行免费的
ARP(gratuitous
ARP)
请求
virtual router id
:
这里设置
VRID
,这里非常重要,相同的
< br>VRID
为一个组,他将决定多播的
MAC
地址
priority
100
:
设置本节点的优先级,优先级高的为
< br>master
advert int
:
检查间隔,默认为
1
秒
p>
virtual
ipaddress
:
这里设置的就是
VIP
,也就是虚拟
IP
地址,他
随着
state
的变化而增加删
除,当
state
为
master
的时候就添加,当
state
为
< br>backup
的时候删除,这里主要是有优先级
来决定的
,和
state
设置的值没有多大关系,这里可以设置多个
p>
IP
地址
virtual
routes
:
原理和
virtual
ipaddress
一样,只不过这里是增加和删除路由
lvs sync daemon
interface
:
lvs
syncd
绑定的网卡
authentication
:
这里设置认证<
/p>
auth type
:
认证方式,可以是
PASS
或
AH
两种认证方式
auth
pass
:
认证密码
nopreempt
:
设置不抢占,
这里只能设置在
state
为
backup
的节点上,
而且这个节点的优先级
必须别另外的高
preempt
delay
:
抢占延迟
debug
:
debug
级别
notify
master
:
和
sync
group
这里设置的含义一样,可以单独设置,例如不同的实例通知不
同的管理人员,
http
实例发给网站管理员,
mysql<
/p>
的就发邮件给
DBA
扩展说明:用
keepalived
的配置文件可以代
替
ipvsadm
来配置
LVS
,这样会方便很多,
一个配置文件搞定这些,维护方便,配置方便是也
!
配置
keepalived
! Configuration File for keepalived
global_defs {
router_id
KL_HOST1
#
备配置文件改成
KL_HOST2
}
vrrp_instance VI_GATEW
AY {
state MASTER
#
备的改成
BACKUP
interface eth1
virtual_router_id 52
priority 100
#
备用改成比当前值小,这个值不能
大于
255
nopreempt
advert_int 1
authentication
{
auth_type PASS
auth_pass 1980
}
virtual_ipaddress {
192.168.56.254/24 brd 192.168.56.255
}
}
vrrp_instance VI_1 {
state MASTER
interface eth0
nopreempt
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1981
}
virtual_ipaddress {
192.168.13.201/24
}
}
vrrp_sync_group VG_1 {
group {
VI_1
VI_GA
TEWAY
}
}
virtual_server
192.168.13.201 80 {
delay_loop 6
lb_algo rr
#rr
是
lvs
的负载方式
lb_kind NA
T
protocol TCP
real_server
192.168.56.102 80 {
weight 1
HTTP_GET {
url {
path /
digest
b298d62ed6afd3ab4b1ac83a735bd879
#
用下面方法生成
#/usr/bin/genhash -s 192.168.56.102 -p
80 -u /
}
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
real_server 192.168.56.103 80 {
weight 1
HTTP_GET {
url {
path /
digest 96b1ab88192e019f612619785f5be10e
}
}
connect_timeout
3
nb_get_retry 3
delay_before_retry 3
}
}
备用
keepalived
大多数配置跟上面的相同,只需要修改三个地方,分别如下:
router_id LVS_DEVEL_1
备用可以改成
router_id
LVS_DEVEL_
2
state MASTER
备的改成
state
BACKUP
,而且必须都是大写
priority 100
优先级,备的必须比主的小
注意:安装
keepalived
前端机的防
火墙必须关闭。打开服务器的转发功能
vim /etc/
_forward = 0
#
p>
把
0
改成
1
LVS
简介
:
官方网站:
中文官方网站:
参考网址:
/2895551/552947
LVS
是
Linux Virtual
Server
的简称,也就是
Linux
虚拟服务器
,
是一个由章文嵩博士发
起的自由软件项目。现在
LVS
已经是
Linux
标准内核的一部分,在
Linux2.4
内核以前,使
用
LV
S
时必须要重新编译内核以支持
LVS
功能模块,但是从
Linux2.4
内核以后,已经完全
内置了
LVS
的各个功能模块,
无需给内核打任何补丁,
可以直接使用
LVS
提供的各种功能。
使用
LVS
技术要达到的目标是:通过
LVS
< br>提供的负载均衡技术和
Linux
操作系统实现
一个高性能、高可用的服务器群集,
它具有良好可靠性、
可扩展性和可操作性。从而以低廉
的成本实现最优的服务性能。
LVS
集群特点:
1) IP
负载均衡技术
负载均衡技术有很多实现方案,有基于
DNS
域名
轮流解析的方法、有基于客户端调度
访问的方法、有基于应用层系统负载的调度方法,还
有基于
IP
地址的调度方法,在这些负
载调度算法中,执行效率最高的是
IP
负载均衡技术。
LVS
的
IP
负载均衡技术是通过
IPVS
模块来实现的,
IPVS
是
LVS
集群系统的核心软件,
它的主要作用是:
安装在
Director Server
上,
同时在
p>
Director Server
上虚拟出一个
IP
地址,
用户必须通过这个虚拟的
IP
地址访问服务。
这个虚拟
IP<
/p>
一般称为
LVS
的
VIP
,
即
Virtual IP<
/p>
。
访问的请求首先经过
VIP
到达负载调度器,然后由负载调度器从
Real
Server
列表中选取一
个服务节点响应用户的请求。
当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务
的
Real
Server
节
点,而
Real
Server
节点如何返回数据给用户,是
IPVS
实现的重点技术
,
IPVS
实现负载均
衡机制有三种,
分别是
NA
T
、
TUN
和
DR
,详述如下:
1
、
VS/NAT<
/p>
:
即(
Virtual Server via Network
Address Translation
)
也就是网络地址翻译技术实现虚拟服务器,
< br>当用户请求到达调度器时,
调度器将请求报
文的目标地址
(即虚拟
IP
地址)改写成选定的
Re
al Server
地址,同时报文的目标端口也改
成选定的<
/p>
Real
Server
的相应端口,最
后将报文请求发送到选定的
Real
Server
。在服务器端
得到数据后,
Real Serve
r
返回数据给用户时,
需要再次经过负载调度器将报文的源地址
和源
端口改成虚拟
IP
地址和相应端口
,然后把数据发送给用户,完成整个负载调度过程。
可以看出
,在
NA
T
方式下,用户请求和响应报
文都必须经过
Director Server
地址重写,
p>
当用户请求越来越多时,调度器的处理能力将称为瓶颈。
2
、
VS/TUN
:即(
Virtual Server via IP
Tunneling
)
也就是
IP
隧道技术实现虚拟服务器。它的连接调度和管理与
VS/NAT
方式一样,只是
它的报文转发方法不同,
VS/TUN
方式中,调度器采用
IP
隧道技术将用户请求转发到某个
Real
Server
,而这个
Real
p>
Server
将直接响应用户的请求,不再经过前端调度器,此外,
对
Real
Server
的地域位置没有要求,可以和
Director
Server
位于同一个网段,也可以是独立的
一个网络。因此
,在
TUN
方式中,调度器将只处理用户的报文请求,集群系统
的吞吐量大
大提高。
3
、
VS/DR
:
即(
Virtual Server via Direct
Routing
)
也就是用直接路由
技术实现虚拟服务器。它的连接调度和管理与
VS/NAT
和<
/p>
VS/TUN
中的一样,
但它的报文转发
方法又有不同,
VS/DR
通过改写请求报文的
MAC
地址,
将请求
发送到<
/p>
Real Server
,而
Real
Server
将响应直接返回给客户,免去了
VS/TUN
p>
中的
IP
隧道开
-
-
-
-
-
-
-
-
-
上一篇:《电视机》教案
下一篇:UCloud云存储技术方案