IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> LVS-DR模式实现负载均衡、心跳检测、高可用 -> 正文阅读

[系统运维]LVS-DR模式实现负载均衡、心跳检测、高可用

目录

一、DR模式实现负载均衡

ARP协议

二、LVS心跳检测——keepalived和高可用

?



一、DR模式实现负载均衡

server1为调度器,负载流量均衡(基于4层即传输层进行调度,调度算法有WRR/WLC等,传输协议为TCP/UDP),server2和server3为真实服务器

在server1中安装ipvsadm,用于管理LVS的策略规则,从而调度用户访问

yum install -y ipvsadm

添加一个对外访问的虚拟IP:192.168.122.100即 VIP,提供虚拟服务的ip地址,但最好是独立出来的IP,不要和原IP混用

ipvsadm -A 添加规则;-t tcp协议;-s 调度;rr 轮循

?server2和server3安装httpd服务,在http服务的默认发布文件index.html分别写入server2、server3并开启服务

yum install -y httpd

echo server2 > /var/www/html/index.html

systemctl start httpd

?此时在真机使用curl 172.25.7.2/3可以显示server的发布页面,但curl 172.25.33.100没有输出,这是因为LVS-DR集群类型要求,当用户向vip发起请求时,调度器和真实服务器上必须都要有vip,因此需要给server2和server3添加虚拟IP

此时curl 192.168.122.100,轮循访问

调度策略可用

ARP协议

ARP协议是将IP地址映射为MAC地址的协议,其在协议上使用ARP请求及ARP应答报文来实现

arp -d是删除ARP缓存列表的命令,可以删除所有的ARP缓存,也可以删除指定的ARP缓存此时使用arp -an可以查看本地ARP缓存的192.168.122.100对应的MAC地址为调度器server1的地址

?server1(调度器)

?本机

此时curl 192.168.122.100,只有server3,已经不轮循访问,说明此时客户端向vip发起请求时,并没有经过调度器而是直接到达了真实服务器

要想避免这种情况的发生,我们需要防止客户端直接访问真实服务器,所以我们需要禁掉设备的APR响应

在server2和server3上安装ARP防火墙arptables——用于管理内核中的ARP包过滤规则表

yum install -y arptables

?APR配置规则

arptable_filter 只有一个表 filter ,不指定 -t 表名时默认就是 filter 表
filter表有三个链,一个是INPUT,表示外面发进来的ARP包;另外一个是OUTPUT,表示本机发出的ARP包;第三个是FORWARD,转发ARP包
-A:向规则链中追加规则
-d:指定要匹配ARP包的目的IP地址
-j:指定满足添加的规则时执行的动作
-s:指定要匹配ARP包的源ip地址
-g:直连
-r:真实服务器地址

在server2/3上设定APR规则:
当数据包的目的地址是100时就丢弃该数据包,当从本机发送出的数据包IP是100时,mangle转换数据包源地址,伪装源地址IP为192.168.122.20/30

?当真机再次执行arp -d 删除指定的虚拟IP,ping 虚拟IP之后,得到192.168.122.100的MAC地址是server1的MAC地址,此时使用curl 192.168.122.100,可以论循访问

二、LVS心跳检测——keepalived和高可用

这样使用LVS会出现一个问题,当真实服务器宕机的时候,客户访问时当LVS匹配到宕机主机时客户端会报错,ipvsadm策略依然可以看到服务器存在,所以引入LVS高可用来解决这个问题

ipvsadm没有健康检测功能,后端服务是否正常需要通过keepalived来检测

新建一个server4

下载yum install -y ipvsadm

server1

yum install keepalived

yum install postfix mailx? 下载邮箱工具

修改配置文件

vim /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
        root@localhost  #邮箱设置
   }
   notification_email_from keepalived@localhost   #设置通知邮件,出了问题给谁发送邮件notification_email_from
   smtp_server 127.0.0.1   #回环
   smtp_connect_timeout 30    #超时时间   
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict               #注释vrrp_strict,这一参数功能是在出问题时抓取数据包
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
##主虚拟路由MASTER:向所有备用虚拟路由BACKUP发送“心跳包”,备用虚拟路由只负责接收,当备用虚拟路由接收不到时,priority优先级最高的备用虚拟路由代替MASTER提供虚拟服务,数字越高,优先级越高,所以MASTER优先级一定要大于虚拟路由id
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51     #虚拟路由id
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.7.100     
    }
}
#虚拟服务语句块:
virtual_server 192.168.122.100 80 {
    delay_loop 3          #每s/次健康检测
    lb_algo rr            #调度算法 
    lb_kind DR            
    #persistence_timeout 50    #持久连接,即在多长时间内DR会将所有连接请求持续调度给一个后端
    protocol TCP
#LVS集群策略设定,设定之后不需要手动设置VIP及ipvsadm设置的规则
    real_server 192.168.122.20 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            
    real_server 192.168.122.30 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/ #文件复制到server4中

更改server4中的配置文件 BACKUP 优先级低于server1

此时删掉server1上手动设置的虚拟ip172.25.33.100,ipvsadm -C清除设置的规则

systemctl start keepalived.service ##开启服务

?server3

systemctl stop httpd? #6s之后

server1调度器出现问题时

systemctl stop keepalived.service

server4

systemctl start keepalived.service

server4接管

server1恢复后重新接管

server1

server4

server1

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 14:27:52  更:2022-01-08 14:30:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:45:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码