博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
部署LVS-DR + keepalived 高可用群集
阅读量:6832 次
发布时间:2019-06-26

本文共 6207 字,大约阅读时间需要 20 分钟。

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

  • 实验需求

    部署LVS-DR + 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             #备份服务器是BACKUPinterface ens33            #承载VIP的物理接口ens33virtual_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 1TCP_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的测试页面为成功)

部署LVS-DR + keepalived 高可用群集部署LVS-DR + keepalived 高可用群集

转载于:https://blog.51cto.com/13630803/2131530

你可能感兴趣的文章
Windows正在使用无法停止通用卷怎么办
查看>>
POJ3255 Roadblocks 【次短路】
查看>>
angularjs的config和interceptor - session注入
查看>>
存取器描述
查看>>
Java map双括号初始化方式的问题
查看>>
Linux学习和ROS安装(1)
查看>>
Deepin-安装和卸载软件
查看>>
从B站、爱奇艺、映客的IPO上市,看国内视频公司的内容审核现状
查看>>
责任链模式的使用-Netty ChannelPipeline和Mina IoFilterChain分析
查看>>
Maven聚合项目在eclipse中显示没有层次
查看>>
关于83版射雕英雄传
查看>>
cURL: win64-ssl-sspi from Mirrors 64bit win7 version
查看>>
内核编译及模块相关命令使用
查看>>
Linux 内核同步机制
查看>>
292. Nim Game
查看>>
Nifi InvokeHttp processor
查看>>
return ||和return && 区别
查看>>
彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践
查看>>
如何成为一名程序员:我的道路
查看>>
NSDateFormatter
查看>>