1、服务介绍
keepalived期初是专门为lvs设计的,专门用来监控lvs集群系统中各个服务节点的状态,后来又加
入vrrp 的功能,因此除了配合lvs服务外,也可以作为其它服务(mysql、nginx、haproxy)的高可用软件。
2、VRRP 中文:虚拟路由冗余协议,它出现的目的是为了解决伪静态路由出现的单点故障问题,其次它
是通过竞选机制来将路由任务交给某台VRRP路由器(报文都是通过ip多播包形式发送的)。从而
保证网络的不间断、稳定运行。(VRRP使用的是加密协议)
3、原理:
keepalived Directors 之间的故障切换转移,是通过VRRP协议来实现的。
keepalived Directors正常工作时,主Director节点会不断的向备节点广播心跳信息,用以告诉备
节点自己还活着,当主节点发生故障时,备节点就无法继续检测到主节点心跳,竟而调用自身的接
管程序接管主节点的ip资源及服务。而当主节点恢复故障时,备节点会释放主节点故障时自身接管
的ip资源和服务,恢复到原来自身的备用角色。
4、keepalived 官网:http://keepalived.org/
时刻提醒你:备份 永远不要忘记
5、安装准备:
软件下载:wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
创建软连接: ln -s /usr/src/kernels/2.6.32-504.1.3.el6.x86_64/ /usr/src/linux
#确认并且检查linux 的软链接 是否创建成功,否则功亏一篑。
如果么有yum install kernel-devel -y 安装即可。
yum install openssl* -y
yum install popt* -y
6、cd keepalived-1.1.19
./configure
Use IPVS Framework : Yes #使用的ipvs 框架
IPVS sync daemon support : Yes #ipvs的同步支持
Use VRRP Framework : Yes #vrrp框架
make
make install
#如果yes没有出现,很可能会导致keepalive的进程不正常,从而无法正常工作。
7、拷贝文件:
/bin/cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
/bin/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived -p
/bin/cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
/bin/cp /usr/local/sbin/keepalived /usr/sbin/
8、启动/:etc/init.d/keepalived start
#关闭防火墙、关闭selinux
#检查进程是否为3个!
9、配置文件 /etc/keepalived/keepalived.conf: #配置文件见附件
! Configuration File for keepalived #注释为!#开头
global_defs { #全局定义
notification_email {
[email protected] #通知的email
}
notification_email_from [email protected] #发件人
smtp_server 10.0.0.1 #发件的地址
smtp_connect_timeout 30
router_id LVS_7 #keepalived的id,不同的机器不一样
}
vrrp_instance VI_1 { #类似mysql的实例 v1_1相当于实例名
state MASTER #标记实例的状态
interface eth0 #提供服务的端口
virtual_router_id 55
#虚拟的路由id(在两个keepalived的必须一致,在一个keepalive里和别的实例不可以一样)
priority 150 #优先级(竞选机制)
advert_int 1 #健康检查监管的间隔
authentication { #验证的类型
auth_type PASS #密码
auth_pass 1111
}
virtual_ipaddress {
10.0.0.33/24 #虚拟的ip和 interface eth0对应
}
~
10、同样的步骤在另一台机器安装lvs 和keepalived
另一台机器的配置文件:注意:router_id LVS_7 、virtual_router_id、 priority 参数设置;
11、配置文件搞好后两台机器启动keepalived,
注意:查看ip时需要使用ip add来查看vip。
vip 只可以同时存在一个,如果两台机器都有vip就裂脑(类似ip冲突),很严重的!!!
12、检验的时刻来临了!!!
将一台机器的keepalived stop掉
然后在观察另一台的vip 是否有启动!
启动!ok!!!
13、多实例:根据不同的业务配置不同的多实例,实际就是配置多个vip,分业务负载。
范例:见附件。
14、lvs + keepalived
在配件文件中/etc/keepalived/keepalived.conf添加 vrrp_instance VI_1 相对应的vip rip节点
virtual_server 10.0.0.33 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 300
protocol TCP
#ipvsadm -A -t 10.0.0.33:80 -s wrr -p 20
real_server 10.0.0.22 80 {
weight 1
TCP_CHECK {
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 10.0.0.23 80 {
weight 1
TCP_CHECK {
connect_timeout 8
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
#ipvsadm -a -t 10.0.0.23:80 -r 10.0.0.8:80 -g -w 1
#ipvsadm -a -t 10.0.0.22:80 -r 10.0.0.9:80 -g -w 1
#TCP_CHECK 健康检查的方法,也可以使用其它的,例如:HTTP_GET |SSL_GET
#两台机器都要操作,是一组,不要忘记,且它对语法检查很差,自己写脚本搞定。
15、保存配置文件后,将服务重启:
ipvsadm -L -n 查看节点配置是否生效 (保证节点已启动)
ip add 查看vip 是否正常。
节点切换, 查看备节点。
16、当然, 你的节点vip 配置和arp抑制也需要操作,keepalived 是不负责这个的。
17、NAT 模式 注意打开forward ,保证以后配置不会出错
sysctl -p 查看 : net.ipv4.ip_forward = 0
编辑: VI /etc/sysctl.conf 配置: 7 net.ipv4.ip_forward = 0 改为1
sysctl -p
18、 上述配置的vip 和RIP (对外业务)最好使用外网地址,当然RS也可以指定一个网关出口,不
过这个网关又成为业务瓶颈了。
19、如果是 lvs集群的扩展,方法一般是NDS轮询调度器解决单主的问题(例如:DNSPOD很不错),
也可以使用交换机的OSPF功能解决。
~
本文出自 “思想大于技术” 博客,谢绝转载!