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

[经验分享] LVS负载均衡之三:LVS

[复制链接]

尚未签到

发表于 2018-12-31 12:43:19 | 显示全部楼层 |阅读模式


  • 实现LVS的DR模式
      LVS的DR模式的原理详细介绍请看LVS负载均衡之一:LVS-NAT、LVS-DR模式的原理详细介绍这篇博文。

    一. 实验环境
  三台机器:


  •   Director节点:  (ens33 192.168.10.53  vip ens33:0 192.168.10.80)

  •   Real server1: (ens33 192.168.10.51 vip lo:0 192.168.10.80)

  • Real server2: (ens33 192.168.10.52 vip lo:0 192.168.10.80)

二. 安装和配置

1. 配置两个real server服务器
  (1) 配置虚拟IP地址(VIP)
  VIP地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器Director监听并分发)。因此使用虚接口lo:0来承载VIP地址。

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.10.80
NETMASK=255.255.255.255   #子网掩码必须全为1
ONBOOT=yes 1
ifup lo:0     #开启虚拟接口

(2)安装httpd,创建测试网页


#安装httpd
yum install httpd -y
#real server1创建测试网页
echo "Server 192.168.10.51" > /var/www/html/index.html
#real server2创建测试网页
echo "Server 192.168.10.52" > /var/www/html/index.html
  (3)启动httpd服务,关闭防火墙和安全性策略

#启动httpd服务
systemctl start httpd.service
systemctl enable httpd.service
#关闭防火墙和安全性策略
systemctl stop  firewalld.service
systemctl disable firewalld.service
setenforce 0
  (4)在两台real server上配置启动脚本

vim /etc/init.d/rs.sh
#!/bin/bash
VIP=192.168.10.80
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
  这里需要注意的是避免ARP通信紊乱,解决方案是:修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。


  •   arp_ignore=1表示系统只响应目的IP为本地IP的ARP请求。

  • arp_announce=2表示系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。
    (5)运行启动脚本
    chmod +x rs.sh
    service rs.sh start
      最后在本机上自测访问网站服务



    2. 配置Director server服务器
      (1)配置虚拟IP地址,以便响应群集访问

    cd /etc/sysconfig/network-scripts/
    cp ifcfg-ens33 ifcfg-ens33:0
    vim ifcfg-ens33:0
    DEVICE=ens33:0
    ONBOOT=yes
    IPADDR=192.168.10.80
    NETMASK=255.255.255.0
    ifup ens33:0

    (2)安装ipvsadm管理工具


    yum install ipvsadm -y  
      (3)开启路由功能

    vim /etc/sysctl.conf
    net.ipv4.ip_forward=1
    sysctl -p     #保存
      (4)调整/proc响应参数,关闭Linux内核重定向参数响应

    vim /etc/sysctl.conf
    net.ipv4.conf.all.send_redirects = 0  
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.ens33.send_redirects = 0
    sysctl -p #保存
      (5)配置Director启动脚本

    vim /etc/init.d/dr.sh
    #!/bin/bash
    GW=192.168.10.1
    VIP=192.168.10.80
    RIP1=192.168.10.51
    RIP2=192.168.10.52
    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
      (6)启动脚本,添加两个Real Server节点服务器

    chmod +x /etc/init.d/dr.sh
    service dr.sh start
      (7)关闭防火墙和安全策略

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    setenforce 0
    三.测试LVS群集
      用Windows客户端直接访问http://192.168.10.80/, 将能够看到由真实服务器提供的网页内容。

  第一次访问:

Real Server连接次数查看:

  刷新一次:

  Real Server连接次数查看:




  • LVS结合keepalive
  1.高可用群集(High Availability Cluster):以提高应用系统的可靠性、尽可能的减少中断时间为目标,确保服务的连续性,达到高可用(HA)容错效果。
  2.LVS可以实现负载均衡,但是不能够故障切换和健康检查,也就是当一个rs服务器出现故障时,LVS仍然会把请求转发给故障的rs服务器,这样就会导致请求无效。keepalive软件可以解决 LVS 单点故障的问题,能同时实现 LVS 的高可用性。这里以LVS-DR模式为例。

一.实验环境
  上述的LVS-DR搭建好web群集后,再添加一台备用的Director Server服务器,其配置同上。
  四台机器:


  • Keepalived1 + lvs1(Director1):192.168.10.53 (主)
  • Keepalived2 + lvs2(Director2):192.168.10.54  (从)
  • Real server1:192.168.10.51
  • Real server2:192.168.10.52
  • VIP: 192.168.10.80

二.安装配置
  在两个Director Server 节点服务器部署keepalived服务。
  (1)安装keepalive软件

yum install keepalived -y
  (2)主keepalived节点配置(lvs1)

#主节点( MASTER )配置文件
vim /etc/keepalived/keepalived.conf
global_defs {
...    #省略部分
smtp_server 127.0.0.1           #指向本地
router_id LVS_01               #指定名称,备份服务器不同名称
...    #省略部分         
}
vrrp_instance VI_1 {        #定义VRRP热备实例
state MASTER            #MASTER表示主调度器
interface ens33         #承载VIP地址的物理接口
virtual_router_id 51    #虚拟路由器的ID号,每个热备组保持一致
priority 100            #主调度器优先级
advert_int 1            #通告间隔秒数
authentication {        #认证信息
auth_type PASS      #认证类型
auth_pass 1111      #字码密串
}
virtual_ipaddress {     #指定群集VIP地址,也就是漂移地址
192.168.10.80
}
}
virtual_server 192.168.10.80 80 {  #虚拟服务器VIP地址
delay_loop 6                   #健康检查的间隔时间
lb_algo rr                     #轮询rr的调度算法
lb_kind DR                     #直接路由工作模式
persistence_timeout 0          #连接保持时间
protocol TCP                   #应用服务采用的是TCP协议
real_server 192.168.10.51 80 {  
#第一个web节点的服务器地址、端口
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80      
}
}
real_server 192.168.10.52 80 {  
#第二个web节点的服务器地址、端口
router_id LVS_01         weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

  (3)从keepalived节点配置(lvs2)
拷贝主节点的配置文件keepalived.conf,然后修改如下内容:

router_id LV ->  router_id LVS_02 #从调度器名称
state MASTER -> state BACKUP  #从调度器
priority 100 -> priority 90   #从调度器优先级
  (4)启动keepalive

#先主后从分别启动keepalive
systemctl start keepalived
三.测试 keepalived 的HA特性
  (1)虚拟IP地址漂移
  首先在master(lvs1)上执行命令 ip addr ,可以看到vip在master节点上的;

这时如果在master上执行 systemctl stop keepalived 命令,这时vip已经不在master上,在slave节点上执行 ip addr 命令可以看到 vip 已经正确漂到slave节点。

这时客户端去访问 http://192.168.10.80 访问依然正常。

  (2)连通性
  在客户机执行“ping 192.168.10.80 -t”,能够正常ping通。
禁用master(lvs1)的ens33网卡,发现还是能正常ping通。


  (3)web访问测试
  禁用master(lvs1)的ens33网卡,再次访问上述web服务,网页文档显示正常。







运维网声明 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-657963-1-1.html 上篇帖子: centos6.7 下篇帖子: lvs及lvs+keepalived负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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