1.keeplived相关
1.1工作原理
Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
VRRP:虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准。VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性。
1.2 Keepalived体系主要模块
keepalived体系架构中主要有三个模块,分别是core、check和vrrp。
●core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
●vrrp模块:是来实现VRRP协议的。
●check模块:负责健康检查,常见的方式有端口检查及URL检查。
2. 实验配置
2.1 实验环境
服务器 | ip |
---|---|
主DR服务器 | 192.168.80.20 vip:192.168.80.101 |
备DR服务器 | 192.168.80.25 vip:192.168.80.101 |
Web服务器1 | 192.168.80.30 |
Web服务器2 | 192.168.80.35 |
客户端 | 192.168.80.45 |
2.2 配置步骤
1.配置负载均衡器(主备一致)
systemctl stop firewalld.service setenforce 0 yum -y install ipvsadm keepalived
(1)配置keeplived(主备均要配置)
cd /etc/keepalived/ cp keepalived.conf keepalived.conf.bak vim keepalived.conf ___________________________________________ ...... 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 10 #nopreempt #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt --23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90 priority 100 advert_int 1 #通告间隔秒数(心跳频率) authentication { #定义认证信息,每个热备组保持一致 auth_type PASS #认证类型 --27行--修改,指定验证密码,主备服务器保持一致 auth_pass 1111 } virtual_ipaddress { #指定群集vip地址 192.168.80.101 } } --36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数 virtual_server 192.168.80.101 80 { delay_loop 6 #健康检查的间隔时间(秒) lb_algo rr #指定调度算法,轮询(rr) --39行--修改,指定群集工作模式,直接路由(DR) lb_kind DR persistence_timeout 0 #连接保持时间(秒) protocol TCP #应用服务采用的是 TCP协议 --43行--修改,指定第一个Web节点的地址、端口 real_server 192.168.80.30 80 { weight 1 #节点的权重 --45行--删除,添加以下健康检查方式 TCP_CHECK { connect_port 80 #添加检查的目标端口 connect_timeout 3 #添加连接超时(秒) nb_get_retry 3 #添加重试次数 delay_before_retry 3 #添加重试间隔 } } real_server 192.168.80.35 80 { #添加第二个 Web节点的地址、端口 weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } ##删除后面多余的配置## } ___________________________________________ systemctl start keepalived ip addr
(2)启动ipvsadm服务
ipvsadm-save > /etc/sysconfig/ipvsadm systemctl start ipvsadm ipvsadm -ln
(3)调整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
2.节点服务器配置
--192.168.80.30--- echo 'this is web server1 from 192.168.80.30!' > /var/www/html/index.html --192.168.80.35--- echo 'this is web server2 from 192.168.80.35!' > /var/www/html/index.html vim /etc/sysconfig/network-scripts/ifcfg-lo:0 DEVICE=lo:0 ONBOOT=yes IPADDR=192.168.80.101 NETMASK=255.255.255.255 service network restart 或 systemctl restart network ifup lo:0 ifconfig lo:0 route add -host 192.168.80.101 dev lo:0 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
2.3 实验截图
2.3.1 负载均衡器配置
1.主节点配置
2.配置文件修改
备用负载均衡器配置与主一致
注意keepalived.conf中的
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02 router_id LVS_02 --20行--修改,指定热备状态,主为MASTER,备为BACKUP state MASTER --23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90 priority 90
备用的负载均衡器keeplived配置完成后,虚拟地址在主未宕机的时候不会出现。
2.3.2 网页服务器配置
网页服务2除网页内容不同外配置相同。
2.4 客户端测试
关闭.20的keepalived的服务。
查看备负载均衡器的虚拟网卡是否启用
客户端访问正常: