当前位置:文档之家› Linux开源集群架构之keepalived应用详解

Linux开源集群架构之keepalived应用详解

第03章集群利器Keepalived本章主要了解开源高可用负载均衡集群利器Keepalived,掌握Keepalived的安装,运用Keepalived配置高可用集群,并能够实现Keepalived与负均衡集群LVS的完美组合。

一、Keepalived概述1、什么是Keepalived?keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器2、keepalived理论工作原理Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。

Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。

Layer4:主要以TCP端口的状态来决定服务器工作正常与否。

如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中删除。

Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。

Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。

3、keepalived作用随着网站业务量的增长网站的服务器压力越来越大———需要负载均衡方案同时要提供一个可持续的服务质量————高可用性HA通过对服务器池对象的健康检查,实现对失效机器/服务的故障隔离。

负载均衡器间的失败切换failover,是通过VRRPv2(Virtual Router Redundancy Protocol)stack实现。

4、keepalived 体系结构Keepalived 大致分两层结构:用户空间 user space和内核空间 kernel space图是来自官方站点/software_design.html关于其结构的展示如下。

在这个结构图里,处于下端的是内核空间,它包括ipvs和NETLINK两个部分。

Ipvs的作用不再重复叙述;netlink提供高级路由及其他相关的网络功能,如果我们在负载均衡器上启用netfilter/iptable,将会直接影响它的性能。

出于图形上方的组件为用户空间,由它来实现具体的功能,下面选取几个重要的来做说明:1)WatchDog负责监控checkers和VRRP进程的状况。

2)Checkers负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。

换句话说—可以没有VRRP Stack,但健康检查healthchecking是一定要有的。

3)VRRP Stack负责负载均衡器之间的失败切换Failover。

如果只用一个负载均衡器,则VRRP不是必须的。

4) IPVS wrapper用来发送设定的规则到内核ipvs代码。

5) Netlink Reflector用来设定 vrrp 的vip地址等。

Keepalived功能十分强大,但配置工作十分的简单,Keepalived各种功能的实现是通过设置其配置文件keepalived.conf来完成的。

二、Keepalived的安装1、安装KeepalivedLinux操作系统上安装软件一般都使用是二进制包(RPM是二进制包)或源码包tar包进行安装,tar包的安装方式基本上相同,三步骤:[root@localhost ~]# wget /software/keepalived-1.2.1.tar.gz[root@localhost ~]# tar zxvf keepalived-1.2.1.tar.gz[root@localhost ~]# cd keepalived-1.2.1[root@localhost keepalived-1.2.1]# ./configure[root@localhost keepalived-1.2.1]# make && make install新手在安装的过程中可能会遇到一些问题,根据错误提示可以轻松解决问。

最常见的问题总结如下:Configure中错误问题汇总1)无GCC等编译工具[root@localhost keepalived-1.2.1]# ./configurechecking for gcc... nochecking for cc... nochecking for cl.exe... noconfigure: error: in `/root/keepalived-1.2.1':configure: error: no acceptable C compiler found in $PATHSee `config.log' for more details.由提示可以看到,没有发现gcc cc编译工具,只需要安装即可。

解决方法[root@localhost ~]#yum install gcc gcc-C++2)无openssl-devel支持configure: error:!!! OpenSSL is not properly installed on your system. !!!!!! Can not include OpenSSL headers files. !!!解决方法[root@localhost ~]# yum install openssl-devel3)无Use IPVS Framework 框架Keepalived configuration------------------------Keepalived version : 1.2.1Compiler : gccCompiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd Extra Lib : -lpopt -lssl -lcryptoUse IPVS Framework : NoIPVS sync daemon support : NoUse VRRP Framework : YesUse Debug flags : No解决方法:内核源码做软链接,查看是否有内核源码[root@localhost ~]# ls /usr/src/kernels/[root@localhost ~]# yum install kernel-devel ipvsadm[root@localhost ~]# ln -s /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux注:上面ln软链接时源地址根据系统版本的不同,目录名也不同4)无MAKE工具[root@localhost keepalived-1.2.1]# make && make install-bash: make: command not found解决方法[root@localhost keepalived-1.2.1]# yum install makeConfigure最后输出说明:输出说明Use IPVS Framework IPVS框架,即LVS的核心代码,如果不用LVS,可以在configure时指定参数disable-lvs 这样,这里看到的就是NOIPVS sync daemon support IPVS同步进程。

可以用参数disables-lvs-syncd关Use VRRP Framework VRRP框架,这基本上是必须的Keepalived的核心进程VRRPDUse LinkWatch 内核发出的关于网卡状态信息来判断网卡工作状态2、keepalived 安装验证如果在安装Keepalived时指定了其安装路径,那么会在其安装目录(如/usr/local/keepalived)生成bin,etc,man,sbin这4个目录。

其中etc为配置文件所在的目录。

如果没有指定安装路径,自动会在/usr/local目录下创建相应的目录和文件。

[root@localhost ~]# cd /usr/local/etc/[root@localhost etc]# lskeepalived rc.d sysconfigkeepalived它的下面包含一些完整的例子配置文件:如下列出一部分[root@localhost etc]# ls keepalived/samples/client.pem keepalived.conf.track_interfacedh1024.pem keepalived.conf.virtualhostkeepalived.conf.fwmark keepalived.conf.virtual_server_groupkeepalived.conf.HTTP_GET.port keepalived.conf.vrrp注意:keepalived的启动过程并不会对配置文件进行语法检查,就算没有配置文件,keepalived的守护进程照样能够被运行起来。

在默认状态下即不指定配置文件的位置keepalived先查找文件/etc/keepalived/keepalived.conf ,如果为了省事,可以手动创建这个文件,然后在这个文件里书写规则,来达到控制keepalived运行的目的。

3、启动设置A:[root@localhost ~]# /usr/local/sbin/keepalived -DB:service启动方式[root@localhost ~]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/[root@localhost ~]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/[root@localhost ~]# mkdir /etc/keepalived[root@localhost ~]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/[root@localhost ~]# cp /usr/local/sbin/keepalived /usr/sbin/[root@localhost ~]# service keepalived start[root@localhost etc]# ps -ef | grep keepalivedroot 2271 1 0 May30 ? 00:00:00 keepalived -Droot 2273 2271 0 May30 ? 00:00:00 keepalived -Droot 2274 2271 0 May30 ? 00:00:00 keepalived -DKeepalived正常运行时,共启动3个进程,其中一个进程是父进程,负责监控其子进程;一个是vrrp 子进程;另外一个是checkers子进程。

相关主题