7月3日任务
18.2 keepalived介绍
18.3/18.4/18.5 用keepalived配置高可用集群
两大类:①高可用集群(冗余)
②负载均衡集群(横向扩容)
keepalived介绍
keepalived包含3个模块 ①core模块:负责主进程的启动,维护和全局配置文件的加载和解析
②check模块 Health check
③vrrp模块 通过vrrp协议 (virtual Router Redundancy Protocol)
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
#时间变量,用于记录日志
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.****.net/yunhua_lee/article/details/9788433
DRBD工作原理和配置 http://502245466.blog.51cto.com/7559397/1298945
mysql+keepalived http://lizhenliang.blog.51cto.com/7876557/1362313