LVS+Keepalived实验

目录

实验前准备

配置负载调度器

环境准备

配置keepalived

配置虚拟IP(VIP)

ipvsadm服务配置

配置Web节点服务器

环境准备

配置虚拟网卡(lo:0)

测试

故障模拟


实验前准备

主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)

配置负载调度器

(192.168.188.11、192.168.188.12)

环境准备

关闭防火墙
systemctl stop firewalld
setenforce 0

安装ipvsadm和keepalived
yum -y install ipvsadm keepalived

加载ipvs内核模块并查看
modprobe ip_vs
cat /proc/net/ip_vs

配置keepalived

cd /etc/keepalived
备份配置文件
cp keepalived.conf keepalived.conf.bak
对配置文件进行修改
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
# 服务器(路由器)的名称,主备服务器名称不能一样,主写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
        }
    }
}
# 底下一大堆内容可以全部删除



配置虚拟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



配置完重启网卡
systemctl restart network
打开虚拟网卡
ifup ens33:0
查看一下有没有生效
ip addr

启动keepalived服务
systemctl start keepalived

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

查看分发策略

备DR服务器(192.168.188.12):
备份
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
不需要配置策略,直接查看
ipvsadm -ln,并没有策略

调整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



sysctl -p

配置Web节点服务器

(192.168.188.13、192.168.188.14)

环境准备

关闭防火墙
systemctl stop firewalld
setenforce 0

安装并启动httpd
yum -y install httpd
systemctl start httpd
检查一下端口对不对
netstat -anpt | grep :80,如果不是httpd就代表不对,端口被其他应用占用了,比如说nginx

准备两个页面
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

配置虚拟网卡(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



重启网卡
systemctl restart network
启动虚拟网卡
ifup lo:0
查看
ip addr

添加路由规则
route add -host 192.168.10.180 dev lo:0

调整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



sysctl -p

测试

我直接在本机的浏览器上进行的访问,在同一网段的虚拟机也可以测试
在客户端上访问http://192.168.188.188/,多刷新几次,节点服务器上的内容都能显示,说明负载均衡没问题(不显示其他内容就隔几十秒再刷新)

故障模拟

在主DR服务器(192.168.188.11)上关掉Keepalived,模拟单点故障
systemctl stop keepalived

将客户端的浏览器缓存清空,再访问一次,依然能看到之前的内容,说明没有问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值