美文网首页
6.nginx 与 keepalived 实现高可用一

6.nginx 与 keepalived 实现高可用一

作者: 经纶先生 | 来源:发表于2017-12-19 17:08 被阅读0次

    keepalived软件起初是为LVS负载均衡设计的,用来管理并监控LVS集群系统中各个节点的状态,后来又加入了可以实现高可用的VRRP功能,因此keepalived除了能够管理LVS软件以外,还可以作为(Nginx,mysql)的高可用解决方案。
    我们本章要介绍的就是使用keepalived实现Nginx的高可用。

    keepalived

    keepalived软件主要是通过VRRP协议实现高可用功能的,VRRP是Virtual Router Redundancy Protocol (虚拟路由冗余协议)的缩写。VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证个别节点宕机后,整个网络可以不间断运行,在华为和cisco的交换机上使用的很多。

    原理

    两台主机同时安装好keepalived并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服务,角色为Backup的主机作为Master主机的热备,当Master主机失效或者故障时,角色为Backup的主机将自动接管Master主机的所有工作,包括接管VIP资源及相应资源服务。
    而当Master主机故障修复后,又会自动接管回来它原来处理的工作,角色为Backup的主机则同时释放工作,此时两台主机恢复到最初启动时各自的原始角色,这也叫做不抢占原则

    keepalived 搭建

    官网
    官网比较简陋,我们安装keepalived一般都是直接使用yum安装

    yum install -y keepalived
    
    [root@bogon ~]# rpm -qa keepalived
    keepalived-1.3.5-1.el7.x86_64
    
    [root@bogon ~]# rpm -ql keepalived 
    /etc/keepalived
    /etc/keepalived/keepalived.conf
    /etc/sysconfig/keepalived
    /usr/bin/genhash
    /usr/lib/systemd/system/keepalived.service
    /usr/libexec/keepalived
    /usr/sbin/keepalived
    

    启动

    service keepalived start
    但是这时候启动是不成功的,因为你的配置文件使用默认的是错误的
    如果你偏要启动,可以tailf -n 200 /var/log/message 查看
    

    keepalived 配置文件说明

    etc/keepalived/keepalived.conf
    

    keepalived 软件是为LVS设置的,所以里面有些配置是LVS用的,我们只使用其高可用部分的配置

    全局定义部分
      1 ! Configuration File for keepalived
      2 
      3 global_defs {
      4    notification_email {  #是定义服务故障时的Email地址,可以定义多个
      5      acassen@firewall.loc
      6      failover@firewall.loc
      7      sysadmin@firewall.loc
      8    }
      9    notification_email_from Alexandre.Cassen@firewall.loc。#指定发送邮件的发件人
     10    smtp_server 192.168.200.1  #指定发送邮件的SMTP服务器,如果本机开启了sendmail或者postfix,那么就可以使用上面的配置发送邮件
     11    smtp_connect_timeout 30  #超时时间
     12    router_id LVS_DEVEL #是指keepalived服务器的路由标识,在一个局域网内,这个标示是唯一的。
     13    vrrp_skip_check_adv_addr
     14    #vrrp_strict  #这条一定要注释,不然VIP 无法被ping通
     15    vrrp_garp_interval 0
     16    vrrp_gna_interval 0
      }
    

    大括号{} 用来分隔区块,要成对出现,如果漏写了半个大括号,keepalived运行时不会报错,但是也不会产生预期的结果

    VRRP实例定义部分
     19 vrrp_instance VI_1 {       #表示定义了一个实例VI_1,注意这个实例在备节点也要存在
     20     state MASTER           #只有MASTER和BACKUP两种状态,需要大写
     21     interface eth0         #网络通信接口,对外提供服务的网络接口
     22     virtual_router_id 51   #虚拟路由ID,需要是数字,并且在一个keepalived.conf文件中是唯一的,但是MASTER与BACKUP配置中又必须是相同的,否则脑裂
     23     priority 100           #数字越大,优先级越高,MASTER的要高于BACKUP的,一般建议差别大与50
     24     advert_int 1           #同步通知间隔,MASTER与BACKUP之间通信检查的时间间隔,单位为s,默认为1
     25     authentication {
     26         auth_type PASS     # 认证权限配置,包括认证类型auth_type和认证密码auth_pass
                                   #认证类型有PASS(simple password,推荐这个)和AH(IPSEC)两种    
                                   #官方推荐使用PASS,验证密码使用明文方式,最好长度不要超过8个字符,,MASTER与BACKUP要使用相同的密码才能通信
     27         auth_pass 1111
     28     }
     29     virtual_ipaddress {  #虚拟地址,可以多个,这就是VIP,会漂移的那个,这个IP原本是不存在的,是硬生生的被你造出来的 
                                 #所以这种IP地址最好在设计网络的时候单独设计一个网段,确保这个网段在你的真实网络中能够通信
     30         192.168.200.16
     31         192.168.200.17
     32         192.168.200.18
     33     }
     34 }
    

    相关文章

      网友评论

          本文标题:6.nginx 与 keepalived 实现高可用一

          本文链接:https://www.haomeiwen.com/subject/zfobwxtx.html