1、keepalived基础 2、keepalived实现LVS-NAT模型 3、keepalived实现双主模型 ================================================================================================================================================ keepalived基础 1、基础理论 keepalived是基于VRRP协议实现的web高可用我解决方案,keepalievd是一种轻量化的解决方案。通常web服务器至少有两台以上的 服务器,一台作为活动的(active)提供服务的服务器,另外一台作为备用服务器(backup),当有一台宕机发生故障时,备用服务 器立刻上线进行提供服务。 2、NTP: (Network Time Protocol) 服务器端启动ntp服务进程,等待客户端的请求。客户端向NTP服务器发出调教时间的请求,NTP服务器将时间发给客户端,客户端 收到时间信息对自己的信息进行校对。 在centos7上默认使用chrony作为时间同步程序。chrony 是一个实现NTP协议的开源软件,可以同时作为客户端和服务器端。 时间服务器同DNS服务器一样存在层级结构。 1、安装 yum -y install chrony 安装有两个程序,chronyd、chronyc,chronyd作为后台守护进程,chronyc提供一个命令行接口的交互式工具,用于监控chronyd。 2、配置文件/etc/chrony.conf server server 0.centos.pool.ntp.org iburst # 添加时钟服务器 allow / deny allow 192.168/16 # 允许或拒绝那些主机或者网段内的主机连接时钟服务器 3、相关指令 # 查看时间同步源 chronyc sources -v # 查看时间同步源状态 chronyc sourcestats -v # 查看时区、时间相关信息 timedatectl # 设置时区 timedatectl set-timezone Asia/Shanghai 3、VRRP协议 VRRP(Virtual Router Redundancy Protocol),虚拟路由冗余协议。实现网关的备份。VRRP是一种容错协议,它保证当主机的下一跳路由器出现故障时, 由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。 特性: 具有多播或广播的能力在局域网中 VRRP报文封装在IP报文中,适应各种上层协议 协议简单,网络开销小。只定义了一种报文,ARRP通告报文,且只有处于Master状态的主机可以发出通告报文 虚拟MAC地址: 一个虚拟路由器拥有一个虚拟 MAC 地址。虚拟 MAC 地址的格式为 00-00-5E-00-01-{VRID}。通常情况下,虚拟路由器回应 ARP 请求使用的是虚拟 MAC 地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实 MAC 地址。 工作方式:抢占式、非抢占式 抢占式:如果backup路由器工作在抢占式下,则它收到VRRP报文后,会将自己的优先级和报文中的优先级作比较,如果自己的优先级比报文中的优先 级高,则主动抢占称为Master主机。 非抢占式:只要Mater没有出现故障,就不会被backup抢占,即便backup的优先级高,也不会将工作权抢。 工作过程: 1、根据优先级选举出Master。Master发送免费报文ARP报文,将自己的虚拟MAC地址发送给网络内的主机,为网络内的主机提供服务 2、Master周期性发送ARP报文,通告自己的身份 3、如果在一定时间内没有收到 VRRP 报文,则路由器切换为 Master 状态 4、选举和通告状态 选举 初始启动后,发送报文进行选举 如果VRRP报文中的Mater的优先级高于自己的优先级,则保持为backup身份 如果VRRP报文中的优先级低于自己的优先级,如果在抢占式模式下,则backup变为Master身份,如果在非抢占式模式下,则backup的身份不变 如果backup在一定时间内没有收到VRRP通告报文,则backup主动切换为Master身份 通告 Master主动放弃身份:Master发送一个优先级为0的ARRP报文,Backup将快速切换为Master。切换时间Skew time (256-backup优先级)/256秒 Master出现故障:当backup无法接收到Master的报文时,就会主动切换为Master。backup默认等待超时时长为: Master_Down_Interval --> (3×VRRP报文的发送时间间隔)+Skew time秒 频繁抢占Master:Master_Down_Interval时间规定了,在(3×VRRP报文的发送时间间隔)+Skew time秒时间之后,再等待多久时间才进行切换身份 5、keepalived是在Linux上实现VRRP协议的程序,能够根据配置文件自动生成ipvs规则以及对后端服务器进行健康状态检测。 ================================================================================================================================================ keeplived配置文件 1、配置文件 # 配置文件 /etc/keepalived/keepalived.conf # 启动环境变量,keepalived启动时需要的参数 /etc/sysconfig/keepalived # --vrrp -P Only run with VRRP subsystem. # 仅启动VRRP # --check -C Only run with Health-checker subsystem. # --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop. # --dont-release-ipvs -I Dont remove IPVS topology on daemon stop. # --dump-conf -d Dump the configuration data. # --log-detail -D Detailed log messages. # --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON) 2、keepalived配置高可用负载均衡 1、LVS是实现高可用集群负载均衡非常高效的一种方案,在LVS中,通常有三种模型,NAT、DR、TNU。但在LVS实现中,不能解决Director单点故障的问题, 以及面对大的访问量时,前端负载均衡器吞吐的压力。keepalived可以实现Director的高可用,当一个Director故障时,能及时切换到另外一台Director。 keepalived通过配置可以生成LVS规则,继而实现LVS集群负载均衡。keepalived还可以对后端服务器进行健康状态检测,故障通知等功能。 2、keepalived 实现 DR模型 一主一备 双主 keepalived 实现 NAT模型 3、keepalived实现前提 各节点时间同步。通过chronyd服务进行时间同步 各节点能够互相解析主机名。通过修改/etc/hosts配置文件 分别在连个节点node1和node2安装keepalived 网卡支持多播:ip link set dev eth0 multicast on 4、添加日志记录功能 日志系统配置文件中: /local2.* /car/log/keepalived.log /etc/sysconfig/keepalived: KEEPALIVED_OPTIONS="-D -S 2" 5、配置文件/etc/keepalived/ke.conf的配置段 global_defs # 全局配置段 static_ipaddress 配置本节点的IP信息(一般不用配置) static_routes 配置本节点的路由信息(一般不用配置) vrrp_script # 执行脚本,状态检测 vrrp_instance VI_1 # VRRP虚拟路由示例配置段 virtual_serve LVS配置段 6、配置文件 {此配置可简单的实现可高用,实现IP地址漂移 主从模式} global_defs { notification_email { # 配置报警通知发往的邮箱地址 root@localhost #acassen@firewall.loc #failover@firewall.loc #sysadmin@firewall.loc } notification_email_from node@localhost # 邮箱发送方地址 smtp_server 127.0.0.1 # smtp服务器地址 smtp_connect_timeout 30 # 设置连接smtp服务器的超时时长 router_id device1 # 物理服务器的标识,会一同发到邮箱予以显示 vrrp_mcast_group4 224.100.100.100 # 定义多播地址 } vrrp_script monitor { # 定义执行的脚本,状态检测 script "[[ -f /etc/keepalived/down ]] && exit1 || exit0" # 执行双引号中的脚本 interval 1 # 脚本执行时间间隔 weight -10 # 脚本执行失败则vrrp_instance优先级减10 } vrrp_instance VI_1 { # 定义对外服务的VIP区域及相关属性 state MASTER # 指定Keepalvied身份,选项可以是 MASTER|BACKUP。当前节点在此虚拟路由器上的初始状态,只能有一个是MASTER,余下的都应该为BACKUP interface eth0 # 网络接口,IP地址流动接口。虚拟路由器使用的物理接口 virtual_router_id 51 # VRID,虚拟路由的ID。虚拟路由的ID是唯一的 priority 100 # 定义当前节点的优先级,值为1-254,数字越大优先级越高 advert_int 1 # 发送心跳信息。master会主动周期性的发送报文,报告自己的状态、优先级等信息,默认为1s。即多久作一次心跳检测 authentication { # 设定节点间通信的验证类型和密码,验证类型有PASS(简单字符认证)和 AH,仅前8位有效 auth_type PASS auth_pass 1111 } virtual_ipaddress { # 定义虚拟IP地址。格式:/ brd dev scope label