目录
一、环境详情
二、开始搭建
Ⅰ、主/从LVS负载调度
1、主keepalived配置
2、从keepalived配置
3、调整proce响应参数,关闭Linux内核的重定向参数响应
4、ipvsadm配置
Ⅱ、web配置
1、配置http服务
2、配置虚拟ip
三、LVS+keepalived测试
Ⅰ、web页面负载均衡测试
Ⅱ、keepalived高可用测试
之前已经试过了nginx+keepalived群集的主要配置,这一次我们试试将LVS和keepalived结合起来,实现LVS+keepalived的高可用群集
使用的工具、软件:keepalived、ipvsadm
因为keepalived最初就是为LVS而生,其就是为了构建高可用的LVS负载均衡群集而设计出来的,所以二者的匹配度十分的高,使用ipvsadm工具来创建虚拟服务器。管理服务器池。
本次使用的架构大致为:两台LVS负载调度器,两台节点服务器
通过使用keepalived来实现主备负载调度器,使用LVS-DR模式为基础,来构建建有负载均衡和高可用的LVS群集。
主LVS:192.168.116.22
备LVS:192.168.116.23
web1:192.168.116.120
web2:192.168.116.111
VIP: 192.168.116.16
关于keepalived的安装以及配置文件部分内容,可以参考nginx+keepalived高可用
! Configuration File for keepalived
global_defs {
router_id ljp #主LVS的hostname
}
vrrp_instance VI_1 {
state MASTER #主LVS为master
interface ens33
virtual_router_id 51 #vrrp组id
mcast_src_ip 192.168.116.22
priority 100 #主LVS,优先级100
nopreempt
advert_int 1
authentication { #主、从LVS认证信息
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #vip池
192.168.116.16
}
}
virtual_server 192.168.116.16 80 {
delay_loop 6 #健康检查的间隔时间(秒)
lb_algo rr #指定调度算法,轮询(rr)
lb_kind DR #修改群集工作DR模式
persistence_timeout 50 #连接保持时间
protocol TCP #应用服务采用的是 TCP协议
real_server 192.168.116.111 80 {
weight 1 #节点的权重
TCP_CHECK {
connect_port 80 #添加检查的目标端口
connect_timeout 3 #添加连接超时(秒)
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
}
}
real_server 192.168.116.120 80 { #添加第二个 Web节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
systemctl start keepalived
! Configuration File for keepalived
global_defs {
router_id bak23 #从LVS的hostname
}
vrrp_instance VI_1 {
state BACKUP #从LVS为backup
interface ens33
virtual_router_id 51 #vrrp组id
mcast_src_ip 192.168.116.23
priority 80 #从LVS,优先级80
advert_int 1
authentication { #主、从LVS认证信息
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #vip池
192.168.116.16
}
}
#此处配置与主LVS负载调度器keepalived.conf相同,故省略
systemctl start keepalived
做好以上的配置,此时进入主LVS,对ens33网卡的IP进行查看,可以发现除了网卡本身的IP地址,多了一个虚拟IP地址192.168.116.16。
以下配置须主、从机器分别进行配置
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
ipvsadm -C
ipvsadm -A -t 192.168.100.100:80 -s rr
ipvsadm -a -t 192.168.100.100:80 -r 192.168.116.111:80 -g
ipvsadm -a -t 192.168.100.100:80 -r 192.168.116.120:80 -g
#保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm
web 23 主机
yum install -y httpd
echo "THIS IS 192.168.116.111">>/var/www/html/index.html
systemctl start httpd
web 120 主机
yum install -y httpd
echo "this is 192.168.116.120">>/var/www/html/index.html
systemctl start httpd
以下配置须在两个web服务器上分别配置
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.116.16
NETMASK=255.255.255.255
#重启网络服务、开启网卡
ifup lo:0
systemctl restart network
#添加路由
route add -host 192.168.116.16 dev lo:0
route -n
#调整 proc 响应参数
添加系统只响应目的IP为本地IP的ARP请求
系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
#刷新proc参数
sysctl -p
在浏览器上对192.168.116.16进行访问
因为权重设置的是1,这里对页面进行刷新,web server转到了192.168.116.120
此时VIP位于192.168.116.22上,我们尝试将主LVS上的keepalived关闭
systemctl stop keepalived
再去192.168.116.23的从LVS上查看IP,VIP成功漂移到从LVS机器上
ip addr show dev ens33
ens33:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:da:47:d6 brd ff:ff:ff:ff:ff:ff
inet 192.168.116.23/24 brd 192.168.116.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.116.16/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::5835:f28a:63c5:44ff/64 scope link noprefixroute
valid_lft forever preferred_lft forever