keepalive 安装和双机热备

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

 
 
  1. global_defs {
    1. notification_email
    2. {
      1. admin@example.com
      2. admin@ywlm.net
    3. }
    4. notification_email_from admin@example.com
    5. smtp_server 127.0.0.1
    6. smtp_connect_timeout 30
    7. router_id lnmp_node1
  2. }
  3. #监控服务.NGINX mysql
  4. vrrp_script chk_nginx {
    1. script "/home/check_nginx.sh"
    2. interval 2
    3. weight 2
  5. }

  6. vrrp_instance lnmp {
    1. state MASTER
    2. interface eth0
    3. virtual_router_id 100
    4. priority 200
    5. advert_int 5
    6. track_interface {
      1. eth0
      2. eth1
    7. }
    8. authentication {
      1. auth_type PASS
      2. auth_pass 123456
    9. }
    10. virtual_ipaddress {
      1. 192.168.0.200
    11. }
    12. track_script {
              chk_nginx  #检测脚本
      }

  7. }
  8. #LVS 负载均衡
  9. 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)设置到一个网段

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


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值