Linux 高可用集群
集群(cluster)就是一组计算机,向用户提供一组网络资源。单个的计算机称为集群的节点(node)。高可用集群是为了使集群整体服务尽可能可用,减少因软硬件出错带来的损失。如果某个节点失效,备援节点将会接管它的职责
二.高可用集群的层次结构
HA分为三个层次,Messaging and Membership LRM and RA CRM
Messaging:心跳层,用于节点之间传递心跳信息
Membership:用于主节点(DC)通过CCM或CCS服务根据心跳层提供的信息来产生一个完整的成员关系
CRM:真正实现集群服务的层
LRM:CRM传递过来的在本地控制某个资源的执行和停止的具体执行人
RA:集群资源代理
一.高可用集群的分类
1.双机热备(Active/Passive)
2.多节点热备(N+1)
3.多节点共享存储(N-TO-N)
4.共享存储热备(Split Site)
四.高可用集群软件和常见组合
Messaging and Membership层:heartbeat corosync cman keepalived 等
CRM层:haresource pacemaker rgmanager 等
常用组合:heartbeat+pacemaker(常见于企业6) corosync+pacemaker(最常用)
cman+rgmanager(红帽集群套件的组件) keepalived+lvs(常用于lvs的高可用)
corosync+pacemaker+nfs+httpd(web服务器的高可用) corosync+pacemaker+nfs+mysql(mysql服务器的高可用)
五.共享存储
在集群中,数据都是共享一份的,必须放在共享存储中,主节点能访问,从节点也能访问
主要有:DAS(RAID、SCSI) NAS(NFS、FTP、CIFS) SNA(FC、iscsi)
六.高可用集群的工作原理
主从服务器上建立双机热备,基本都是共享一个存储。当主服务器故障,从服务器自动接替主服务器工作
关于从服务器如何得知主服务器故障。是通过心跳检测机制,每一个节点会定期向其他节点通知自己的心跳信息。检测心跳信息时采用的是udp的694端口。如果服务器由于服务繁忙,没有响应心跳信息,从服务器就会把主服务器的资源强抢过去,这个时候如果主服务器没有宕掉,会导致资源争抢,用户在主从上都能访问,仅执行读操作还没事,如果进行写操作,会导致文件系统崩溃,也就是“脑裂”
关于如何检测心跳信息。通过心跳线来检测,heartbeat通过以太网连接检测主服务器的运行状态,一旦无法检测到主服务器的心跳,从服务器会立即自动接管
七.高可用(HA)+负载均衡(LB)
keepalived+lvs
实验环境:rhel6 iptables and selinux disabled
vip:172.25.15.100
主备机的安装包与配置:
Keepalived-1.2.20.tar.gz 解压 tar zxf keepalived-1.2.20.tar.gz
编译:
进入一级目录 cd keepalived-1.2.20下
编译 ./configure --prefix=/usr/local/keepalived
可能出现报错,只需根据提示下载安装即可
如:yum install -y gcc/openssl-devel
出现:
编译结束
make && make install
在主机的/usr/local/keepalivd下
制作软链接
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived /etc/
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin
在主机的/etc/keepalived下
vim keepalived.conf
global_defs {
notification_email {
[email protected] ##接收报警的email地址,这是本机,可以添加多个
}
notification_email_from [email protected] ##设置邮件的发送地址
smtp_server 127.0.0.1 ##设置smtp_server的地址
smtp_connect_timeout 30 ##设置连接 smtp 服务器超时时间
router_id LVS_DEVEL ##负载均衡器的标示ID,用于email报警
}
vrrp_instance VI_1 {
state MASTER ##在主机server1中是MASTER,在备机server4中是BACKUP
interface eth0 ##HA 监测网络接口
virtual_router_id 51 ##主、备机的 virtual_router_id 必须相同,取值 0-255
priority 100 ##主机的优先级,备份机改为 50,主机优先级一定要大于备机,数字越大优先级越高
advert_int 1 ##主备之间的通告间隔秒数
authentication { ##主备切换时的验证
auth_type PASS ##设置验证类型,主要有 PASS 和 AH 两种
auth_pass 1111
}
virtual_ipaddress {
172.25.15.100 ##设置虚拟IP(vip),可以设置多个,每行一个
}
}
virtual_server 172.25.15.100 80 { ##定义虚拟服务器
delay_loop 6 ##每隔 6 秒查询 realserver 状态
lb_algo rr ##lvs 调度算法,这里使用轮叫round robin
lb_kind DR ##lvs的工作模式是DR
persistence_timeout 50 ##会话保持时间,单位是秒
protocol TCP ##指定转发协议类型,有 tcp 和 udp 两种
real_server 172.25.15.2 80 { ##设置服务节点
weight 1 ##配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,可以对性能高的服务器设置较高的权值,而对性能较低的服务器设置相对较低的权值
TCP_CHECK { ##realserve 的状态检测设置部分,单位是秒
connect_timeout 3 ##10 秒无响应超时
nb_get_retry 3 ##重试次数
delay_before_retry 3 ##重试间隔
}
}
real_server 172.125.15.3 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
保存退出后,开启服务 /etc/init.d/keepalived start
Keepalived+lvs架构搭建结束
1.keepalived提供健康检查,lvs提供负载均衡,两者结合可以提高系统的高可用性、可扩展性、负载均衡能力。采用这样的架构容易对系统进行扩展,只需在后端添加或减少realserver,更改lvs的配置文件即可
2.lvs是虚拟服务器(linux virtual server),可实现简单的负载均衡,目前有三种负载均衡技术(NAT、TUN、DR),八种调度算法(rr、wrr、lc、wlc、dh、sh、lblc、lblcr)
3.Keepalived运行于lvs之上,基于VRRP协议来实现lvs服务。主机(MASTER)和备机(BACKUP)都对外表现为一个vip,主机宕掉后,备机接管
4.架构图: