7月3日任务

18.1 集群介绍
18.2 keepalived介绍

18.3/18.4/18.5 用keepalived配置高可用集群


两大类:①高可用集群(冗余)

             ②负载均衡集群(横向扩容)

keepalived介绍


keepalived包含3个模块 ①core模块:负责主进程的启动,维护和全局配置文件的加载和解析

                                      ②check模块 Health check

                                      ③vrrp模块 通过vrrp协议 (virtual Router Redundancy Protocol)

VRRP是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器,它负责转发数据包到这些虚拟 IP 地址。  [1]   一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的 IP 地址可以作为终端主机的默认第一跳路由器。是一种LAN 接入设备备份协议。一个局域网络内的所有 主机都设置 缺省网关,这样主机发出的目的地址不在本 网段报文将被通过缺省网关发往 三层交换机,从而实现了主机和外部网络的通信。
VRRP是一种路由容错协议,也可以叫做备份路由协议。一个局域网络内的所有主机都设置缺省路由,当网内主机发出的目的地址不在本网段时,报文将被通过缺省路由发往外部路由器,从而实现了主机与外部网络的通信。当缺省路由器down掉(即端口关闭)之后,内部主机将无法与外部通信,如果路由器设置了VRRP时,那么这时,虚拟路由将启用备份路由器,从而实现全网通信。
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协
议)是一种容错协议。通常,一个网络内的所有主机都设置一条 缺省路由,这样,主机发出的目的地址不在本网段的报文将被通过缺省路由发往路由器RouterA,从而实现了主机与外部网络的通信。当路由器RouterA 坏掉时,本网段内所有以RouterA 为 缺省路由 下一跳的主机将断掉与外部的通信产生单点故障。VRRP 就是为解决上述问题而提出的,它为具有多播组播或广播能力的局域网(如:以太网)设计。
VRRP 将局域网的一组路由器(包括一个Master 即活动路由器和若干个Backup 即备份路由器)组织成一个虚拟路由器,称之为一个备份组。这个虚拟的路由器拥有自己的IP 地址10.100.10.1(这个IP 地址可以和备份组内的某个路由器的接口地址相同,相同的则称为ip拥有者),备份组内的路由器也有自己的IP 地址(如Master的IP 地址为10.100.10.2,Backup 的IP 地址为10.100.10.3)。局域网内的主机仅仅知道这个虚拟路由器的IP 地址10.100.10.1,而并不知道具体的Master 路由器的IP 地址10.100.10.2 以及Backup 路由器的IP 地址10.100.10.3。  [1]   它们将自己的缺省路由下一跳地址设置为该虚拟路由器的IP 地址10.100.10.1。于是,网络内的主机就通过这个虚拟的路由器来与其它网络进行通信。如果备份组内的Master 路由器坏掉,Backup 路由器将会通过选举策略选出一个新的Master 路由器,继续向网络内的主机提供路由服务。从而实现网络内的主机不间断地与外部网络进行通信。
VRRP协议的工作机理与CISCO公司的HSRP(Hot Standby Routing Protocol)有许多相似之处。但二者主要的区别是在CISCO的HSRP中,需要单独配置一个IP地址作为虚拟路由器对外体现的地址,这个地址不能是组中任何一个成员的接口地址。 [1]  
使用VRRP协议,不用改造网络结构,最大限度保护了投资,只需最少的管理费用,却大大提升了网络性能,具有重大的应用价值。  [1]  
最典型的VRRP应用:RTA、RTB组成一个VRRP路由器组,假设RTB的处理能力高于RTA,则将RTB配置成IP地址所有者,H1、H2、H3的 默认网关设定为RTB。则RTB成为主控路由器,负责ICMP重定向、ARP应答和IP 报文的转发;一旦RTB失败,RTA立即启动切换,成为主控,从而保证了对客户透明的安全切换。  [1]  
在VRRP应用中,RTB在线时RTA只是作为后备,不参与转发工作,闲置了路由器RTA和链路L1。通过合理的网络设计,可以达到备份和负载分担双重效果。让RTA、RTB同时属于互为备份的两个VRRP组:在组1中RTA为IP地址所有者;组2中RTB为IP地址所有者。将H1的默认网关设定为RTA;H2、H3的默认网关设定为RTB。这样,既分担了设备负载和 网络流量,又提高了网络可靠性。

keepalived配置高可用集群


在02机器上yum安装nginx,在01,02机器上都yum安装keepalived软件包;其中keepalived的配置文件在/etc/keepalived/keepalived.conf中如下图(把系统默认的配置删除,快捷键>!$,并把新的自定义配置文件拷贝到/etc/keepalived/keepalive.conf中)


几个主要参数:① global_defs 全局定义参数,出现问题发邮件邮箱
                        ②vrrp_script chk_nginx检测服务是否正常,需要写自定义脚本
                       ③vrrp_instance VI_1定义master相关,interface:vrrp协议通信的网卡,virtual_router_id定义路由器ID(主和backup需要保持一致),priority权重(有主次之分),authentication 认证相关(PASS),virtual_ipaddress设置成100;如果主宕机,需要定义公有IP(可以让主和backup同时可用,随时下线和配置),而不设置的话backup无法把域名解析到正常的IP
并编写check脚本,路径和配置文件中的定义一致,如下图

  #时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,

#如果还为0,说明nginx无法启动,此时需要关闭keepalived(高可用集群脑裂概念:如果主宕机后Keepalived进程依然存在,从在起来后也要用keepalived服务,此时如果主和从都同时使用会起冲突,如VIP的争抢,即两天机器同时监听同一个VIP,无法确定访问哪台机器,进而形成紊乱)


编辑完脚本文件后把权限更改到755,否则无法自动加载该脚本,也就无法启动keepalived服务

systemctl start keepalived后查看keepalived和nginx服务是否启动,尝试关闭nginx服务后又自动启动了


Keepalived服务日志在/var/log/messages中,less查看,其中可以看到virtual IP地址


ip add查看virtual IP


在配置从之前查看防火墙相关配置如(selinux, iptables, firewalld)

删掉默认配置文件,加入下图所示,和主的配置不同在于status BACKUP和priority数值90


编辑监听脚本 (由于是yum安装的脚本,需要把/etc/init.d/nginx start改成systemctl start nginx,其他基本一致)


修改权限并启动keepalived,如下图


区分主和从的nginux

需要在主上的默认虚拟主机的索引页修改标记为master,同理在从上的索引页修改标记为backup,如下图

主:



从:上面访问/usr/share/nginx/html/html.index发现弹出来的是网站首页内容,放到windows上访问如下图


此图提示需要删除访问默认页,并添加如下图Backup Backup作为默认访问页内容,和主上的类似



如下图,刷新访问默认页成功:


做实验应该访问VIP,如下图 (说明VIP在master上)


测试高可用集群


如下图,现在的Virtual VIP挂在主上


想办法把主上的VIP转到从上,方法:把主上的通过vrrp协议发出去数据包封掉,如下图 iptables -I OUTPUT -p vrrp -j DROP

此时查看主上的VIP依然挂着,没有释放

主和从上面都查看日志/var/log/messages,从上面发现IPv6相关,说明和其他机器进行了交互


此时说明通过简单的封vrrp协议包出口不能模拟主宕机的场景,最简单的就是关闭keepalived服务

操作:①iptables -F ②systemctl stop keepalived.

测试:如下图所示此时VIP自动挂到从上面(因为keepalived服务停掉了)


tail从上的日志发现VIP被add

再次在主上开启keepalived服务,此时VIP恢复到主机器上



扩展
heartbeat和keepalived比较http://blog.csdn.net/yunhua_lee/article/details/9788433 
DRBD工作原理和配置 http://502245466.blog.51cto.com/7559397/1298945
mysql+keepalived http://lizhenliang.blog.51cto.com/7876557/1362313

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值