keepalive实现nginx高可用

  

keepalive直译就是保持存的活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,keepalive实现的基础是vrrp,至于vrrp是什么请直接看这里vrrp、下面我们直接看应用吧。

  

<强> keepalive使用
  

  

为了方便使用,写了一个基于ubuntu 16.04服务器的一键配置脚本,配置使用相关就在脚本里见吧

        # !/bin/bash   # nginx + keepalive高可用一键脚本ubuntu 16.04      如果[$ # - ne 4];然后   回声”用法:$ 0(主|备份)优先级接口virtual_ipaddress”   退出0   fi      echo - e安装nginx的   apt-get安装nginx - y比;/dev/null 2 & lt;, 1      echo - e '安装keepalive '   apt-get安装keepalive - y比;/dev/null 2 & lt;, 1      echo - e '配置keepalive '   如果[!- e/etc/keepalived];   mkdir/etc/keepalived   fi   猫在/etc/keepalived/keepalived。参看& lt; & lt; EOF   ! 配置文件keepalive   global_defs {   notification_email {   chencheng199211@gmail.com   }   notification_email_from邮件#表示发送通知邮件时邮件源地址是谁   smtp_server 127.0.0.1 #表示发送邮件时使用的smtp服务器地址,这里可以用本地的sendmail来实现   smtp_connect_timeout 30   router_id大师#机器标识   }   vrrp_script chk_nginx {   脚本“/etc/keepalive/check_nginx.sh”   间隔2 #脚本执行间隔,单位秒   体重5 #脚本结果导致的优先级变更:10表示优先级+ 10,-10年则表示优先级-10   下降3   上升2   }      vrrp_instance VI_1 {   1 #美元状态指定实例(初始)的初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定,里如果这里设置为大师,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为大师   接口3美元#实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的   virtual_router_id 51 #这里设置VRID,这里非常重要,相同的VRID为一个组,他将决定多播的MAC地址   优先级2美元#设置本节点的优先级,优先级高的为大师   advert_int 2 #检查间隔,默认为1秒   身份验证{#这里设置认证   auth_type通过#认证方式,可以是通过或啊两种认证方式   auth_pass 1111 #认证密码   }   virtual_ipaddress{#这里设置的就是贵宾,也就是虚拟IP地址,他随着状态的变化而增加删除,当状态为大师的时候就添加,当状态为备份的时候删除,这里主要是有优先级来决定的,和国家设置的值没有多大关系,这里可以设置多个IP地址   4美元   }   track_script {   chk_nginx   }      # dont_track_primary:忽略VRRP的接口错误   # track_interface:跟踪接口,设置额外的监控,里面任意一块网卡出现问题,都会进入故障(断层)状态,例如,用nginx做均衡器的时候,内网必须正常工作,如果内网出问题了,这个均衡器也就无法运作了,所以必须对内外网同时做健康检查   # mcast_src_ip:发送多播数据包时的源IP地址,这里注意了,这里实际上就是在那个地址上发送VRRP通告,这个非常重要,一定要选择稳定的网卡端口来发送,这里相当于心跳的心跳端口,如果没有设置那么就用默认的绑定的网卡的IP,也就是接口指定的IP地址   # garp_master_delay:在切换到主状态后,延迟进行免费的ARP (ARP)请求   # virtual_routes:原理和虚拟ipaddress一样,只不过这里是增加和删除路由   # lvs_sync_daemon_interface: lv syncd绑定的网卡   # nopreempt:设置不抢占,这里只能设置在状态为备份的节点上,而且这个节点的优先级必须别另外的高。当主mysql恢复后不抢占资源   # preempt_delay:抢占延迟   #调试:调试级别   # notify_master:表示当切换到主状态时,要执行的脚本   # notify_backup:表示当切换到备份状态时,要执行的脚本   # notify_fault:   }   EOF      猫在/etc/keepalived/check_nginx。sh & lt; & lt; EOF   # !/bin/bash   描述:   #定时查看nginx是否存在,如果不存在则启动nginx   #如果启动失败,则停止keepalive   状态=$ (ps - c nginx——no-heading | wc - l)   如果(" ${地位}"=" 0 ");然后   服务nginx开始   睡眠2   status2=$ (ps - c nginx——no-heading | wc - l)   如果(" $ {status2} "=" 0 ");然后/etc/init.d/keepalive停止   fi   fi   EOF      echo - e“启用启动和启动”   服务keepalive开始   服务nginx开始   

keepalive实现nginx高可用