Keepalived配置原理和工作说明

764次阅读

共计 3615 个字符,预计需要花费 10 分钟才能阅读完成。

一,介绍

Keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似heartbeat,用来防止单点故障。

Keeplived的作用是检测web服务器的状态,如果有一台web服务器死机或者工作出现状况,Keepalived将检测到,并将所有有故障的web服务器从系统中剔除,当web服务器工作正常后,Keepalived自动将web服务器加入到服务器群中,这些都是自动完成,不需要人为干涉。

二,工作原理

Keepalived是以VRRP协议为实现基础的,VRRP全程Virtual Router Redundancy Protocol,即虚拟路由冗余协议

虚拟路由冗余协议,即将N台提供相同功能的路由器做成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip,master会发组广播,当backup收不到vrrp包时就认为master宕掉了,这时就根据VRRP的优先级选择一个backup当master,这样就保证路由的高可用。

三,作用

主要作用于RealServer的健康状态检查以及LoadBalance(负载均衡)主机(Master)和备机(Backup)之间的心跳检测。

四,安装

从49服务器下载最新安装包:

keepalived-1.2.19.tar.gz

解压并进行编译安装:

Tar zxf keepalived-1.2.19.tar.gz

根据报错安装:

yum install openssl-devel gcc gcc-c++ libnl-devel -y

编译:

./configure –prefix=/usr/local/keepalived

Make && make install

安装完成后,进入安装目录:/usr/local/keepalived

将安装目录发送给备机:

Scp -r keepalived/ 172.25.49.2:/usr/local

 

五,配置文件

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived /etc/

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin

Vim /etc/keepalived/keepalived.conf

 

global_defs {
notification_email {
root@localhost                                                          ##接收报警的email地址,可填多个
}
notification_email_from keepalived@server1.example.com                 ##发送报警信息的地址
smtp_server 127.0.0.1                                                  ##设置smtp服务器
smtp_connect_timeout 30                                                ##设置连接smtp服务器超时时间
router_id server1.example.com                                          ##Load balancer 的标识 ID,用于 email 警报
}
vrrp_instance VI_1 {
state MASTER                   ###备机改为 BACKUP,此状态是由 priority 的值来决定的,当前  priority 的值小于备机的值,那么将会失去 MASTER 状态
interface eth0                                                         ###HA检测网络接口
virtual_router_id 100                                                  ## #主、备机的 virtual_router_id 必须相同,取值 0-255
priority 100                                                           ###优先级
advert_int 1                                                           ###主备机之间HA检测频率
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.49.100                                                          ###vip地址
}
}
virtual_server 172.25.49.100 80 {                                     ###vip服务器
delay_loop 6                                                          ###检测后台realserver健康状态的频率
lb_algo rr                                                            ###调度算法,rr为轮询
lb_kind DR                                                             ###直连模式
#nat_mask 255.255.255.0
#persistence_timeout 50                                            ###需要一直联系的服务打开此配置(FTP)
protocol TCP
real_server 172.25.49.3 80 {                                           ##定义后端realserver
weight 1                                                               ##权重
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.49.4 80 {                                    ##后端realserver
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

 

完成后,将配置文件发送给背机server2.example.com

Scp keepaloived.conf 172.25.49.2:/etc/keepalived/

!!~~注意:server2为背机,需要对配置文件做以下几处修改:

1,state BACKUP                                    ##状态,BACKUP为备用模式

2,priority 50                                          ##优先级,背机优先级必须低于主机

启动服务:

/etc/init.d/keepalioved start

六,测试

1. 高可用测试:停止 master 上的 keepalived 服务,看 backup 是否接管

2. 负载均衡测试:访问 http://172.25.49.100,看到页面在两个 realserver 上切换表示成功!你也可以通过 ipvsadm -Ln 查看详细连接情况.

3. 故障切换测试:任意关闭 realserver 上的 httpd 服务,Keepalived 监控模块是否能及时发现,然后屏蔽故障节点,同时将服务转移到正常节点来执行。

关于代码:persistence_timeout 50

在realserver  server3.example.com和server4.example.com安装vsftp,并且在发布目录/var/ftp/下建立检测区分文件:server3和server4,然后在主机上编辑keepalived.conf

在最后增加以下代码:

virtual_server 172.25.49.100 21 {                             ###ftp使用21端口
delay_loop 6
lb_algo rr
lb_kind DR
#nat_mask 255.255.255.0
persistence_timeout 50                                       ##打开延迟,50秒内访问的都由一个realserver处理
protocol TCP
real_server 172.25.49.3 21 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.49.4 21 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

[v_error]如果不打开 persistence_timeout 50 ,在测试时,无法正常访问ftp,加入后重新加载keepalived后测试[/v_error]

正文完
 
mervinwang
版权声明:本站原创文章,由 mervinwang 2016-02-25发表,共计3615字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
文章搜索