LVS+Keepalived实验

实验前准备
主DR服务器:(ens33)192.168.188.11 ipvsadm、keepalived (ens33:0)192.168.188.188
备DR服务器:(ens33)192.168.188.12 ipvsadm、keepalived (ens33:0)192.168.188.188
Wbe服务器1:(ens33)192.168.188.13 (lo:0)192.168.188.188
Web服务器2:(ens33)192.168.188.14 (lo:0)192.168.188.188
客户端:192.168.188.1(本机Windows)

  1. 配置负载调度器(192.168.188.11、192.168.188.12)
    1. 关闭防火墙
      systemctl stop firewalld
      setenforce 0
    2. 安装ipvsadm和keepalived
      yum -y install ipvsadm keepalived
    3. 加载ipvs内核模块并查看
      modprobe ip_vs
      cat /proc/net/ip_vs
      LVS+Keepalived实验_第1张图片
    4. 配置keepalived
      cd /etc/keepalived
      备份配置文件
      cp keepalived.conf keepalived.conf.bak
      对配置文件进行修改
      vim keepalived.conf
      ! Configuration File for keepalived
      
      global_defs {
         notification_email {
           [email protected]
           [email protected]
           [email protected]
         }
         notification_email_from [email protected]
      # 邮件地址,指向本地就行
         smtp_server 127.0.0.1
         smtp_connect_timeout 30
      # 服务器(路由器)的名称,主备服务器名称不能一样,主写01,备写02
         router_id LVS_01
         vrrp_skip_check_adv_addr
      # 必须注释,意味着不再严格遵守VRRP协议,不注释VIP无法连接
         #vrrp_strict
      # 下面原本还有,删不删都行
      }
      
      vrrp_instance VI_1 {
      # 指定热备状态,MASTER代表主,BACKUP代表备
          state MASTER
      # 指定承载VIP地址的物理接口
          interface ens33
      # 指定虚拟路由器的ID号,主备必须一致
          virtual_router_id 10
      # 优先级,数字越大代表优先级越高,主写100,备写90
          priority 100
      # 心跳频率(通报间隔秒数)
          advert_int 1
      # 认证信息,主备必须一致
          authentication {
              auth_type PASS
              auth_pass abc123
          }
      # 集群的VIP地址,只有一个就只需要写一个
          virtual_ipaddress {
              192.168.188.188
          }
      }
      # 指定虚拟服务器地址(VIP)、端口
      virtual_server 192.168.188.188 80 {
      # 健康检查的间隔(秒)
          delay_loop 6
      # 指定调度算法,rr是轮询
          lb_algo rr
      # 指定集群工作模式,DR是直接路由
          lb_kind DR
      # 连接保持时间(秒)
          persistence_timeout 50
          protocol TCP
      
      # 指定第一个Web节点服务器的地址和端口
          real_server 192.168.188.13 80 {
      # 权重
              weight 1
      # 原本的16行内容可以直接删除
      # 添加以下健康检查的内容
              TCP_CHECK {
      # 检查的端口
                  connect_port 80
      # 连接超时时间(秒)
                  coonect_timeout 3
      # 重试次数
                  nb_get_retry 3
      # 重试间隔
                  delay_before_retry 3
              }
          }
      # 添加第二个Web节点服务器的地址和端口
          real_server 192.168.188.14 80 {
              weight
              TCP_CHECK {
                  connect_port 80
                  connect_timeout 3
                  nb_get_retry 3
                  delay_before_retry 3
              }
          }
      }
      # 底下一大堆内容可以全部删除

      LVS+Keepalived实验_第2张图片
      LVS+Keepalived实验_第3张图片
    5. 配置虚拟IP(VIP)
      vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
      DEVICE=ens33:0
      ONBOOT=yes
      IPADDR=192.168.188.188
      NETMASK=255.255.255.255

      LVS+Keepalived实验_第4张图片
      配置完重启网卡
      systemctl restart network
      打开虚拟网卡
      ifup ens33:0
      查看一下有没有生效
      ip addr
      LVS+Keepalived实验_第5张图片
      启动keepalived服务
      systemctl start keepalived
    6. 启动ipvsadm服务
      主DR服务器(192.168.188.11):
      备份
      ipvsadm-save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm

      配置规则
      先清空
      ipvsadm -C
      ipvsadm -A -t 192.168.188.188:80 -s rr
      ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.13:80 -g
      ipvsadm -a -t 192.168.188.188:80 -r 192.168.188.14:80 -g

      查看分发策略
      LVS+Keepalived实验_第6张图片
      备DR服务器(192.168.188.12):
      备份
      ipvsadm-save > /etc/sysconfig/ipvsadm
      systemctl start ipvsadm
      不需要配置策略,直接查看
      ipvsadm -ln,并没有策略
    7. 调整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

      LVS+Keepalived实验_第7张图片
      sysctl -p
  2. 配置Web节点服务器(192.168.188.13、192.168.188.14)
    1. 关闭防火墙
      systemctl stop firewalld
      setenforce 0
    2. 安装并启动httpd
      yum -y install httpd
      systemctl start httpd
      检查一下端口对不对
      netstat -anpt | grep :80,如果不是httpd就代表不对,端口被其他应用占用了,比如说nginx
    3. 准备两个页面
      Web服务器1(192.168.188.13):
      echo 'who are you?' > /var/www/html/index.html

      Web服务器2(192.168.188.14):
      echo 'i am dzd!' > /var/www/html/index.html
    4. 配置虚拟网卡(lo:0)
      vim /etc/sysconfig/network-scripts/ifcfg-lo:0
      DEVICE=lo:0
      ONBOOT=yes
      IPADDR=192.168.188.188
      NETMASK=255.255.255.255

      LVS+Keepalived实验_第8张图片
      重启网卡
      systemctl restart network
      启动虚拟网卡
      ifup lo:0
      查看
      ip addr
      LVS+Keepalived实验_第9张图片
      添加路由规则
      route add -host 192.168.10.180 dev lo:0
    5. 调整proc响应参数
      vim /etc/sysctl.conf
       
      net.ipv4.conf.lo.arp_ignore = 1
      net.ipv4.conf.lo.arp_announce = 2
      net.ipv4.conf.all.arp_ignore = 1
      net.ipv4.conf.all.arp_announce = 2

      LVS+Keepalived实验_第10张图片
      sysctl -p
      LVS+Keepalived实验_第11张图片
  3. 测试
    1. 我直接在本机的浏览器上进行的访问,在同一网段的虚拟机也可以测试
      在客户端上访问http://192.168.188.188/,多刷新几次,节点服务器上的内容都能显示,说明负载均衡没问题(不显示其他内容就隔几十秒再刷新)
      LVS+Keepalived实验_第12张图片
      LVS+Keepalived实验_第13张图片
    2. 在主DR服务器(192.168.188.11)上关掉Keepalived,模拟单点故障
      systemctl stop keepalived

      将客户端的浏览器缓存清空,再访问一次,依然能看到之前的内容,说明没有问题
      LVS+Keepalived实验_第14张图片
      LVS+Keepalived实验_第15张图片

你可能感兴趣的:(Linux,lvs,linux)