一.集群分为三种,高可用(故障迁移),负载均衡,高性能
主要学习高可用(HA)和负载均衡(LB)。
负载均衡的实现方式一般有硬件或软件两种方式,硬件一般是交换机实现(F5),软件一般分为系统和第三方应用的。系统的有红帽自带的rhcs,第三方应用的有LVS,nginx、haproxy等。
高可用一般有:keepalived,zookeeper,heartbeat等
二.LVS简述
LVS一般会分出DS(dirctor server)和RS(real server),会虚拟出一个IP供外界访问(VIP),外界进来的流量经过lvs作分发请求(注意这里流量并不经过lvs),经过负载策略和负载算法,分给各个real server,real server再对存储集群进行IO操作。
LVS的三种负载策略。
1.NAT 网络地址翻译
RS通过修改报文的目的地址,将客户传给VIP的报文再分发给RS。RS返回数据时,经过DS时,再次修改报文的地址给客户。这种情况下,DS的压力比较大。
2.TUN
进来的流量经过DS指挥分发,出去的流量不经过DS,直接返回客户。这种模式下,DS和RS不用在同一网段
3.DR
原理与TUN一样,只不过DS和RS需要在同一网段
调度算法,据说有8种。只学习了2种常用的。
1.RR(round robin)
一比一轮询,不考虑性能,均衡的分发给每一个RS
2.WRR(weighted round robin)
根据性能设置权值,再根据权值决定哪一个RS
如果LVS是单点部署,可能会出现单点故障。所以要对LVS进行主备设置,当LVS master出故障的时候备LVS backup能够立即顶上,也就是高可用。
3.keepalived的安装。
先讲下keepalived
1 )安装 yum install keepalive
2)配置文件 目录
目录:/etc/keepalived/*
3)keepalived.conf详解
地址:http://www.linuxidc.com/Linux/2013-07/86889.htm
http://blog.csdn.net/jibcy/article/details/7826158
http://server.it168.com/a2009/0926/746/000000746749_3.shtml
内容:
! Configuration File for keepalived
global_defs { #全局定义块
notification_email {
xxx@139.com #接受邮件的邮箱
}
notification_email_from keepalived@gmail.com #发送邮件的邮箱服务器
smtp_server smtp.google.com #发送邮件的邮箱
smtp_connect_timeout 30 #超时重发的时间
router_id LVS_SV022 #负载均衡器标识
LVS}
vrrp_instance VI_1 { #高可用切换的实例
state BACKUP # VI_1 处于备用状态
interface bond1 # 对外提供服务的网络接口(在DR模式中,lvs_sync_daemon_interface与这个接口相同,类似于心跳线,但是不会出现脑裂问题)
virtual_router_id 51 # 虚拟路由id
priority 100 #优先级(正比)
advert_int 1 #同步通知间隔 主备检查的时间间隔
authentication { #主备间验证方式
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #虚拟IP地址(VIP)
10.1.1.1/24 dev bond1
10.1.2.1/24 dev bond0
}
}
virtual_server_group LVS_CONSOLE {
172.17.2.24 8443
}
virtual_server_group LVS_CONSOLE {
172.17.2.24 8443
}
virtual_server_group LVS_CONSOLE {
172.17.2.24 8443
}
virtual_server group LVS_BUSINESS {
delay_loop 6 #健康检查时间间隔
lb_algo rr #负载均衡调度算法(rr)
lb_kind DR #负载均衡转发规则 (DR)
persistence_timeout 50 #会话保持时间(在这个时间内只会保持在同一RS上访问)
protocol TCP #转发协议
real_server 172.17.0.34 8090 {
weight 1 #权重决定负载大小
HTTP_GET {
url {
path file/
digest b6dae9dfa5d7b14c37f92480a8cc2bee
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
4)触发高可用切换的动作
1.检查网络和keepalived进程的存在
2.通过配置vrrp_script这个东西,来制定切换动作。详情看这个大神的blog http://my.oschina.net/hncscwc/blog/158746