zoukankan      html  css  js  c++  java
  • Keepalived+LVS高可用负载均衡集群

    概述

      Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集。
    Keepalived的官方网站位于http://www.keepalived.org/
    Keepalived的热备方式
      Keepalived采用VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通过共用的虚拟ip地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived时,漂移地址的实现不需要手动建立虚接口配置文件(如eth0:0)而是由Keepalived根据配置文件自动管理。

    (一主多从之间的优先级不能相同,否则会产生''脑裂"或"裂脑")

    Keepalived的安装与服务控制

    1.安装支持软件

    在编译安装Keepallved之前,必须先安装内核开发包kernel-devel,以及openss1一devel、popt-devel等支持库。除此之外,在LVS群集环境中应用时,也需要用到rpvsadm管理工具。

    [root@Keepalived ~]# yum -y install kernel-devel openssl-devel popt-devel
    [root@Keepalived ~]# yum -y install ipvsadm

    2.编译安装keepalived

    [root@Keepalived ~]# tar zxvf keepalived-1.2.13.tar.gz -C /usr/src/
    [root@Keepalived ~]# cd /usr/src/keepalived-1.2.13/
    [root@Keepalived keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/
    [root@Keepalived keepalived-1.2.13]# make 
    [root@Keepalived keepalived-1.2.13]# make install

    只有使用LVS时才需要参数 --with-kernel-dir

    3.使用Keepalived服务

    [root@Keepalived ~]# ls -1 /etc/init.d/keepalived
    -rwxr-xr-x 1 root root 1288 11月 8 16:23  /etc/init.d/keepalived
    [root@Keepalived ~]# chkconfig --add keepalived
    [root@Keepalived ~]# chkconfig keepalived on

    配置文件:

      Keepalived服务的配置目录位于/etc/Keepalived/。其中Keepalived.conf是主配置文件;另外包括一个子目录samples/,提供了许多配置样例参考。在Keepalived的配置文件中,使用“global_defs {...}"区段指定全局参数,使用“vrrp_instance 实例名称 {...}"区段指定VRRR热备参数,注释文字以“!”符号开头。
      在同一个Keepalived热备组内,所有服务器的Keepalived配置文件基本相同,包括路由器名称,虚拟路由器的ID号,认证信息,漂移地址,心跳频率等。不同之处主要在于路由器名称热备状态,优先级。

    • 路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称;
    • 热备状态(state):至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为备用服务器;
    • 优先级(priority):数值越大则取得VIP控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺VIP控制权时发生冲突;
    !全局配置
    global_defs {
        router_id LVS_HA_R1    //主调度器的名称
    }
    !虚拟实例配置
    vrrp_instance VI_1 {
        state MASTER           //主调度器的热备状态(MASTER/BACKUP)
        interface eth0       //承载VIP地址的物理接口
        virtual_router_id 51   //虚拟路由器的ID号,每个热备组保持一致
        priority 100           //主调度器的优先级
        advert_int 1       //通告间隔秒数(心跳频率)
        authentication {       //主、从热备认证信息(每个热备组保持一致)
            auth_type PASS       //认证类型
            auth_pass 1111       //密码子串
        }
        virtual_ipaddress {
            172.16.1.130       //指定集群VIP地址,可以有多个
        }
    }
    
    !Web服务器池配置
    virtual_server 172.16.1.130 80 {               //虚拟服务器地址(VIP)、端口
        delay_loop 15                              //健康检查时间的间隔(秒)
        lb_algo rr                                 //调度算法(轮询(rr))
        lb_kind DR                                 //群集工作模式,(DR/NAT)
        persistence 60                             //连接保持时间(秒
        protocol TCP                               //应用服务采用的是TCP协议
        real_server 172.16.1.131 80 {              //第一个Web节点的地址、端口
            weight 1                               //节点权重
            TCP_CHECK {                            //健康检查方式
                    connect_port  80               //检查的目标端口
                    connect_timeout  3             //连接超时(秒)
                    nb_get_retry  3                //重试次数
                    delay_before_retry  4          //重试间隔(秒)
                }
        }
        real_server 172.16.1.132 80 {              //第二个Web节点的地址、端口
            ......//省略部分信息
        }
         real_server 172.16.1.133 80 {             //第三个Web节点的地址、端口
            ......//省略部分信息
        }
         real_server 172.16.1.134 80 {             //第四个Web节点的地址、端口
            ......//省略部分信息
        }
    }
    keepalived.conf

    Keepalived+LVS(NAT模式)

    不需要配置LVS,因为keepalived去调用LVS内核模块

    1.配置IP

    略,Web服务器和Client客户端需要指定网关,都为VIP地址

    2.配置Keepalived服务器(主-从)

     1)调整响应参数

    [root@Keepalived ~]# vim /etc/sysctl.conf 
    修改:
    net.ipv4.ip_forward = 1
    添加:
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.eth0.send_redirects = 0
    [root@Keepalived ~]# sysctl -p

     2)安装Keepalived软件与ipvsadm管理工具

    [root@Keepalived ~]# yum -y install ipvsadm
    [root@Keepalived ~]# yum -y install kernel-devel openssl-devel popt-devel
    [root@Keepalived ~]# tar zxvf keepalived-1.2.13.tar.gz -C /usr/src/
    [root@Keepalived ~]# cd /usr/src/keepalived-1.2.13/
    [root@Keepalived keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/
    [root@Keepalived keepalived-1.2.13]# make 
    [root@Keepalived keepalived-1.2.13]# make install
    [root@Keepalived ~]# chkconfig --add keepalived
    [root@Keepalived ~]# chkconfig keepalived on

     3)配置Keepalived

    (1)全局配置、热备配置

    [root@Keepalived ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
    [root@Keepalived ~]# vim  /etc/keepalived/keepalived.conf
    global_defs {
       router_id LVS_MSATER_1        //主调度器的名称
    }
    
    vrrp_instance VI_1 {            //第一个实例的配置(VIP:1.1.1.1)
        state MASTER            //主调度器的热备状态
        interface eth0            //本网段提供服务的网卡设备名称
        virtual_router_id 51
        priority 100            //主调度器的优先级
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            1.1.1.1                //VIP地址配置
        }
    }
    
    vrrp_instance VI_1 {            //第二个实例的配置(VIP:192.168.10.1)
        state MASTER
        interface eth1
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.10.1
        }
    }
    Master
    ! Configuration File for keepalived
    
    global_defs {
       router_id LVS_Savle_1        //修改
    }
    
    vrrp_instance VI_1 {
        state BACKUP            //修改
        interface eth0
        virtual_router_id 51
        priority 90                //修改
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
        1.1.1.1
        }
    }
    
    vrrp_instance VI_1 {
        state BACKUP            //修改
        interface eth2
        virtual_router_id 51
        priority 90                //修改
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.10.1
        }
    }
    Savle

     (2)Web服务器池配置

    virtual_server 1.1.1.1 80 {
        delay_loop 15
        lb_algo rr
        lb_kind NAT
        protocol TCP
        real_server 192.168.10.100 80 {
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
            }
        }
        real_server 192.168.10.200 80 {
            weight 1
        TCP_CHECK {
            connect_port 80
                connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
           }
        }    
    }
    Master--Savle

     使用ip工具可以查看漂移IP(主)

    [root@Keepalived ~]# ip a
    ......
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:85:d4:5c brd ff:ff:ff:ff:ff:ff
        inet 1.1.1.10/8 brd 1.255.255.255 scope global eth0
        inet 1.1.1.1/32 scope global eth0
        inet6 fe80::20c:29ff:fe85:d45c/64 scope link 
           valid_lft forever preferred_lft forever3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:85:d4:70 brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.10/24 brd 192.168.10.255 scope global eth2
        inet 192.168.10.1/32 scope global eth2
        inet6 fe80::20c:29ff:fe85:d470/64 scope link 
           valid_lft forever preferred_lft forever

    5)配置Web节点服务器(各Web服务器配置相同)

    安装httpd服务,创建测试页面,并启动httpd服务

    [root@Web1 ~]#echo "LVS test 1" > /var/www/html/index.html            //第一个web服务器内容
    [root@Web2 ~]#echo "LVS test 2" > /var/www/html/index.html            //第二个web服务器内容

     Keepalived+LVS(DR模式)

     1.配置IP地址

    2.配置Keeplives服务器(主--从)

    1)调整响应参数

    [root@Keepalived ~]# vim /etc/sysctl.conf 
    添加:
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.eth0.send_redirects = 0
    [root@Keepalived ~]# sysctl -p

    2)安装Keepalived软件与ipvsadm管理工具

    [root@Keepalived ~]# yum -y install ipvsadm
    [root@Keepalived ~]# yum -y install kernel-devel openssl-devel popt-devel
    [root@Keepalived ~]# tar zxvf keepalived-1.2.13.tar.gz -C /usr/src/
    [root@Keepalived ~]# cd /usr/src/keepalived-1.2.13/
    [root@Keepalived keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/
    [root@Keepalived keepalived-1.2.13]# make 
    [root@Keepalived keepalived-1.2.13]# make install
    [root@Keepalived ~]# chkconfig --add keepalived
    [root@Keepalived ~]# chkconfig keepalived on

    3)配置Keepalived

    (1)全局配置、热备配置

    [root@Keepalived ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
    [root@Keepalived ~]# vim  /etc/keepalived/keepalived.conf
    global_defs {
       router_id LVS_MSATER_1        //主调度器的名称
    }
    
    vrrp_instance VI_1 {            //第一个实例的配置(VIP:1.1.1.1)
        state MASTER            //主调度器的热备状态
        interface eth0            //本网段提供服务的网卡设备名称
        virtual_router_id 51
        priority 100            //主调度器的优先级
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            1.1.1.1                //VIP地址配置
        }
    }
    Master
    global_defs {
       router_id LVS_Savle_1        //主调度器的名称
    }
    
    vrrp_instance VI_1 {            //第一个实例的配置(VIP:1.1.1.1)
        state BACKUP            //主调度器的热备状态
        interface eth0            //本网段提供服务的网卡设备名称
        virtual_router_id 51
        priority 90            //主调度器的优先级
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            1.1.1.1                //VIP地址配置
        }
    }
    Savle

     (2)Web服务器池配置

    virtual_server 1.1.1.1 80 {
        delay_loop 15
        lb_algo rr
        lb_kind DR        //调整模式(DR)
        protocol TCP
        real_server 1.1.1.100 80 {        //Web主机的地址
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
            }
        }
        real_server 1.1.1.200 80 {
            weight 1
        TCP_CHECK {
            connect_port 80
                connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
           }
        }    
    }
    Master-Savel
    [root@Keepalived ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:85:d4:5c brd ff:ff:ff:ff:ff:ff
        inet 1.1.1.10/8 brd 1.255.255.255 scope global eth0
        inet 1.1.1.1/32 scope global eth0
        inet6 fe80::20c:29ff:fe85:d45c/64 scope link 
           valid_lft forever preferred_lft forever

    3.配置Web节点服务器

    1)设置VIP

    [root@Web ~]# cd /etc/sysconfig/network-scripts/
    [root@Web network-scripts]# cp ifcfg-lo ifcfg-lo:0
    [root@Web network-scripts]# vim ifcfg-lo:0
    修改为:
    DEVICE=lo:0
    IPADDR=1.1.1.1
    NETMASK=255.255.255.255
    ONBOOT=yes        
    [root@Web network-scripts]# service network reload
    [root@Web ~]# route add -host 1.1.1.1 dev lo:0        //添加路由
    [root@Web ~]# echo "route add -host 1.1.1.1 dev lo:0" >> /etc/rc.local 

    2)调整/proc参数(使用单播访问,提高相应速度)

    [root@Web ]# vim /etc/sysctl.conf
    添加:
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.default.arp_ignore = 1
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.lo.arp_ignore = 1
    net.ipv4.conf.lo.arp_announce = 2
    [root@localhost ]# sysctl -p

    3)配置Web节点服务器(各Web服务器配置相同)

    安装httpd服务,创建测试页面,并启动httpd服务

    [root@Web1 ~]#echo "LVS test 1" > /var/www/html/index.html            //第一个web服务器内容
    [root@Web2 ~]#echo "LVS test 2" > /var/www/html/index.html            //第二个web服务器内容
  • 相关阅读:
    安全SECUERITY单词SECUERITY证券
    证券secuerity英语secuerity安全
    单词diamaund钻石diamaund英文
    英文DIAMAUND钻石DIAMAUND词汇
    英语insuraunce保险insuraunce单词
    英文INSURAUNCE保险INSURAUNCE词汇
    python关于 微型微服务框架bottle实践
    用python登录12306 并保存cookie
    SpringMVC 之 上传文件
    JAVA I/O系统 Thinking in Java 之 File类
  • 原文地址:https://www.cnblogs.com/zhichaoma/p/7620443.html
Copyright © 2011-2022 走看看