LVS-DR + keepalived 高可用

LVS-DR + keepalived 高可用部署文档

实验环境:CentOS Linux release 7.6.1810 (Core)

服务IPVIP
VS-master192.168.113.132192.168.113.129
VS-slave192.168.113.130
RS1192.168.113.133绑定但不回应广播
RS2192.168.113.134绑定但不回应广播
client192.168.113.135

基础配置,关闭防火墙(略)
需要注意的是:
1.确保client能够直接访问 RS 的 web服务器 ;
原因:LVS-DR模型,RS是直接回应客户端
2.lvs服务器 和 RS 服务器他们必须在同一个网段内;
原因:LVS转发包的时候,是直接修改了包目标的MAC地址,直接扔给了rs
3.抑制RS的ARP
原因:arp_ignore为1是说只回答目标IP地址是来访网络接口本地地址的ARP查询请求,
我们都在回环接口上配置了一个VIP,当arp模式更改以后,那么如果有谁在请求VIP的mac地址时,
那么那些web-server就会回答arp广播报文了,只有lvs才会,如果没有更改arp模式,那么大家都喊我是VIP,这就乱套了。
综上所述:
我这5台机器全划分在一个局域网内,可以互相通信,要想网页能够访问,只要保证 这些机器报文能出去
公网地址映射到我们的VIP上,公共网络就能访问到我们的服务



LVS-DR模型:
所有RS配置:(很简单:绑定VIP以及抑制ARP)
绑定VIP,绑定在回环网卡lo上
###手动(不建议):ip addr add 192.168.113.131/32 dev lo label lo:0
写入配置文件:vim /etc/sysconfig/network-scripts/ifcfg-lo 追加
DEVICE=lo:0
IPADDR=192.168.113.129
NETMASK=255.255.255.255
LVS-DR + keepalived 高可用

抑制ARP:
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
采用下面写入配置文件永久生效方法:
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 #使其刚才的配置立即生效
LVS-DR + keepalived 高可用

装个http服务作为测试:
yum ×××tall httpd -y
echo "RS1 WEB SERVER" > /var/www/html/index.html



LVS-master:
1.开启路由转发(配置、生效、查看),并安装ipvsadm
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
sysctl -p
sysctl -a | grep ip_f
LVS-DR + keepalived 高可用

yum -y ×××tall ipvsadm

2.安装keepalived
keepalived三大功能:
1)管理LVS
2)健康检查
3)实现负载均衡高可用
yum -y ×××tall keepalived

配置 keepalived.conf
注意事项:
1.vip能挂上,但ping不通,解决方法:注释vrrp_strict
2.客户端curl测试总是到同一台 解决方法: ##persistence_timeout 50
persistence_timeout 50 # 会话保持时间,单位是秒,这个选项对动态网页非常有帮助,
为集群系统中的session共享提供了一个很好的解决方案,有了这个会话保持功能,
用户的请求会被一直分发到某个服务节点,知道超过这个会话的保持时间,需要注意的是,
这个会话保持时间是最大无响应的超时时间,in other words,
用户在动态页面50秒以内没有执行任何操作,
那么接下来的操作会重新调度到另一个节点上。如果一直在操作则不会影响

从配置文件与主配置文件大致一样,只需要稍微修改以下:
state BACKUP # backup状态
virtual_router_id 51 # master和backup的id一致
priority 90 #优先级比master低些

以下是LVS-master:的keepalived配置文件参考
我们这会用genhash来获取web服务 url的校验码:
LVS-DR + keepalived 高可用

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
notification_email {br/>0000000@qq.com
}
notification_email_from Alexandre.Cassen@firewall.loc
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_×××tance VI_1 {
state MASTER #主
interface ens34 #绑定的网卡
virtual_router_id 51 # master和backup的id一致
priority 100
advert_int 1 # master和backup之间的检测时间
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.113.129/32 dev ens34 # 设置虚拟IP(VIP)
}
}

virtual_server 192.168.113.129 80 { # 设置虚拟服务器,ip端口以及花边号用逗号隔开
delay_loop 6 # 设置运行情况检查时间,单位是秒
lb_algo rr # 负载算法,这里是rr表示轮询
lb_kind DR # LVS工作机制,这里是DR模式
##persistence_timeout 50 # 会话保持时间,单位是秒
protocol TCP # 有TCP,UDP

real_server 192.168.113.133 80 {            #设定真实服务器地址以及端口
    weight 1                                # 设置权重,数字越低,调度的比例越小
    HTTP_GET {                              #以http模式检查该服务器监控状态
        url {
          path /                            # 检测的网页路径
          digest a6078171050153deb2d126e7bc05f3bf           # 采用genhash命令获取
        }
        connect_timeout 1                   # 连接超时时间
        connect_port 80                     #  连接的端口
        nb_get_retry 3                      # 表示重试次数
        delay_before_retry 1                # 表示重试间隔

    }
}

real_server 192.168.113.134 80 {
    weight 1
    HTTP_GET {
        url {
          path /
          digest 3969f6a02448b46c5eedd9bc62a4e94c
        }
        connect_timeout 1
        connect_port 80
        nb_get_retry 3
        delay_before_retry 1

    }
}

}

LVS-DR + keepalived 高可用



修改 keepalived 的打印日志
1.查看:启动/usr/lib/systemd/system/keepalived.service
修改:vim /etc/sysconfig/keepalived
把KEEPALIVED_OPTIONS="-D" 修改为:KEEPALIVED_OPTIONS="-D -d -S 0"
2.在/etc/rsyslog.conf 末尾添加
vim /etc/rsyslog.conf
local0.* /var/log/keepalived.log
3.重启日志记录服务
systemctl restart rsyslog
4.重启keepalived


测试:

注意:如果你改变了keepalived中定义的健康检查页面的内容的话,需要重新生成验证码
客户端机器访问VIP:curl http://192.168.113.129
LVS-DR + keepalived 高可用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值