6.nginx 与 keepalived 实现高可用一

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 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容