您的位置:首页 > 其它

keepalive 安装和双机热备

2016-05-03 16:12 519 查看
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

{
admin@example.com

admin@ywlm.net

}

notification_email_from admin@example.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id lnmp_node1

}

#监控服务.NGINX mysql

[code]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: 全局配置标识,表面下面的区域{}是全局配置

notification_email: 里面填邮箱地址,如果keepalived在发生诸如切换操作时会的发邮件到配置上的邮箱,邮件地址可以多个,每行一个
notification_email_from:表示发送通知邮件时邮件源地址是谁
smtp_server:表示发送email时使用的smtp服务器地址,可以填127.0.0.1
smtp_connect_timeout:连接smtp超时时间
vrrp_instance:各服务器上实例配置域,这里按本服务器的具体情况填值
state:本实例启动状态,MASTER/SLAVE,不管填MASTER/SLAVE,最终还是要看本机器的权重。
interface:实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,这里按本机情况而定
virtual_router_id:这里设置VRID,如果两台机器是同一个备份组,设置一样
priority:设置本节点的优先级,优先级高的为master,不能超过255
advert_int:组播信息发送间隔,同一个备份组两个机器设置必须一样,默认是1S
authentication:验证域,同组的机器auth_type(验证类型)和auth_pass(验证密码)必须一样
virtual_ipaddress:VIP,为master机器设置的虚拟地址,和实例绑定的网卡(interface)设置到一个网段

[/code]

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: