LVS+KeepAlived高可用负载均衡集群
Keepalived LVS群集
- 部署“LVS+KeepAlived高可用负载均衡集群”案例
- 需求
- 部署共享存储
- 准备工作
- 配置nfs服务
- 部署web节点(web1和web2配置基本相同,请结合实际配置)
- 准备工作
- 配置网络
- 配置web服务
- 内核配置
- 部署负载调度器
- 准备工作
- 配置KeepAlived服务
- 配置负载策略
- 配置内核参数
- 测试
部署“LVS+KeepAlived高可用负载均衡集群”案例
需求
- 备DR 服务器:10.190.33.50
- 主DR 服务器:10.190.33.40
- Web 服务器1:10.190.33.20
- Web 服务器2:10.190.33.30
- VIP地址:10.190.33.200
- 客户端:10.190.33.1(物理机)
- NFS服务器:10.190.33.10
部署共享存储
准备工作
hostnamectl set-hostname nfs-server
systemctl disable firewalld.service --now
vim /etc/selinux/config
将“SELINUX=enforcing”修改成“SELINUX=0”
reboot
配置nfs服务
yum install -y rpcbind nfs
mkdir /share/{wang,lei} -p
echo '<h2>This is <h1>WANG</h1></h2>' > /share/wang/test.html
echo '<h2>This is <h1>LEI</h1></h2>' > /share/lei/test.html
vim /etc/exports
/share/wang 10.190.33.0/24(ro)
/share/lei 10.190.33.0/24(ro)
systemctl enable rpcbind nfs --now
showmount -e
部署web节点(web1和web2配置基本相同,请结合实际配置)
准备工作
hostnamectl set-hostname web1-server
systemctl disable firewalld.service --now
vim /etc/selinux/config
将“SELINUX=enforcing”修改成“SELINUX=0”
reboot
配置网络
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
systemctl restart network
DEVICE=lo:0
ONBOOT=yes
IPADDR=10.190.33.200
NETMASK=255.255.255.255
route add -host 10.190.33.200 dev lo:0
配置web服务
yum install -y nginx
vim /etc/nginx/nginx.conf
······
keepalive_timeout 0;
systemctl enable rpcbind nfs
mount 10.190.33.10:/share/wang /usr/share/nginx/html/
systemctl enable --now nginx
使用客户端检查web服务是否启动及运行正常
内核配置
vim /etc/sysctl.conf
·······
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
部署负载调度器
准备工作
hostnamectl set-hostname LVS1-server
systemctl disable firewalld.service --now
vim /etc/selinux/config
将“SELINUX=enforcing”修改成“SELINUX=0”
reboot
配置KeepAlived服务
yum install -y keepalived
......
global_defs { #定义全局参数
--10行--修改,邮件服务指向本地
smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
#vrrp_strict
}
vrrp_instance VI_1 { #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
state MASTER
--21行--修改,指定承载vip地址的物理接口
interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致
virtual_router_id 101
#nopreempt #如果设置非抢占模式,两个节点state必须为BACKUP,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
priority 100
advert_int 1 #通告间隔秒数(心跳频率)
authentication { #定义认证信息,每个热备组保持一致
auth_type PASS #认证类型
--27行--修改,指定验证密码,主备服务器保持一致
auth_pass xy101loveleilei
}
virtual_ipaddress { #指定群集vip地址
10.190.33.200
}
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 10.190.33.200 80 {
delay_loop 6 #健康检查的间隔时间(秒)
lb_algo rr #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
lb_kind DR
persistence_timeout 0 #连接保持时间(秒)
protocol TCP #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
real_server 10.190.33.20 80 {
weight 1 #节点的权重
--45行--删除,添加以下健康检查方式
TCP_CHECK {
connect_port 80 #添加检查的目标端口
connect_timeout 3 #添加连接超时(秒)
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
}
}
real_server 10.190.33.30 80 { #添加第二个 Web节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
##删除后面多余的配置##
}
systemctl enable keepalived.service --now
ip addr
配置负载策略
yum install -y ipvsadm.x86_64
systemctl enable --now ipvsadm.service
ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived
systemctl restart keepalived.service
配置内核参数
vim /etc/sysctl.conf
······
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0 #以自己实际网卡为准
sysctl -p
测试
即时刷新