配置高可用、负载均衡的web集群(Keepalived+LVS--DR)

##最终目标访问4.15. 出现web1页面 或者web2 页面

配置高可用、负载均衡的web集群

在这里插入图片描述

  • 环境说明:LVS-DR模式

    • client1:eth0->192.168.4.1
    • lvs1:eth0->192.168.4.6
    • lvs2:eth0->192.168.4.5
    • web1:eth0->192.168.4.100
    • web2:eth0->192.168.4.200
  • 环境准备

    [root@web1 ~]# yum install -y httpd
    [root@web2 ~]# yum install -y httpd

    # 创建测试页面
    [root@web1 ~]# echo “192.168.4.100” > /var/www/html/index.html
    [root@web2 ~]# echo “apache web server2” > /var/www/html/index.html
    [root@web1 ~]# systemctl enable httpd --now
    [root@web2 ~]# systemctl enable httpd --now

  1. 在2台web服务器的lo上配置vip 192.168.4.15
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0
[root@web1 network-scripts]# ifup lo:0
[root@web1 network-scripts]# ifconfig 
# 把web1的配置拷贝到web2上
[root@web1 network-scripts]# scp ./ifcfg-lo:0 192.168.4.200:/etc/sysconfig/network-scripts/
[root@web2 ~]# ifup lo:0
[root@web2 ~]# ifconfig 
  1. 在2台web服务器上配置内核参数
[root@web1 ~]# sysctl -a | grep arp_ignore
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 0
[root@web1 ~]# sysctl -a | grep arp_announce
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 0

[root@web1 ~]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
[root@web1 ~]# sysctl -p

[root@web2 ~]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
[root@web2 ~]# sysctl -p
  1. 在lvs上配置keepalived
[root@lvs01 ~]# yum install -y ipvsadm keepalived
[root@lvs02 ~]# yum install -y ipvsadm keepalived

[root@lvs01 ~]# vim /etc/keepalived/keepalived.conf 
 12    router_id lvs01       # 为本机取一个唯一的id
 13    vrrp_iptables        # 自动开启iptables放行规则
... ...
 20 vrrp_instance VI_1 {
 21     state MASTER
 22     interface eth0
 23     virtual_router_id 51
 24     priority 100
 25     advert_int 1
 26     authentication {
 27         auth_type PASS
 28         auth_pass 1111
 29     }   
 30     virtual_ipaddress {
 31         192.168.4.15       # vip地址,与web服务器的vip一致
 32     }   
 33 }
 # 以下为keepalived配置lvs的规则
 35 virtual_server 192.168.4.15 80 {   # 声明虚拟服务器地址
 36     delay_loop 6     # 健康检查延迟6秒开始
 37     lb_algo wrr      # 调度算法为wrr
 38     lb_kind DR       # 工作模式为DR
 39     persistence_timeout 50  # 50秒内相同客户端调度到相同服务器
 40     protocol TCP     # 协议是TCP
 41 
 42     real_server 192.168.4.100 80 {   # 声明真实服务器
 43         weight 1          # 权重
 44         TCP_CHECK {       # 通过TCP协议对真实服务器做健康检查
 45             connect_timeout 3 # 连接超时时间为3秒
 46             nb_get_retry 3    # 3次访问失败则认为真实服务器故障
 47             delay_before_retry 3  # 两次检查时间的间隔3秒
 48         }
 49     }
 50     real_server 192.168.4.200 80 {
 51         weight 2
 52         TCP_CHECK {
 53             connect_timeout 3
 54             nb_get_retry 3
 55             delay_before_retry 3
 56         }
 57     }
 58 }
# 以下部分删除

# 启动keepalived服务
[root@lvs1 ~]# systemctl start keepalived

# 验证
[root@lvs1 ~]# ip a s eth0    # 可以查看到vip
[root@lvs1 ~]# ipvsadm -Ln    # 出现规则


# 客户端连接测试
[root@client1 ~]# for i in {1..6}; do curl http://192.168.4.15/; done
apache web server2
apache web server2
apache web server2
apache web server2
apache web server2
apache web server2
# 为了效率相同的客户端在50秒内分发给同一台服务器。为了使用同一个客户端可以看到轮询效果,可以注释配置文件中相应的行后,重启keepavlied。


# 配置LVS2
[root@lvs1 ~]# scp /etc/keepalived/keepalived.conf 192.168.4.6:/etc/keepalived/
[root@lvs2 ~]# vim /etc/keepalived/keepalived.conf 
 12    router_id lvs2
 21     state BACKUP
 24     priority 80
[root@lvs2 ~]# systemctl start keepalived
[root@lvs2 ~]# ipvsadm -Ln   # 出现规则
  1. 验证
# 1. 验证真实服务器健康检查
[root@web1 ~]# systemctl stop httpd
[root@lvs1 ~]# ipvsadm -Ln   # web1在规则中消失
[root@lvs2 ~]# ipvsadm -Ln

[root@web1 ~]# systemctl start httpd
[root@lvs1 ~]# ipvsadm -Ln   # web1重新出现在规则中
[root@lvs2 ~]# ipvsadm -Ln

# 2. 验证lvs的高可用性
[root@lvs1 ~]# shutdown -h now    # 关机
[root@lvs2 ~]# ip a s eth0     # 可以查看到vip
# 客户端访问vip依然可用
[root@client1 ~]# for i in {1..6}; do curl http://192.168.4.15/; done
192.168.4.100
apache web server2
apache web server2
192.168.4.100
apache web server2
apache web server2

ent1 ~]# for i in {1…6}; do curl http://192.168.4.15/; done
192.168.4.100
apache web server2
apache web server2
192.168.4.100
apache web server2
apache web server2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值