32rwqe 发表于 2014-12-22 09:06:24

keepalived + lvs

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/keepalivedstart
   #关闭防火墙、关闭selinux
   #检查进程是否为3个!
   

9、配置文件 /etc/keepalived/keepalived.conf: #配置文件见附件


    ! Configuration File for keepalived                                 #注释为!#开头
    global_defs {                                                       #全局定义
   notification_email {
    2731020772@qq.com                                                   #通知的email
    }
    notification_email_from Alexandre.Cassen@firewall.loc               #发件人
    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功能解决。




页: [1]
查看完整版本: keepalived + lvs