1、下载源码
github地址: https://github.com/acassen/keepalived
keepalived官方地址:http://www.keepalived.org/download.html
2、安装
#unzip keepalived-master.zip
#cd keepalived-master
或
#tar zxvf keepalived-1.2.7.tar.gz #cd keepalived-1.2.7
#./configure --prefix=/usr/local/keepalived
或
#./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-238.19.1.el5-i686/
(指定kernel 的include路径,集成LVS时需要)
或
#./configure --prefix=/usr/local/keepalived --disable-lvs-syncd --disable-lvs
( 如果不需要LVS,砍掉lvs部分)
make && make install cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ chmod +x /etc/init.d/keepalived chkconfig --add keepalived chkconfig keepalived on mkdir /etc/keepalived ln -s /usr/local/sbin/keepalived /usr/sbin/
3、配置文件修改
#vi /etc/keepalived/keepalived.conf
- global_defs {
- notification_email
- {
- }
- notification_email_from [email protected]
- smtp_server 127.0.0.1
- smtp_connect_timeout 30
- router_id lnmp_node1
- }
#监控服务.NGINX mysql等
vrrp_script chk_nginx {
script "/home/check_nginx.sh" interval 2 weight 2 }- vrrp_instance lnmp {
- state MASTER
- interface eth0
- virtual_router_id 100
- priority 200
- advert_int 5
- track_interface {
- eth0
- eth1
- }
- authentication {
- auth_type PASS
- auth_pass 123456
- }
- virtual_ipaddress {
- 192.168.0.200
- }
track_script { chk_nginx #检测脚本 } }- #LVS 负载均衡
virtual_server 192.168.0.200 80 { #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开 delay_loop 6 #设置运行情况检查时间,单位是秒 lb_algo rr #设置负载调度算法,这里设置为rr,即轮询算法 lb_kind DR #设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选 persistence_timeout 50 #会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的session共享提供了一个很好的解决方案。 #有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话的保持时间。 #需要注意的是,这个会话保持时间是最大无响应超时时间,也就是说,用户在操作动态页面时,如果50秒内没有执行任何操作, #那么接下来的操作会被分发到另外的节点,但是如果用户一直在操作动态页面,则不受50秒的时间限制 protocol TCP #指定转发协议类型,有TCP和UDP两种 real_server 192.168.0.137 80 { #配置服务节点1,需要指定real server的真实IP地址和端口,IP与端口之间用空格隔开 weight 3 #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小可以为不同性能的服务器 #分配不同的负载,可以为性能高的服务器设置较高的权值,而为性能较低的服务器设置相对较低的权值,这样才能合理地利用和分配系统资源 TCP_CHECK { #realserver的状态检测设置部分,单位是秒 connect_timeout 10 #表示3秒无响应超时 nb_get_retry 3 #表示重试次数 delay_before_retry 3 #表示重试间隔 connect_port 80 } } real_server 192.168.0.139 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }
------------------------------------------
global_defs: 全局配置标识,表面下面的区域{}是全局配置
4、日志配置
默认,keeplived也是把默认的日志写在messages,
1).在主从keeplived节点上编译/etc/sysconfig/keepalived文件
# vi /etc/sysconfig/keepalived
# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp -P Only run with VRRP subsystem.
# --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)
#
KEEPALIVED_OPTIONS="-D -d -S 0"
##参数解释都在#注释里面
2). 修改主从节点日志配置文件/etc/rsyslog.conf
#vi /etc/rsyslog.conf
加入如下配置:
#keepalived -S 0
local0.* /var/log/keepalived.log
3).重启日志服务
# /etc/init.d/rsyslog restart
4).检查/var/log/keepalived.log文件是否存在
OK,到这里我们的安装部分完成,下面我们来看看如何监控服务吧,我们这里仅仅是监控了网络故障和keepalived本身进程,在网络或者keepalived进程出现问题的时候会切换,但是我的节点A里面还有很多服务呢,例如nginx,PHP,mysql进程出问题或高负载的时候相应过慢怎么办,怎么切换的呢,这时就要用到脚本了,下面我们来看看keepalived是如何控制脚本来实现对服务器的监控和切换的
两台机器都这么设置,保持 virtual_router_id 和 advert_int 和 authentication 一致,就实现了双击热备
(双机热备不需要virtual_server,负载均衡LVS才需要)
出现的问题记录:
1. 在配好主从备份之后,发现虚拟IP能ping通,但是访问虚拟IP对应机器上的服务(不是apache或者mysql之类的公用软件)却不成功,这是因为要访问的服务绑定了主机上的一个实体IP不是INADDR_ANY地址,所以连接不上。
2.记得设置防火墙和关闭selinux策略
关闭selinux
vi /etc/sysconfig/selinux 修改: SELINUX=disabled #setenforce 0
配置iptables,添加VRRP通讯支持
iptables -A INPUT -p vrrp -j ACCEPT
3、机器异常或死机后
不会重新起效,需要重启keepalived服务
service keepalived restart
//参考
http://www.cnblogs.com/hdflzh/p/4057098.html
http://www.linuxde.net/2013/04/13381.html
http://os.51cto.com/art/201202/317441.htm
http://blog.slogra.com/post-373.html