设为首页 收藏本站
查看: 1026|回复: 0

[经验分享] 部署LVS

[复制链接]

尚未签到

发表于 2018-12-28 10:49:40 | 显示全部楼层 |阅读模式

  • LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
  • 直接路由(DirectRouting);简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。
  •   Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

  •   实验需求




服务器主机
IP: ( VIP:192.168.200.100)
需要安装配置




NFS共享服务器
192.168.100.100
NFS共享存储


LVS主调度器
192.168.200.103
keepalived 、ipvsadm


LVS从调度器
192.168.200.104
keepalived 、ipvsadm


节点服务器1
192.168.200.101  /192.168.100.101
httpd 、NFS


节点服务器2
192.168.200.102 /192.168.100.102
httpd 、NFS


windows客户机
192.168.200.200
测试专用


  • LVS调度服务器
  •   主从调度服务器配置基本相同(不同之处已经标注)

    # yum install keepalived ipvsadm -y
  •   调整proc响应参数

    # vi /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.ens33.send_redirects = 0
    //proc响应关闭重定向功能//
    # sysctl -p    //立即生效
  •   配置虚拟VIP

    # cd /etc/sysconfig/network-scripts
    # cp ifcfg-ens33 ifcfg-ens33:0
    # vim  ifcfg-ens33:0
    DEVICE=ens33:0
    ONBOOT=yes
    IPADDR=192.168.200.100
    NETMASK=255.255.255.255
    # ifup ens33:0     //启用虚拟IP
  • 配置负载分配策略
  •   编写脚本方便管理

        # cd /etc/init.d/
    # vi dr.sh
    #!/bin/bash
    GW=192.168.200.1
    VIP=192.168.200.100
    RIP1=192.168.200.101
    RIP2=192.168.200.102
    case "$1" in
    start)
    /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm
    systemctl start ipvsadm
    /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
    /sbin/route add -host $VIP dev ens33:0
    /sbin/ipvsadm -A -t $VIP:80 -s rr
    /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
    /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
    echo "ipvsadm starting --------------------[ok]"
    ;;
    stop)
    /sbin/ipvsadm -C
    systemctl stop ipvsadm
    ifconfig ens33:0 down
    route del $VIP
    echo "ipvsamd stoped----------------------[ok]"
    ;;
    status)
    if [ ! -e /var/lock/subsys/ipvsadm ];then
    echo "ipvsadm stoped---------------"
    exit 1
    else
    echo "ipvsamd Runing ---------[ok]"
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|status}"
    exit 1
    esac
    exit 0
    # chmod +x dr.sh
    # service dr.sh start
  •   keepalived部署

    # vim /etc/keepalived/keepalived.conf
    global_defs {
    ...
    smtp_server 127.0.0.1           #指向本地
    router_id LVS_01   #指定名称,备份服务器不同名称
    ...            
    }
    vrrp_instance VI_1 {
    state MASTER             #备份服务器是BACKUP
    interface ens33            #承载VIP的物理接口ens33
    virtual_router_id 10     # 组号   备份服务器相同
    ...
    auth_pass abc123         #验证密码  备份服务器相同
    priority 100              #优先级  备份小于主
    ...
    virtual_ipaddress {
    192.168.200.100          //指定VIP地址
    }
    ...
    virtual_server 192.168.200.100 80 {
    lb_kind DR            //指定DR模式
    ...
    real_server 192.168.200.101 80 {        #web节点地址端口
    weight 1                         #节点的权重
    TCP_CHECK {               #健康检查方式
    connect_port 80         #添加端口
    connect_timeout 3    #连接超时
    nb_get_retry 3           #重试次数
    delay_before_retry 3   #重试间隔(秒)
    }   
    }   
    real_server 192.168.200.102 80 {
    weight 1
    TCP_CHECK {
    connect_port 80              #添加端口
    connect_timeout 3         
    nb_get_retry 3
    delay_before_retry 3
    }   
    }   
    }
    # systemctl start keepalived
    # ip addr show dev ens33:0         #查看虚拟网卡
    # systemctl stop firewalld.service   #关防火墙
    # setenforce 0
  • 配置NFS共享服务器
  •   考虑到数据的安全性,共享存储设备会放在内部的专用网络中

    # systemctl stop firewalld.service   //关防火墙
    # setenforce 0
    # yum install nfs-utils rpcbind -y   //安装NFS服务
    # systemctl start rpcbind.service
    # systemctl start nfs.service  
    # cd /opt | mkdir benet accp  //创建共享目录
    (在实际工作中 还是要共享挂载磁盘阵列raid的目录)
    # vi /etc/exports
    /usr/share *(ro,sync)
    /opt/benet 192.168.100.0/24(rw,sync)            
    /opt/accp 192.168.100.0/24(rw,sync)
    # exportfs -rv    //发布共享
  • 节点服务器配置
  • 两个节点服务器配置基本相同(不同之处已经标注)
  • 因为后面要做虚拟VIP  所以要挂载需要添加双网卡用来挂载NFS
  • 节点1服务器添加一个网卡 IP 设为192.168.100.101/24
  •   节点2服务器添加一个网卡 IP 设为192.168.100.102/24

    # yum install nfs-utils rpcbind -y   //安装NFS服务
    # mount.nfs 192.168.100.100:/opt/benet /var/www/html  //节点1挂载NFS
    # mount.nfs 192.168.100.100:/opt/accp /var/www/html  //节点2挂载NFS
    # yum install -y httpd   #安装httpd服务
    # systemctl start httpd.service      #启动httpd服务
    # systemctl stop firewalld.service    #关防火墙
    # setenforce 0
  • 建立一个测试页面
  •   两个节点服务器测试页面要不同

    # echo "this is 7.1 web" > /var/www/html/index.html    #节点服务器1
    # echo "this is 7.2 web" > /var/www/html/index.html    #节点服务器2 (方便查看测试结果)
  • 配置虚拟VIP
  •   作用:仅发送web响应数据包的源地址

    # cd /etc/sysconfig/network-scripts
    # cp ifcfg-lo ifcfg-lo:0
    # vim ifcfg-lo:0
    DEVICE=lo:0
    IPADDR=192.168.200.100
    NETMASK=255.255.255.255
    ONBOOT=yes
  • 编写服务脚本方便管理
  • 添加VIP本地访问路由
  •   调整proc响应

        # cd /etc/init.d/
    # vim web.sh
    #!/bin/bash
    VIP=192.168.200.100
    case "$1" in
    start)
    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
    /sbin/route add -host $VIP dev lo:0
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    sysctl -p >/dev/null 2>&1
    echo "RealServer Start OK "
    ;;
    stop)
    ifconfig lo:0 down
    route del $VIP /dev/null 2>&1
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    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/all/arp_announce
    echo "RealServer Stopd"
    ;;
    *)
    echo "Usage: $0 {start|stop}"
    exit 1
    esac
    exit 0
    # chmod +x web.sh
    # service web.sh start
    # ifup lo:0        //启用虚拟VIP
    # firefox "http://127.0.0.1/" &     //火狐查看测试页
    # service web.sh stop
    # service web.sh start    //(建议重启服务)
  •   测试

    在windows7  浏览器输入 虚拟VIP 192.168.200.100
    (多刷新几次可以看到节点1和节点2的测试页面为成功)





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656795-1-1.html 上篇帖子: keepalived配置高可用集群 下篇帖子: keepalived 的安装和配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表