群集负载均衡--LVS DR+keepalived部署 理论加实验

Keep概述:

Keepalived案例分析

●企业应用中,单台服务器承担应用存在单点故障的危险

●单点故障一旦发生,企业服务将发生中断,造成极大的危害
在这里插入图片描述

Keepalived工具介绍

●专为LVS和HA设计的一款健康检查工具

  • 支持故障自动切换( Failover)
  • 支持节点健康状态检查( Health Checking)
  • 官方网站http://www.keepalived.org
    在这里插入图片描述

Keepalived实现原理剖析

●Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能

●VRRP,虚拟路由冗余协议,是针对路由器的一种备份解决方案
在这里插入图片描述
●由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务

●每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态

●若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

配置Keepalived:

●Keepalived可实现多机热备,每个热备组可有多台服务器,最常用的就是双机热备

●双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器

●本次部署将实现基于web服务的双机热备
在这里插入图片描述

配置keepalived master服务器

●Keepalievd配置目录位于/etc/keepalievd/

●keepalievd.conf是主配置文件

  • global_defs{…}区段指定全局参数
  • vrrp_instance实例名称{…}区段指定VRRP热备参数
  • 注释文字以“!”符号开头
  • 目录samples/,提供了许多配置样例作为参考

●常用配置选项

  • router_id HA_TEST_R1: 本路由器(服务器)的名称
  • vrrp_instance VI_1:定义VRRP热备实例
  • state MASTER:热备状态,MASTER表示主服务器
  • interface ens33:承载VIP地址的物理接口
  • virtual_router_id 1:虚拟路由器的ID号,每个热备组保持一致
  • priority 100:优先级,数值越大优先级越高
  • advert_int 1:通告间隔秒数(心跳频率)
  • auth_type PASS:认证类型
  • auth_pass 123456:密码字串
  • virtual_ipaddress{vip}:指定漂移地址(VIP),可以有多个,多个漂移地址以逗号分隔

配置keepalived slave服务器

●Keepalived备份服务器的配置与master的配置有三个选项不同

  • router_id:设为自由名称
  • state:设为BACKUP
  • priority:值低于主服务器

●其他选项与master相同

Keepalived双机热备效果测试

●测试双机热备的效果

  • 主、备机均启用Web服务,内容相同
  • 先后禁用、启用主服务器的网卡,执行以下测试

●执行测试

  • 测试1:使用ping检测19216810.72的连通性
  • 测试2:访问htt:/192168.10.72,确认可用性及内容变化
  • 测试3:查看日志文件/var/log/messages中的变化

LVS DR+keepalived部署实验

实验环境

LVS01虚拟机:物理地址:192.168.100.110 ;VIP:192.168.100.10 安装keepalived和ipvsadm包
LVS02虚拟机:物理地址:192.168.100.120 ;VIP:192.168.100.10 安装keepalived和ipvsadm包
WEB1虚拟机:物理地址:192.168.100.130 ;VIP:192.168.100.10 安装httpd服务
WEB2虚拟机:物理地址:192.168.100.140 ;VIP:192.168.100.10 安装httpd服务
Win10客户端虚拟机:物理地址:192.168.100.20

推荐步骤

一.先在各服务器上将实验所需的工具包都进行安装
1.两台拟机lvs01和lvs02做DR调度都安装keepalived和ipvsadm工具包
Lvs01(这边举例lvs01)

[root@lvs01 ~]# yum -y install keepalived ipvsadm

在这里插入图片描述
2.两台web服务器安装apache服务
Web01(这边举一个例子):

[root@web01 ~]# yum -y install httpd

在这里插入图片描述
二.将虚拟机的网卡模式都选为仅主机模式,并进行配置
1.两台lvs虚拟机配置文件关闭重定向功能,这边举了lvs02的例子

[root@lvs02 ~]# systemctl stop firewalld.service
[root@lvs02 ~]# setenforce 0
[root@lvs02 ~]# vim /etc/sysctl.conf
...底行加入
net.ipv4.ip_forward=1        ##开启转发功能
net.ipv4.conf.all.send_redirects = 0               ##下面3行关闭proc的重定向功能
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@lvs02 ~]# sysctl -p                  ##配置让其及时生效

在这里插入图片描述
2.配置lv02的VIP地址和物理网卡地址
VIP地址配置

[root@lvs02 ~]# cd /etc/sysconfig/network-scripts/
[root@lvs02 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0
[root@lvs02 network-scripts]# vim ifcfg-ens33:0
DEVICE=ens33:0      ##名称
ONBOOT=yes          ##是否开启
IPADDR=192.168.100.10    ##VIP地址
NETMASK=255.255.255.0    ##子网掩码

物理网卡地址配置:

[root@lvs02 network-scripts]# vim ifcfg-ens33

在这里插入图片描述
3.通过脚本配置DR模式

[root@lvs02 network-scripts]# cd /etc/init.d/    ##进入init.d的目录下方便service管理
root@lvs02 init.d]# vim dr.sh                   ##创建一个dr脚本  
#!/bin/bash   
GW=192.168.100.1
VIP=192.168.100.10   ##虚拟ip
RIP1=192.168.100.130   ##真实web服务器ip
RIP2=192.168.100.140
case "$1" in
start)
                /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm  ##保存配置
                systemctl start ipvsadm  ##启动服务
                /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.0 broadcast $VIP up  
##设置ens33:0地址,广播地址,子网掩码,并开启
                /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 ##指定真实服务器,dr模式
                /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
[root@lvs02 init.d]# chmod +x dr.sh     ##增加执行权限
[root@lvs02 network-scripts]# systemctl restart network             ##重启网卡

在这里插入图片描述

[root@lvs02 network-scripts]# service dr.sh start    ##开启dr模式

在这里插入图片描述
同理lvs01也是这样的配置
网卡信息:
在这里插入图片描述
在这里插入图片描述
三.配置两台web服务器的DR模式
1.配置web01的物理IP地址和VIP地址

[root@web01 ~]# setenforce 0
[root@web01 ~]# systemctl stop firewalld.service 
[root@web01 ~]# cd /etc/sysconfig/network-scripts/
[root@web01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0 
[root@web01 network-scripts]# vim ifcfg-ens33:0    ##配置web1的VIP地址
DEVICE=lo:0
ONBOOT=yes          
IPADDR=192.168.100.10    
NETMASK=255.255.255.255  
[root@web01 network-scripts]# vim ifcfg-ens33

在这里插入图片描述
2.配置web01的dr模式的启动脚本

[root@web01 network-scripts]# cd /etc/init.d/
[root@web01 init.d]# vim web.sh    ##配置抑制ARP响应的脚本
#!/bin/bash
VIP=192.168.100.10        ##虚拟地址
  case "$1" in
  start)
        ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
        /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
[root@web01 init.d]# chmod +x web.sh          ##增加权限
[root@web01 init.d]# service network restart        ##重启网卡

在这里插入图片描述
3.配置web01的网页页面信息

[root@web01 init.d]# cd /var/www/html/        ##切换到页面目录下
[root@web01 html]# vim index.html             ##创建一个
<h1>this is test01</h1>                        ##写入页面信息
[root@web01 html]# systemctl start httpd          ##启动httpd服务        
[root@web01 init.d]# service web.sh start     ##启动web脚本
RealServer Start OK 

同理:Web02的配置何它一摸一样,只是IP地址需要修改
在这里插入图片描述

[root@web02 init.d]# service web.sh start      ##启动脚本
RealServer Start OK 

修改web2页面信息
在这里插入图片描述
到此DR模式配置完成
四.下面开始配置keepalived
1.配置lvs01主服务器的keeplived
[root@lvs01 network-scripts]# cd /etc/keepalived/
在这里插入图片描述

[root@lvs01 keepalived]# vim keepalived.conf     ##修改配置文件
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1               ##配置邮件指向自己
   smtp_connect_timeout 30
   router_id LVS_01       ##router id不能相同
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER              ##主服务器配置为master
    interface ens33            ##网卡端口指向ens33
    virtual_router_id 51          ##主备组号要相同,不要改
    priority 100                ##优先级为100,backup服务器要小于主
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111          ##主备密码相同
    }
    virtual_ipaddress {
192.168.100.10
    }
}

virtual_server 192.168.100.10 80 {      ##VIP地址
    delay_loop 6
    lb_algo rr                   ##轮询算法
    lb_kind DR               ##DR模式
    persistence_timeout 50
    protocol TCP

    real_server 192.168.100.130 80 {           ##节点01服务器地址
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.100.140 80 {           ##节点02服务器地址
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
[root@lvs01 keepalived]# systemctl start keepalived.service    ##开启keepalived服务

2.配置web02的keepalived,在web01用scp命令将文件拷贝到web02上修改

[root@lvs01 keepalived]# scp keepalived.conf root@192.168.100.120:/etc/keepalived/

在这里插入图片描述
[root@lvs02 keepalived]# vim keepalived.conf ##修改配置文件,改3个地方
在这里插入图片描述
[root@lvs02 keepalived]# systemctl start keepalived.service ##开启服务
keeplived配置好后,打开一台win客户机,网卡也是仅主机模式,修改IP地址
在这里插入图片描述
3.将服务端的网卡都进行重启,然后用客户机去ping100.10(环境问题所以需要不停的重启两台keepalived虚拟机的网卡)
在这里插入图片描述
4.打开谷歌浏览器访问192.168.100.10的网页查看状况,显示的是web1的页面
在这里插入图片描述
这边访问web2的页面采用的是轮询的算法
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Cpureman/article/details/108359329