keepalived+lvs-dr实现高可用负载均衡

keepalived+lvs-dr实现高可用负载均衡

实验拓扑

keepalived+lvs-dr实现高可用负载均衡

实验要求

  1. RS1与RS2地址为172.18.27.201/202
  2. VS1和VS2地址为172.18.27.103/200,VIP为172.18.27.254
  3. VS1和VS2实现lvs-dr负载均衡及高可用性,且vs为sorry sever。
  4. keepalived是单主模式。

    实验步骤

  5. 各个主机安装必备软件

    ##RS1与RS2安装httpd
    yum install -y httpd
    ##VS1与VS2安装keeplived和httpd
    yum instll keepalived httpd -y 
    ##所有主机同步时间
    ntpdate 2.cn.pool.ntp.org
  6. 配置RS1与RS2

    RS1配置,RS1的系统为centos7.2.
    ##配置测试页
    vim /var/www/html/index.html
    <h1/>R1:172.18.27.201</h1>
    ##启动httpd服务
    systemctl restart httpd.service
    ##配置VIP,并关闭内核中的arp_ignore,建议写脚本
    [root@localhost bin]#vi setparam.sh           
    #!/bin/bash
    vip="172.18.27.254"
    start (){
         ifconfig lo:0 $vip netmask 255.255.255.255 broadcast $vip up
         echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
         echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
         echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
         echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
         route add -host $vip dev lo:0
    }
    stop (){
         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
         ifconfig lo:0 down
    }
    case $1 in
    start)
         start
         echo "arp_announce set ok"
         echo "arp_ignore set ok"
         echo "lo:0 up"
         ;;
    stop)
         stop
         echo "arp_announce set ok"
         echo "arp_ignore set ok"
         echo "lo:0 down"
         ;;
    *)
         echo "$0 stop|start"
         ;;
    esac
    RS2配置,RS1的系统为centos7.2。
    ##配置测试页
    vim /var/www/html/index.html
    <h1/>R2:172.18.27.202</h1>
    ##启动httpd服务
    systemctl restart httpd.service
    ##用RS1的脚本配置RS2
  7. 配置VS1和VS2

    ##VS1配置,VS1系统是centos6.8。
    #配置sorry_server
    yum install -y httpd
    vim /var/www/html/index.html
    <h1/>sorry server 1:172.18.27.102</h1>
    启动服务
    srvice httpd start
    #配置keepalived
    vim /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived 
    global_defs { 
         notification_email {                            ##报警邮箱设置
                 root@localhost                            ##报警邮箱
         }
         notification_email_from keepalived@localhost    ##报警有哪个用户发送
         smtp_server 127.0.0.1                            ##报警邮箱服务器
         smtp_connect_timeout 30                            ##报警超时时间
         vrrp_mcast_group4 224.100.27.1                    ##通过组播地址,通告状态和优先级等信息
    }
    vrrp_instance VI_1 {                                    ##设置vrrp
     state MASTER                                        ##设置主从
     interface eth1                                        ##vrrp实例工作的网络接口
     virtual_router_id 51                                ##设置vrrp的id标识符,0-255
     priority 100                                        ##设定优先级
     advert_int 1                                        ##对外的通知时间间隔
     authentication {                                    ##设定认证方式
         auth_type PASS
         auth_pass 1111
     }
     track_interface {                                    ##设定监听网络接口
         eth1
     }   
     nopreempt                                            ##设定是否为抢占和非抢占模式
     virtual_ipaddress {                                    ##定义VIP
         172.18.27.254/16 dev eth1 label eth1:0            ##设定VIP在那个网络接口上
     }  
    }   
    virtual_server 172.18.27.254 80 {                        
         delay_loop 6                                    ##定义服务轮询间隔,多久检查RS的健康状态
         lb_algo wrr                                        ##设定VS的调用方法
         lb_kind DR                                        ##设定lvs的调用类型
         protocol TCP                                    ##设定工作的协议
         sorry_server 127.0.0.1 80                        ##设定sorry_server
         real_server 172.18.27.201 80 {                    ##设定RS
                 weight 1                                ##设定权重
                 HTTP_GET {                                ##设定RS健康状态查询方法
                         url {                            根据urlde状态码来确定RS的状态
                                 path /
                                 status_code 200
                         }
                 connect_timeout 1                        ##设定检查的超时时长
                 nb_get_retry 3                            ##设定检查的重试次数
                 delay_before_retry 1                    ##设定检查延迟时间
    
                 }
         }
         real_server 172.18.27.202 80 {
                 weight 2
                 HTTP_GET {
                         url {
                                 path /  
                                 status_code 200
                         }
                 connect_timeout 1
                 nb_get_retry 3
                 delay_before_retry 1    
    
                 }
         }
    } 
    #启动服务
    service keepalived start
    ##配置VS2,VS2的系统是centOS7.2.
    #配置sorry_server
    yum install -y httpd
    vim /var/www/html/index.html
    <h1/>sorry server 2:172.18.27.200</h1>
    启动服务
    systemctl start httpd
    #配置keepalived
    ! Configuration File for keepalived
    global_defs { 
         notification_email {
                 root@localhost
         }
         notification_email_from keepalived@localhost
         smtp_server 127.0.0.1
         smtp_connect_timeout 30
         vrrp_mcast_group4 224.100.27.1
    }
    vrrp_instance VI_1 {
     state BACKUP
     interface eno16777736
     virtual_router_id 51
     priority 100
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     track_interface {
         eno16777736
     }   
     nopreempt
     virtual_ipaddress {
         172.18.27.254/16 dev eno16777736 label eno16777736:0
     }
    }   
    virtual_server 172.18.27.254 80 {
         delay_loop 6
         lb_algo wrr
         lb_kind DR
         net_mask 255.255.0.0
         protocol TCP
         sorry_server 127.0.0.1 80
         real_server 172.18.27.201 80 {
                 weight 1
                 HTTP_GET {
                         url {
                                 path /
                                 status_code 200
                         }
                 connect_timeout 1
                 nb_get_retry 3
                 delay_before_retry 1
                 }
         }
         real_server 172.18.27.202 80 {
                 weight 2
                 HTTP_GET {
                         url {
                                 path /  
                                 status_code 200
                         }
                 connect_timeout 1
                 nb_get_retry 3
                 delay_before_retry 1                 
                 }
         }
    } 
    #启动服务
    systemctl start keeplived

    测试实验效果

    在client测试实验效果
    for i in {1..10};do curl 172.18.27.254 ;done
    正常状态的测试效果

    keepalived+lvs-dr实现高可用负载均衡

    一台RS挂掉之后

    keepalived+lvs-dr实现高可用负载均衡

    两台RS都挂掉

    keepalived+lvs-dr实现高可用负载均衡

原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/75627

(0)
oranixoranix
上一篇 2017-05-14 22:27
下一篇 2017-05-15 08:44

相关推荐

  • 安装配置NFS服务和挂载(Centos7)

    NFS简介 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 RPC(NFS服务需要依赖RPC服务,这个比较重要) 要想了解NFS,必然要提到R…

    Linux干货 2017-04-21
  • MYSQL数据库基础教程

    一、数据库介绍 1.数据库管理系统的产生背景 (1)数据时代的到来要求对数据进行有效和安全的管理 涉及的数据量大 数据不随程序的结束而消失 数据被多个应用程序共享 大数据时代的到来 (2)传统文件系统管理上的缺陷要求改变数据管理方式 编写应用程序不方便 数据冗余不可避免 应用程序依赖性 不支持对文件的并发访问 数据间联系弱 难以按用户视图表示数据 无安全控制…

    Linux干货 2017-10-05
  • linux文件权限管理和用户,组管理常用命令应用实例

    用户和组概念简述 用户一般指使用计算机的人,GNU/linux通过用户和用户组实现对计算机的文件访问和设备使用控制。 用户分类1.管理员root(类似皇帝,权力最大)2.普通用户:分为系统用户和普通登录用户。系统用户不登录,常用于发起一些进程提供服务,防止进程被劫持带来的风险,所以尽量减少以root身份发起进程对外提供服务。3.用户标识UID。管理员的UID…

    2017-10-05
  • Linux上的文件管理类命令

    N27-第二周作业

    2017-10-08
  • 配置LAMP (php-fpm模式)部署步骤

    配置LAMP (php-fpm模式)部署步骤 1.安装mariadb yum install maridb-server -y 1).配置server.cnf cp /etc/my.cnf.d/server.cnf{,.back} vim /etc/my.cnf.d/server.cnf ##mariadb服务器端配置文件 [mysqld] ##以下项是优化…

    Linux干货 2017-06-02
  • ps/top/htop/dstat命令的使用说明

    ps命令参数说明       ps命令是一种静态显示进程(process)状态的外部命令,获取的是某一个时间点的状态信息,其常用选项参数如下:         -A:all process信息    …

    Linux干货 2016-12-16