Linux(企业级)——负载均衡&流量调度

Linux(企业级)—— 负载均衡&流量调度

  在企业级服务器运维中,这是很重要的一环。也与当前的企业运营息息相关。

1. LVS(4层)

LVS可以避免DNS更新慢,算法单一以及无法防御攻击。
LVS 可以工作在不同的调度算法下,并且有不同的转发模式,其速度:DR>Tun>NAT>fullNAT。

  • DR 模式下,轮转转发算法的配置示例。
     调度端:
     首先安装ipvsadm模块,配置RS池,以及调度算法等
    在这里插入图片描述
    配置VIP地址:172.25.52.100

    服务端RS:
    安装arptables,配置VIP地址并且屏蔽RS上的ARP请求与回复。

[root@server2 ~]# ip addr add 172.25.52.100/32 dev eth0
[root@server2 ~]# systemctl restart network
[root@server2 ~]# arptables -A INPUT -d 172.25.52.100 -j DROP
[root@server2 ~]# arptables -A OUTPUT -s 172.25.52.100 -j mangle --mangle-ip-s 172.25.52.2

在这里插入图片描述
在这里插入图片描述
 开启apache,修改两个RS的发布页面,以区别访问对象。

[root@server2 ~]# echo server2 > /var/www/html/index.html
[root@server2 ~]# systemctl restart httpd

 server3的设置同server2。
测试:
 在远程主机访问VIP;

在这里插入图片描述

2. Keepalive

调度端配备份高可用,服务端进行掉线检测;

  • 服务端进行掉线检测
    调度端:
    安装keepalived,取消VIP 设置,清空ipvsadm设置;
    配置keepalived:
[root@server1 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
	root@localhost
   }
   notification_email_from keepalived@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.52.100
    }
}

virtual_server 172.25.52.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 172.25.52.2 80 {
        weight 1
        TCP_CHECK {       
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.52.3 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

 服务端设置与上节相同。
测试:
  在远端访问VIP,查看响应RS,手动关闭某个RS ,查看LVS策略以及响应的RS。
  当RS工作策略有变动时,调度端可以收到RS上下线信息:
在这里插入图片描述 查看LVS策略:
在这里插入图片描述 手动关闭server2的httpd服务,重新查看Lvs策略,并在远端访问:
在这里插入图片描述在这里插入图片描述
  此时流量全部被调度至server2
 重新开启server2的httpd服务,重新查看Lvs策略,并在远端访问:

在这里插入图片描述
  此时流量重新被均衡分配。

  • 调度端配备份高可用(调度端备份)
    在辅助调度端配置keepalive,基本与主调度相同,区别如下:

在这里插入图片描述
当主配置调度掉线时,副配置调度上线:
在这里插入图片描述
主调度重新上线时:
在这里插入图片描述

3. Haproxy(7层)

反向代理,访问haproxy时会定向由调度端访问后端的资源,支持端口映射。
roundrobin :均衡轮询调度 支持权重
source : 根据来源IP进行调度
等等
支持制定策略调度,如访问图片定向至指定后端等
安装haproxy
配置系统限制:
在这里插入图片描述编写配置文件,指定访问文件夹与图片定向至server3,开启后端日志监控 ,读写分离 等:

# Global settings
#---------------------------------------------------------------------
global

    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
	stats uri /status #后端检测页面
	stats auth admin:abc123	#账号密码认证
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80	#指定acl规则 ,访问指定格式至static 
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js
	
	acl list src 172.25.52.250 #设定250的策略族组
    #block if list	#拒绝list访问
    #errorloc 403 http://www.baidu.com #403错误重定向
    #redirect location http://www.baidu.com if list #list重定向至百度,如果没有判断则所有访问都重定向
	
	####### 读写分离,网页存储在server2 上传数据存储在server3
	acl List method PUT		#检测put方法
    acl List method POST	#检测post方法
    use_backend static          if List	#将上传资料定向至static表

    use_backend static          if url_static 
    default_backend             app

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 172.25.52.3:80 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin	#后台使用 轮询调度
    server  app1 172.25.52.2:80 check weight 2 #表示权重为2
    server  app2 172.25.52.3:80 check	#默认权重为1
    server  backup  172.25.52.1:8080 backup #调度器的8080端口设置为备份主机

测试:
访问后台监控界面
在这里插入图片描述
测试调度优先级:
在这里插入图片描述
测试访问路径调度:
在这里插入图片描述在server2与3上安装php,并且添加上传文件的php文件:
在这里插入图片描述server3作为存储数据的设备,不创建index.php
在这里插入图片描述
在远端访问上传页面:
在这里插入图片描述上传图片,成功:
在这里插入图片描述数据存储在server3,server2对应目录为空:
在这里插入图片描述在这里插入图片描述

4. PCS

yum install -y pacemaker pcs psmisc policycoreutils-python

scp  /etc/yum.repos.d/dvd.repo root@172.25.52.4:/etc/yum.repos.d/dvd.repo
ssh-keygen 
ssh-copy-id server4

systemctl enable --now pcsd.service
ssh server4 systemctl enable --now pcsd.service

echo westos | passwd --stdin  hacluster
ssh server4 'echo westos | passwd --stdin  hacluster'

pcs cluster auth server1 server4
pcs cluster setup --name mycluster server1 server4
pcs cluster start --all
pcs cluster enable --all
pcs property set stonith-enabled=false 

pcs resource create VIP ocf:heartbeat:IPaddr2 ip=172.25.52.100 op monitor interval=30s
pcs resource create haproxy systemd:haproxy op monitor interval=30s
pcs resource group add Group vip haproxy

当VIP与haproxy都运行在server1上时,访问调度后台:

在这里插入图片描述
在这里插入图片描述令server1 standby,刷新页面

在这里插入图片描述在这里插入图片描述刷新管理页面,发现pid发生变化,证明代理服务器已经变动。
在这里插入图片描述

5. fence

真机安装:

fence-virtd-0.4.0-9.el8.x86_64
fence-virtd-multicast-0.4.0-9.el8.x86_64
fence-virtd-libvirt-0.4.0-9.el8.x86_64

虚拟机调度端安装:

fence_virt

在调度端 配置fence

[root@server1 ~]# yum install -y fence-virt #安装fence客户端
[root@server1 ~]# ssh server4 yum install -y fence-virt
[root@server1 ~]# mkdir /etc/cluster #创建密钥文件夹
[root@server1 ~]# ssh server4 mkdir /etc/cluster
[root@server1 ~]#p cs property set stonith-enabled=true #开启stonith
# 创建fence服务 名为vmfence
[root@server1 ~]# pcs stonith create vmfence fence_xvm  [root@server1 ~]# pcmk_host_map="server1:server1;server4:server4" op monitor interval=60s
[root@server1 ~]# crm_verify -LV	#检查配置 
[root@server1 ~]# pcs status

在这里插入图片描述
server4 无响应之后fence使其强制重新启动,查看pcs 状态:
在这里插入图片描述
在这里插入图片描述

关闭pcs:在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值