Keepalived双机热备php Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健检查功能,如判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其从新加入群集。在非LVS群集环境中使用时Keepalived也能够做为热备软件使用。 Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案-----由多台路由器组成一个热备组。经过共用的虚拟IP地址对外提供服务;每一个热备组内同一时刻只有一台主服务器提供服务,其余服务器处于冗余状态,若当前在线的服务器失败,其余服务器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。 热备组内的每台服务器均可以成为主服务器,虚拟IP地址(VIP)能够在热备组内的服务器之间进行转移,因此也称为漂移IP地址,使用Keepalived时,漂移地址的实现不须要手动创建虚拟接口配置文件(如eth0:0),而是由Keepalived根据配置文件自动管理。 案例:负载均衡+高可用群集 (LVS-DR+HA):拓扑图以下所示 上图设计目的是用Keepalived构建高可用性的LVS负载均衡群集。使用Keepalived构建LVS群集更加简便易用,主要优点体如今:对LVS负载调度器实现热备切换,提升可用性,对WEB服务器池中的节点进行分健康检查,自动移除失败节点,恢复后再从新加入。 在基于LVS-Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本例将以DR模式的LVS群集为基础,增长一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建建有负载均衡、高可用两种能力的LVS网站群集平台。 实验环境:参照上图可知每台主机网卡的IP地址,以下所示:共7台主机 VIP(虚拟IP地址):172.16.16.172/24 主调度器:eth0 172.16.16.173/24 eth1: 192.168.7.173/24 从调度器:eth0 172.16.16.174/24 eth1: 192.168.7.174/24 WEB节点1: 172.16.16.177/24 eth1: 192.168.7.177/24 WEB节点2: 172.16.16.178/24 eth1: 192.168.7.178/24 NFS共享存储:eth0 192.168.7.250/24 具体操做步骤以下: 一、LVS+keepalived高可用群集---调度器组中的主、从调度器配置(主/从),即构建高可用的LVS负载均衡群集 Keepalived的设计目标是构建高可用的LVS负载均衡群集,能够调用ipvsadm工具来建立虚拟服务器、管理服务器池,而不只仅用来作双机热备。使用Keepalived构建LVS群集更加简便易用,主要优点体如今:对LVS负载调度器实现热备切换,提升可用性;对服务器池中的节点进行健康检查,自动移除失效点节,恢复后再从新加入。 基于LVS+keepalived实现的LVS群集中,至少包括两台热备的负载调度器,两台以上的节点服务器。本案例以DR模式的LVS模式群集为基础。 使用 Keepalived构建LVS群集时,也须要用到ipvsadm管理工具,但大部分工做会由Keepalived自动完成,不须要手动执行ipvsadm(除了查看和监控群集之外) 查看主调度器网卡接口IP地址: 查看从调度器网卡接口IP地址: 1)主服务器的配置: 安装keepalived软件包与服务控制 在编译安装Keepalived以前,必须先安装内核开发包kernel-devel以及openssl-devel、popt-devel等支持库,除此以外,在LVS群集环境中应用时,也须要用到ipvsadm管理工具。 安装ipvsadm软件包: 编译安装Keepalived 使用指定的linux内核位置对keepalived进行配置,并将安装路径指定为根目录,这样就无需额外建立连接文件了,配置完成后,依次执行make、make install进行安装。 使用keepalived服务 执行make install操做以后,会自动生成/etc/init.d/keepalived脚本文件,但还须要手动添加为系统服务,这样就可使用service、chkconfig工具来对keepalived服务程序进行管理了。 主服务器的配置 Keepalived服务的配置目录位于/etc/keepalived。其中keepalived.conf是主配置文件,另外包括一个子目录samples/,提供了许多配置样列做为参考。在keepalived的配置文件中,使用”global_defs {……}”区段指定全局参数。使用”vrrp_instance 实例名称 {……}”区段指定VRRP热备参数,注释文字以”!”符号开头。 相关配置及主要配置项解释以下: ! Configuration File for keepalived #!表示注释 global_defs { notification_email { root@example.com #接收警报的 email 地址,能够添加多个 } notification_email_from root@localhost smtp_server 127.0.0.1 #使用本机转发 email smtp_connect_timeout 30 router_id LVS_DEVEL #load balancer 的标识 ID,即本服务器的名称标识 } vrrp_instance VI_1 { #定义VRRP热备实例 linux
state MASTER #热备状态,MASTER表示主服务器;SLAVE表示备用服务器;当有多台备用的服务器,热备状态改成 BACKUP,此状态是由 priority 的值来决定的,当前priority 的值小于备机的值,那么将会失去 MASTER 状态算法 interface eth0 #HA 监测网络接口即承载VIP地址的物理接口 virtual_router_id 50 #虚拟路由器的ID号。主、备机的 virtual_router_id必须相同 priority 150 #主机的优先级,数值越大优先能越高。备份机改成 50 advert_int 1 #主备之间的通告间隔秒数(心跳频率) authentication { #认证信息,每一个热备组保持一致 auth_type PASS #认证类型,主备切换时的验证 auth_pass 1111 #密码字串 } virtual_ipaddress { #指定漂移地址(VIP),能够有多个 172.16.16.172 #HA 虚拟 ip,可加多个 } } virtual_server 172.16.16.172 80 { #虚拟服务器地址(VIP)、端口 delay_loop 6 #健康检查的间隔时间(秒),每隔 6 秒查询 realserver状态 lb_algo rr #lvs 调度算法,这里使用轮询 lb_kind DR #lvs 负载均衡机制,这里使用直连路由 ! persistence_timeout 50 #同一 IP 的链接 50 秒内被分配到同一台 realserver protocol TCP #用 TCP 协议检查 realserver 状态 real_server 172.16.16.177 80 { #第一个WEB节点的地址、端口 weight 1 #节点的权重 TCP_CHECK { #健康检查方式 connect_port 80 #检查的目标端口 connect_timeout 3 #故障重试秒数(即链接超时) nb_get_retry 3 #重试延迟(即重试次数) delay_before_retry 3 #重试间隔(秒) } } real_server 172.16.16.178 80 { #第二个WEB节点的地址、端口 weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } 配置主调度器:修改keepalived.conf文件中的全局参数、热备参数、WEB服务器池配置,相关配置参数以下图: 从新启动keepalived服务 2)配置从调度器: 从调度器的配置与主调度器基本相同,也包括全局参数、热备参数、服务器池配置,只须要调整router_id、state、prority参数便可,其他内容彻底相同,配置完成之后重启keepalived服务。 安装keepalived软件包与服务控制 在编译安装Keepalived以前,必须先安装内核开发包kernel-devel以及openssl-devel、popt-devel等支持库,除此以外,在LVS群集环境中应用时,也须要用到ipvsadm管理工具。 安装ipvsadm软件包: 编译安装Keepalived 使用指定的linux内核位置对keepalived进行配置,并将安装路径指定为根目录,这样就无需额外建立连接文件了,配置完成后,依次执行make、make install进行安装。 使用keepalived服务 执行make install操做以后,会自动生成/etc/init.d/keepalived脚本文件,但还须要手动添加为系统服务,这样就可使用service、chkconfig工具来对keepalived服务程序进行管理了。 配置从调度器:修改keepalived.conf文件,只修改红线标注的参数,其余参数和主调度器的配置文件彻底同样。修改的地方以下图所示: 从新启动keepalived服务 在同一个keepalived热备组内,全部服务器的keepalived配置文件基本相同。不一样之处主要在于服务器的名称标识、热备状态、优先级。 服务器的名称标识(router_id):建议为每一个参与热备的服务器指定不一样的名称 热备状态(state):至少应有一台主服务器,状态设为MASTER;能够有多台备用的服务器,将状态设为BACKUP. 优先级(priority):数值越大则取得VIP控制权的优先级越高,回此主服务器的优先级应设为最高;其余备用服务器的优先级可依次递减,但不要相同,以避免在争夺VIP控制权时发生冲突。 3)测试主、从调度器: 若防火墙不关闭的话能够在input链上建规则. iptables -I INPUT -p ip -d 224.0.0.18 -jACCEPT 注:VRRP协议的通告报文使用固定的组播地址224.0.0.18,用IP 报文做为传输协议进行协议报文的传送。 当启动keepalived服务后,实际状态为MASTER的主服务器取得VIP控制权,并将eth0接口自动添加VIP地址,经过ip命令能够查看(注意:ifconfig命令看不到) 查看主服器的eth0接口信息: 从调度器服务器上启动keepalived服务,此时主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其余服务器处于备用状态,所以在备用服务器中将不会为eth0接口添加VIP地址。 此时查看从服务器的eth0接口信息: Keepalived的日志消息保存在/var/log/messages文件中,在测试主、从故障自动切换功能时,能够跟踪此日志文件来观察热备状态的变化。以连通性测为例 在internet的测试机上执行ping 172.16.16.172 –t,(172.16.16.172为VIP地址),可以正常ping通,说明主服务器以接管VIP地址,并及时响应客户机的请求。 禁用主服务器的eth0网卡,发现ping测试会中断3~4个包即恢复正常,说明已有其余服务器接替VIP地址,并及时响应客户机的请求。 从新启用主服务器的eth0网卡,发现ping测试再次中断3~4个包即恢复正常,说明主服务器已恢复正常,并夺回VIP地址的控制权。 在这述过程当中能够查看日志记录来了解MASTER、SLAVE状态的迁移记录。 二、LVS+HA ----配置负载调度器(ipvsadm) 要在主、从负载调度器主机上分别配置负载调度器,加载ip_vs模块,安装ipvsadm软件包.这里使用的是LVS-DR模式,须要调整/proc系统的内核响应参数。 在sysctl.conf添加以下内容: 详细配置参考我在前面介绍的LVS-DR的有关设置。 三、在共享存储设备主机上配置共享存储服务(这里使用NFS发布共享服务),具体操做以下: 修改/etc/exports文件,内容以下: /opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash) 容许192.168.7.0/24网段的主机访问NFS的共享。 参考LVS+NAT方式的虚拟服务器中有关NFS的防火墙设置或将NFS服务器的防火墙规则清除。 四、LVS+HA ---配置服务器池中的WEB节点服务器(172.16.16.177和172.16.16.178) 根据所选择的群集工做模式不一样(DR或NAT),节点服务器的配置也有些差别。以DR模式为例。除了须要调整/proc系统的ARP响应参数之外,还须要为虚拟接口lo:0配置VIP地址。具体参考前面有关LVS-DR的配置。因此WEB节点的配置和LVS-DR配置是同样的。 使用DR模式时,节点服务器也须要配置VIP地址,并调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突。
调整/proc响应参数服务器 在sysctl.conf添加以下内容:网络 注:上图中参数的含义:负载均衡 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.all.arp_ignore = 1工具 net.ipv4.conf.lo.arp_ignore = 1 arp_ignore:定义了网卡在响应外部ARP请求时候的响应级别 0:默认值,无论哪块网卡接收到了ARP请求,只要发现本机有这个MAC都给与响应 1:老是使用最合适的网卡来响应,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另外一块网卡的,这个时候接收到ARP请求的这块网卡就必定不响应,只有发现请求的MAC是本身的才给与响应。oop
net.ipv4.conf.default.arp_announce= 0测试 net.ipv4.conf.all.arp_announce = 0 net.ipv4.conf.lo.arp_announce= 0 定义了网卡在向外宣告本身的MAC-IP时候的限制级别 有三个值: 0:默认值,无论哪块网卡接收到了ARP请求,只要发现本机有这个MAC都给与响应 1:尽可能避免响应ARP请求中MAC不是本网卡的,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另外一块网卡的,这个时候接收到ARP请求的这块网卡就尽可能避免响应 2:老是使用最合适的网卡来响应,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另外一块网卡的,这个时候接收到ARP请求的这块网卡就必定不响应,只有发现请求的MAC是本身的才给与响应。 执行sysctl -p使修改生效 网站
配置虚拟IP地址(VIP)-----节点服务器1的配置 在每一个节点服务器,一样须要具备VIP地址172.16.16.172,但此地址仅用做发送WEB响应数据包的源地址,并不须要监听客户机的访问请求(改由调度器监听并分发)。所以使用虚拟接口lo:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地以免通讯紊乱。 修改内容以下: //特别注意:子网掩码必须为全1 重启network脚本使修改后的IP生效。 添加VIP本地访问路由:
安装httpd,建立测试页(略,采用和NAT模式同样设置),启用httpd服务程序 安装httpd软件包,建立测试网页 修改/etc/fstab文件,实现自动挂载 其余服务器节点作相同的备配,再也不重复叙述。 五、安排多台测试机,从internet中直接访问http://172.16.16.172,将可以看到由真实服务器提供的网页内容 在LVS负载调度器中,经过查看节点状态能够观察当前的负载分配状况,对于轮询算法来讲,每一个节点所得到的链接负载应大体至关 至此有关LVS+keepalived群集配置完毕,这样即实现了lvs负载平衡又实现了调度器的热备。
|