Linux企业实战

Stella981
• 阅读 469

用LVS实现负载均衡

实现步骤:

    #若在虚拟环境中需执行此步骤创建两个新的虚拟机,VMWARE可忽略此步骤
     
   真实主机:
              cd /var/lib/libvirt/images/
          ls
          qemu-img create -f qcow2 -b rhel7.6.qcow2 server3
          qemu-img create -f qcow2 -b rhel7.6.qcow2 server4


server1:
      pcs cluster disable --all
      pcs cluster stop --all
      systemctl status pcsd
      systemctl disable --now pcsd
      ssh server2 disable --now pcsd
      ssh server2 systemctl disable --now pcsd

Linux企业实战

  server3:
          hostnamectl set-hostname server3
          cd /etc/yum.repos.d/
          vim dvd.repo
          yum install httpd
          systemctl enable --now httpd
          systemctl start httpd
          cd /var/www/html/
          echo vm3> index.html
          ip addr add 172.25.19.100/24 dev eth0
          yum install -y arptables
          arptables -A INPUT -d 172.25.19.100 -j DROP
          arptables -A OUTPUT -s 172.25.19.100 -j mangle --mangle-ip-s 172.25.19.3

Linux企业实战

   server4:
          hostnamectl set-hostname server4
          cd /etc/yum.repos.d/
          vim dvd.repo
          yum install httpd
          systemctl enable --now httpd
          systemctl start httpd
          cd /var/www/html/
          echo vm3> index.html
          ip addr add 172.25.19.100/24 dev eth0
          yum install -y arptables
          arptables -A INPUT -d 172.25.19.100 -j DROP
          arptables -A OUTPUT -s 172.25.19.100 -j mangle --mangle-ip-s 172.25.19.4

Linux企业实战

 server2:
        curl server3
        curl server4
        yum install ipvsadm -y
        ip addr add 172.25.19.100/24 dev eth0
        ipvsadm -A -t 172.25.19.100:80 -s rr
        ipvsadm -a -t 172.25.19.100:80 -r 172.25.19.3:80 -g
        ipvsadm -a -t 172.25.19.100:80 -r 172.25.19.4:80 -g
        ipvsadm -ln

Linux企业实战
Linux企业实战

    真实主机:
          curl 172.25.19.100

负载均衡(轮询机制)实现
Linux企业实战

LVS+keepalived实现负载均衡健康监测

实验目的

上个实验中实现了负载均衡。本实验中我们将结合keepalived实现负载均衡高级群的健康监测,即在一真实主机的apache关闭后,主机可以监测到,并不再访问这台关闭apache的主机。

实验环境

五台虚拟机:home为主机,server1、server2为VS调度,server3、server4为RS真实主机。

实验步骤

1.环境搭建

server1、server2:   


  ipvsadm -C            清除IPVS中的IP,因为IPVS的配置会与keepalived冲突
   ipvsadm -ln
   yum install keepalived -y
   ip addr del 172.25.19.100/24 dev eth0
   vim /etc/keepalived/keepalived.conf   编写此文件相当于用配置文件的方式实现负载均衡
        server1 keepalived.conf:


 ! Configuration File for keepalived    
global_defs {
    notification_email {
      root@localhost
    }
    notification_email_from keepalived@localhost
    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 51
     priority 100
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         172.25.19.100
     }
 }
  
virtual_server 172.25.19.100 80 {
     delay_loop 6
     lb_algo rr
     lb_kind DR
     #persistence_timeout 50
     protocol TCP
        real_server 172.25.19.3 80 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             nb_get_retry 3
             delay_before_retry 3
         }
     }
        real_server 172.25.19.4 80 {
         weight 1
         TCP_CHECK {
             connect_timeout 3
             nb_get_retry 3
             delay_before_retry 3
         }
     }
 }


   server2 keepalived.conf:
    ! Configuration File for keepalived
         global_defs {
       notification_email {
         root@localhost
       }
       notification_email_from keepalived@localhost
       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 BACKUP
        interface eth0
        virtual_router_id 51
        priority 50
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            172.25.19.100
        }
    }
         virtual_server 172.25.19.100 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        #persistence_timeout 50
        protocol TCP
     
   real_server 172.25.19.3 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
            real_server 172.25.19.4 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }


 systemctl restart keepalived.service 
 tail -f /var/log/messages    
 ipvsadm -ln      执行此命令后发现ip已配置完毕

Linux企业实战

2.健康检测

1)RS真实主机健康检测

在server3中 关闭httpd服务
 
systemctl stop httpd

此时在真实主机中执行

curl 172.25.19.100

发现主机已知晓3的服务关闭,并且主机策略已不存在server3

Linux企业实战
Linux企业实战

并发送邮件给了server1、server2
Linux企业实战

再开启server3中的httpd,并在主机中检测,发现已恢复正常

Linux企业实战

2)DS健康检测

关闭server1中的keepalived服务
 
[root@server1 ~]# systemctl stop keepalived.service 

此时在server2中:
 
tail -f /var/log/messages
 
发现server2已接管server1

在主机中探测RS发现不收任何影响,即keepalived解决了DS的单点故障

Linux企业实战

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这