一、相关概念及原理
1、高可用集群,High Availability Cluster,简称HA Cluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。高可用性集群(HA cluster)是指如单系统一样地运行并支持(计算机)持续正常运行的一个主机群。高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损 失。如果某个节点失效,它的备援节点将在几 秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。总而言之,高可用集群是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度。
2、Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。
3、VRRP Virtual Router Redundancy Protocol,即 虚拟路由冗余协议。可以认为它是实现路由器高可用的容错协议,即将N台提供相同功能的路由器组成一个路由器组(Router Group),这个组里面有一个master和多个backup,但在外界看来就像一台一样,构成虚拟路由器,拥有一个虚拟IP(vip,也就是路由器所在局域网内其他机器的默认路由),占有这个IP的master实际负责ARP相应和转发IP数据包,组中的其它路由器作为备份的角色处于待命状态。master会发组播消息,当backup在超时时间内收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master,保证路由器的高可用
4、Keepalived和其他高可用组件
Corosync、Keepalived
的区别
Heartbeat、Corosync是属于同一类型,Keepalived与Heartbeat、Corosync区别较大,Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);Heartbeat或Corosync是基于主机或网络服务的高可用方式;简单的说就是,Keepalived的目的是模拟路由器的高可用,Heartbeat或Corosync的目的是实现Service的高可用。所以一般Keepalived是实现前端高可用,常用的前端高可用的组合有,就是我们常见的LVS+Keepalived、Nginx+Keepalived、HAproxy+Keepalived。而Heartbeat或Corosync是实现服务的高可用,常见的组合有Heartbeat v3(Corosync)+Pacemaker+NFS+Httpd 实现Web服务器的高可用、Heartbeat v3(Corosync)+Pacemaker+NFS+MySQL 实现MySQL服务器的高可用。总而言之,Keepalived中实现轻量级的高可用,一般用于前端高可用,且不需要共享存储,一般常用于两个节点的高可用。而Heartbeat(或Corosync)一般用于服务的高可用,且需要共享存储,一般用于多节点的高可用。
一般用corosync,因为corosync的运行机制更优于heartbeat,就连从heartbeat分离出来的pacemaker都说在以后的开发当中更倾向于corosync,所以现在corosync+pacemaker是最佳组合。
二、服务安装及配置
1、安装nginx及配置负载均衡(两台虚拟机都需要安装及配置)
编译安装 : ./configure --prefix=/usr/local/lnmp/nginx/ --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
make & make install
并做软链接方便后续操作
nginx 启动nginx nginx -t 检查有无语法错误 nginx -s reload 重启nginx
2、安装keepalived(两台虚拟机都需要安装及配置)
tar zxf keepalived-1.2.22.tar.gz -C /mnt
cd /mnt/keepalived-1.2.
./configure --prefix=/usr/local/lnmp/keepalived
make & make install
制作软链接 ln /usr/local/lnmp/keepalived/sbin/keepalived /usr/sbin/keepalived
启动服务 keepalived
keepalived可以认为是VRRP协议在Linux上的实现,主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
编辑配置文件:
vim /usr/local/lnmp/keepalived/etc/keepalived/keepalved.conf
! Configuration File for keepalived
vrrp_script chk_nginx {
# script "killall -0 nginx"
script "/mnt/check_nginx.sh"
interval 2
weight -5
fall 3
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
mcast_src_ip 172.25.254.1
virtual_router_id 51
priority 101
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.254.2
}
track_script {
chk_nginx
}
}
3、nginx
监控
脚本
该脚本检测ngnix的运行状态,并在nginx进程不存在时尝试重新启动ngnix,如果启动失败则停止keepalived,准备让其它机器接管。
vim /mnt/check_nginx.sh :
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/usr/local/lnmp/nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
fi
fi
三、测试
172.25.254.1 & 172.25.254.2 虚拟机上的nginx & keepalived 都启动 此时虚拟IP在 172.25.254.1上
server1:
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:7a:e2:08 brd ff:ff:ff:ff:ff:ff
inet 172.25.254.1/24 brd 172.25.254.255 scope global eth0
inet 172.25.254.12/24 scope global secondary eth0
inet6 fe80::5054:ff:fee0:4919/64 scope link
valid_lft forever preferred_lft forever
server2:
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:c9:c8:0a brd ff:ff:ff:ff:ff:ff
inet 172.25.254.2/24 brd 172.25.254.255 scope global eth0
inet6 fe80::5054:ff:fe23:a232/64 scope link
valid_lft forever preferred_lft forever
当关闭172.25.254.1的nginx 时 虚拟IP会转移到172.25.254.2上
相关文章
- 一次 Keepalived 高可用的事故,让我重学了一遍它
- 基于nginx+xxl-job+springboot高可用分布式任务调度系统
- 转】Nginx+tomcat配置集群负载均衡
- 图文解说:Nginx+tomcat配置集群负载均衡
- 【nginx+tomcat集群】Nginx1.12.2+Tomcat7集群+负载均衡+Session共享
- CentOS7Linux中服务器LVS负载均衡、高可用集群搭建(NAT、DR);
- Keepalived高可用集群部署
- Tomcat+nginx+keepalived+memcached实现双VIP负载均衡及Session会话保持
- keepalived高可用系列~ keepalived+proxysql
- keepalived高可用系列~keepalived+mysql