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/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功能解决。



                                                                                                          
~    


本文出自 “思想大于技术” 博客,谢绝转载!

你可能感兴趣的:(LVS,负载不均)