zoukankan      html  css  js  c++  java
  • [Linux]-构建LVS-DR模式+Keepalived高可用群集

    Keepalived

    Keepalived是一款高可用软件,它的功能主要包括两方面:
    1)通过IP漂移,实现服务的高可用:服务器集群共享一个虚拟IP,同一时间只有一个服务器占有虚拟IP并对外提供服务,若该服务器不可用,则虚拟IP漂移至另一台服务器并对外提供服务;
    2)对LVS应用服务层的应用服务器集群进行状态监控:若应用服务器不可用,则keepalived将其从集群中摘除,若应用服务器恢复,则keepalived将其重新加入集群中。

    Keepalived可以单独使用,即通过IP漂移实现服务的高可用,也可以结合LVS使用,即一方面通过IP漂移实现LVS负载均衡层的高可用,另一方面实现LVS应用服务层的状态监控,如图所示:

     

    Keepalived

    的实现基于VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议),而VRRP是为了解决静态路由的高可用。

    安装步骤大纲

    客户端:1.1.1.245/8

    主LVS:1.1.1.2/8

    从LVS:1.1.1.3/8

    web服务器:1.1.1.5/8    lo : 1.1.1.1

    web服务器:1.1.1.6/8    lo :  1.1.1.1

    一、配置LVS服务器(主-从两台)
    配置IP地址
    调整响应参数(主从两台服务器都需要配置)

     [root@localhost ~]# vim /etc/sysctl.conf
    修改

    # Controls IP packet forwarding
    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@localhost ~]# sysctl -p

    安装并配置ipvsadm(主从配置一样)

    挂载光盘

     [root@localhost ~]# rpm -ihv /mnt/Packages/ipvsadm-1.26-2.el6.x86_64.rpm 

    [root@localhost ~]# rpm -ivh /media/CentOS_6.5_Final/Packages/ipvsadm-1.26-2.el6.x86_64.rpm 
    warning: /media/CentOS_6.5_Final/Packages/ipvsadm-1.26-2.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
    Preparing...                ########################################### [100%]
       1:ipvsadm                ########################################### [100%]

    随后启动ipvsadm服务

    service ipvsadm start

    添加为系统服务

    [root@localhost ~]# chkconfig --add ipvsadm
    [root@localhost ~]# chkconfig ipvsadm on

    配置Keepalived服务器(两台一样)

    先安装Keepalive服务的依赖包(yum),后安装Keepalived软件(本地光盘),主从都有

    yum步骤回顾

    rm -rf /etc/yum.repos.d/*
    vim /etc/yum.repo.d/yum.repo
    #        [yum]
             name=yum install
             baseurl=file:///mnt/
             enabled=1
             gpgcheck=0       

    依赖包安装

     yum -y install kernel-devel openssl-devel popt-devel

    Keepalived解压制定路径为  -C  /usr/src

    tar -zxvf keepalived-1.2.13.tar.gz -C /usr/src/
    cd /usr/src/keepalived-1.2.13/

    执行命令安装

    [root@localhost keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-
    dir=/usr/src/kernels/2.6.32-431.el6.x86_64 make && make install 

    [root@localhost ~]# /etc/init.d/keepalived start            #开启keepalived服务

    [root@localhost ~]# netstat -anp | grep keepalived     #查看进程

    [root@localhost keepalived-1.2.13]# netstat -anp | grep keepalived
    raw        0      0 0.0.0.0:112                 0.0.0.0:*                   7           43771/keepalived    
    raw        0      0 0.0.0.0:112                 0.0.0.0:*                   7           43771/keepalived    
    raw        0      0 0.0.0.0:255                 0.0.0.0:*                   7           43770/keepalived    
    raw        0      0 0.0.0.0:255                 0.0.0.0:*                   7           43770/keepalived    
    unix  2      [ ]         DGRAM                    65282  43768/keepalived    

    添加为系统服务就可以用service  keepalived  start | restart | stop 来进行操作

    chkconfig --add keepalived
    chkconfig keepalived on

    !----------------------------------------------------两台一样的操作到此为止--------------------------------------------------!

    Keepalived配置文件(主服务器)

    cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak          #备份一份,防止误操作

     打开      vim /etc/keepalived/keepalived.conf
    更改和删除(dd删除,1000dd删除一千行)

    global_defs {
       router_id R1     #这个路由器的名称
    }
    vrrp_instance VI_1 {     #定义VRRP热备实例
        state MASTER         #热备状态,MASTER表示是主机
        interface eth0       #承载VIP地址的物理接口
        virtual_router_id 1  #虚拟路由器的ID号,每个热备组保持在一组
        priority 100         #优先级,数值越大优先级越高
        advert_int 1         #通告间隔秒数(心跳频值)
        authentication {     #认证信息,热备组保持一致
            auth_type PASS   #认证类型
            auth_pass 1111   #密码字串
        }
        virtual_ipaddress {  #制定飘逸IP地址(VIP,可以有多个)
            1.1.1.1
        }
    }
    virtual_server 1.1.1.1 80 {
        delay_loop 15                #检查健康时间
        lb_algo rr                   #定义调度算法
        lb_kind DR                   #定义负载均衡群集的模式
        protocol TCP
        real_server 1.1.1.5 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.6 80 {     #指定的第二个WEB服务器地址
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
            }
        }
    }

     配置完后保存退出,使用  ip a  查看接口转发状态

    [root@localhost ~]# 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:0e:05:36 brd ff:ff:ff:ff:ff:ff
        inet 1.1.1.2/8 brd 1.255.255.255 scope global eth0
        inet 1.1.1.1/32 scope global eth0
        inet6 fe80::20c:29ff:fe0e:536/64 scope link 
           valid_lft forever preferred_lft forever

    Keepalived配置文件(从服务器)

    global_defs {
       router_id R2               #名称更变
    }
    vrrp_instance VI_1 {
        state BACKUP              #从服务器
        interface eth1            #我这个出去的网阿卡是eth1,一般是eth0
        virtual_router_id 1       #保持一组
        priority 99               #优先级要低于主服务器
        advert_int 1              !-----其余于主服务器保持一致------!
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            1.1.1.1
        }
    }
    virtual_server 1.1.1.1 80 {
        delay_loop 15
        lb_algo rr
        lb_kind DR
        protocol TCP
        real_server 1.1.1.5 80 {
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
            }
        }
        real_server 1.1.1.6 80 {
            weight 1
            TCP_CHECK {
                connect_port 80
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
            }
        }
    }

      重启keepalived服务,ip a 查看,没有1.1.1.1漂移IP地址,因为在主服务器上

    [root@localhost ~]# 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: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:45:59:3b brd ff:ff:ff:ff:ff:ff
        inet 1.1.1.3/8 brd 1.255.255.255 scope global eth1
        inet6 fe80::20c:29ff:fe45:593b/64 scope link 
           valid_lft forever preferred_lft forever

     配置Web服务器

     配置IP地址


    设置VIP*

    [root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0
    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
    DEVICE=lo:0
    IPADDR=1.1.1.1
    NETMASK=255.255.255.255
    ONBOOT=yes

    添加路由

    [root@localhost ~]# route add -host 1.1.1.1 dev lo:0

    添加到开机启动项,注意是追加    >>是追加   >是覆盖原有内容

    [root@localhost ~]# echo "route add -host 1.1.1.1 dev lo:0" >> /etc/rc.local 

    调整响应参数

    [root@localhost ~]# 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

     sysctl -p使其生效

    配置http服务

     Web 1

    vim /etc/www/html/index.html
    <h1>我觉得OK,这里是1</h1><br/>
    <br/>
    <h3>1111111111111111</h3>

     Web 2

    vim /etc/www/html/index.html
    <h1>我觉得OK,这里是2</h1><br/>
    <br/>
    <h3>2222222222222222</h3>

     添加为系统服务

    [root@localhost ~]# chkconfig --add httpd 
    [root@localhost ~]# chkconfig  httpd on

    客户机验证

     ping -t 1.1.1.1 会通,当主服务器断掉后会卡一下,延迟几秒,这个时候从服务器会代替主服务器的工作,服务器比开许多台VM的PC性能好很多。

    漂移IP会在两个keepalived服务器之间无缝切换,达到不间断提供服务的目的性。

    网页访问使用轮询rr算法切换

     

     完成,谢谢观看

    ---恢复内容结束---

  • 相关阅读:
    dede文章插入分页符不起作用,编辑器中出现分页符,导致文章显示不全
    dedecms 图集标签{dede:productimagelist} {dede:field name='imgurls'}&nbs
    dede织梦怎么修改description的字数
    dede 内容页文章标题显示不全的更改方法
    amazon company
    rapleaf
    nope
    数据库事务隔离级别与锁
    nosql=not only sql
    Lustre是开放源代码的集群文件系统
  • 原文地址:https://www.cnblogs.com/chenwz/p/7622967.html
Copyright © 2011-2022 走看看