主要内容:
Keepalived基础(通过VRRP实现高可用功能、设置优先级、VIP)、Keepalived+LVS(通过VRRP和LVS实现高可用+负载均衡、配置LVS规则定义健康检查)、HAproxy服务器(代理服务器)、集群调度软件对比
一、Keepalived概述
Keepalived主要是通过虚拟路由冗余(VRRP)来实现高可用功能
Keepalived运行原理:
- Keepalived检测每个服务器节点状态;
- 服务器节点异常或工作出现故障,keepalived将故障节点从集群系统中剔除;
- 故障节点恢复后,Keepalived再将其加入到集群系统中;
- 所有工作自动完成,无虚人工干预;
Keepalived具有三个功能:
- 通过VRRP实现主备切换(高可用)
- 配置LVS(配置文件自带LVS配置)
- 健康检查
软件包:keepalived
配置文件:/etc/keepalived/keepalived.conf
案例1:Keepalived高可用服务器
案例要求:使用Keepalived实现web服务器的高可用
- 1)Web服务器IP地址分别为192.168.4.100和192.168.4.200
- 2)Web服务器的浮动IP地址为192.168.4.80(VIP)
- 3)客户端通过访问VIP地址访问Web页面
主机配置表:
实验网络拓扑:
步骤1:配置防火墙和SELinux
[root@web1 ~]# firewall-cmd --set-default-zone=trusted
[root@web1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@web1 ~]# setenforce 0
[root@web2 ~]# firewall-cmd --set-default-zone=trusted
[root@web2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@web2 ~]# setenforce 0
步骤2:配置网络环境
1)设置Web1服务器网络参数、配置Web服务
[root@web1 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.address 192.168.4.100/24 connection.autoconnect yes
[root@web1 ~]# nmcli connection up eth0
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "192.168.4.100" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd //启动服务
2)设置Web2服务器网络参数、配置Web服务
[root@web2 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.address 192.168.4.200/24 connection.autoconnect yes
[root@web2 ~]# nmcli connection up eth0
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "192.168.4.200" > /var/www/html/index.html
[root@web2 ~]# systemctl restart httpd //启动服务
3)配置proxy主机的网络参数(该实验proxy当作客户端主机)
[root@proxy ~]# nmcli connection modify eth0 ipv4.method manual ipv4.address 192.168.4.5/24 connection.autoconnect yes
[root@proxy ~]# nmcli connection up eth0
步骤3:安装、部署Keepalived软件
1)修改Keepalived配置文件(Web1操作)
[root@web1 ~]# yum install -y keepalived //安装keepalived软件
[root@web1 ~]# vim /etc/keepalived/keepalived.conf //修改配置文件
global_defs { //全局配置
...
router_id web1 //12行,设置路由ID号(web1)
vrrp_iptables //13行,手动添加清除防火墙的拦截规则(启动keepalived,它会在防火墙设置拦截规则,拒绝所有服务访问)
...
}
vrrp_instance VI_1 { //VRRP示例配置
state MASTER //21行,主服务器为MASTER(备服务器需修改为BACKUP)
interface eth0 //22行,定义网络接口(虚拟IP(VIP)配在哪个网卡)
virtual_router_id 51 //23行,配置VRID(主备服务器VRID号必须一致)
priority 100 //24行,服务器优先级,优先级高的优先获取VIP(升为MASTER)
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.4.80/24 //30~32行,主服务器获得虚拟IP(VIP)
}
}
- 补充:配置文件的后续内容是提供其它的keepalived服务,可以直接删除配置
- 补充:通过# scp /etc/keepalived/keepalived.conf 192.168.4.200:/etc/keepalived/
2)修改Keepalived配置文件(web2操作)
[root@web2 ~]# yum install -y keepalived //安装keepalived软件
[root@web2 ~]# vim /etc/keepalived/keepalived.conf //修改配置文件
global_defs { //全局配置
...
router_id web2 //12行,设置路由ID号(web2)
vrrp_iptables //13行,清除防火墙的拦截规则(默认拒绝所有服务访问)
...
}
vrrp_instance VI_1 { //VRRP示例配置
state BACKUP //21行,备服务器为BACKUP(主服务器需修改为MASTER)
interface eth0 //22行,定义虚拟IP(VIP)配在哪个网卡
virtual_router_id 51 //23行,配置VRID,主备服务器VRID号必须一致
priority 95 //24行,服务器优先级小于主MASTER服务器(为BACKUP)
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.4.80/24 //30~32行,谁是主服务器谁配置VIP
}
}
3)启动keepalived服务
[root@web1 ~]# systemctl start keepalived.service
[root@web2 ~]# systemctl start keepalived.service
4)验证:
登录Web1服务器查看IP信息:
[root@web1 ~]# ip add show eth0 //因web1优先级为100,为MASTER获得VIP
登录Web2服务器查看IP信息:
[root@web2 ~]# ip add show eth0 //因web2优先级为95,为BACKUP未获得VIP
客户端浏览器访问:
① 使用curl访问http://192.168.4.80,验证是否可正常访问服务
[root@proxy ~]# curl 192.168.4.80 //web1服务器MASTER的页面
192.168.4.100
[root@proxy ~]# curl 192.168.4.80
192.168.4.100
② 当web1服务器的Keepalived服务为stop或关机状态,验证是否可正常访问服务
[root@proxy ~]# curl 192.168.4.80
192.168.4.200
[root@proxy ~]# curl 192.168.4.80
192.168.4.200
- 补充:web2通过接收MASTER的VRRP状态通告信息,处于BACKUP角色的web2将重新进行选举,进入MASTER角色并获得VIP;(当web1服务恢复,会继续升为MASTER)
- 补充:keepalived提供热备(高可用),在访问Ping 192.168.4.80是不会中断丢包的。
常见问题:keepalived无法实现负载均衡,只支持实现高可用,即主备切换(选举MASTER分配VIP);而在服务器上使用的任何服务与keepalived无关。假设用户访问web1(MASTER)运行的httpd服务为stop状态,由于服务未开启,显示内容即:“服务访问拒绝”,
[root@web1 ~]# systemctl stop httpd
[root@proxy ~]# curl 192.168.4.80
curl: (7) Failed connect to 192.168.4.80:80; 拒绝连接
[root@proxy ~]# curl 192.168.4.80
curl: (7) Failed connect to 192.168.4.80:80; 拒绝连接
案例2:Keepalived+LVS服务器
案例要求:使用Keepalived为LVS1、LVS2调度器提供高可用功能,防止调度器单点故障,LVS调度器为用户提供负载均衡的Web服务;
- 1)LVS1调度器真实IP地址为192.168.4.5(DIP)
- 2)LVS2调度器真实IP地址为192.168.4.6(DIP)
- 3)服务器VIP地址设置为192.168.4.15,由keepalived服务进行优先级的选举分配(VIP)
- 4)真实Web服务器地址分别为192.168.4.100、192.168.4.200(RIP)
- 5)使用加权轮询调度算法(wrr)
主机分配表:
实验网络拓扑:
步骤1:配置防火墙和SELinux
[root@web1 ~]# firewall-cmd --set-default-zone=trusted
[root@web1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@web1 ~]# setenforce 0
[root@web2 ~]# firewall-cmd --set-default-zone=trusted
[root@web2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@web2 ~]# setenforce 0
步骤2:配置网络环境
1)设置后端web服务器的网络参数
[root@web1 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.100/24 connection.autoconnect yes
[root@web1 ~]# nmcli connection up eth0
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "192.168.4.100" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd //启动服务
[root@web2 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.200/24 connection.autoconnect yes
[root@web2 ~]# nmcli connection up eth0
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "192.168.4.200" > /var/www/html/index.html
[root@web2 ~]# systemctl restart httpd //启动服务
2)配置proxy主机的网络参数
[root@proxy ~]# nmcli connection modify eth0 ipv4.method manual ipv4.address 192.168.4.5/24 connection.autoconnect yes
[root@proxy ~]# nmcli connection up eth0
[root@proxy2 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.address 192.168.4.6/24 connection.autoconnect yes
[root@proxy2 ~]# nmcli connection up eth0
步骤3:部署LVS-DR调度模式
1)配置后端服务器的VIP地址(web1操作)
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 ~]# cp ifcfg-lo ifcfg-lo:0
[root@web1 ~]# vim ifcfg-lo:0
DEVICE=lo:0 //设备名称
IPADDR=192.168.4.15 //IP地址
NETMASK=255.255.255.255 //子网掩码
NETWORK=192.168.4.15 //网络地址
BROADCAST=192.168.4.15 //广播地址
ONBOOT=yes //开机是否激活该网卡
NAME=lo:0 //网卡名称
2)修改内核配置说明文件(不回应广播,不向外宣告,防止进出站IP冲突)
[root@web1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
[root@web1 ~]# sysctl -p //刷新配置文件,立刻生效
3)重启服务
[root@web1 ~]# systemctl restart network //重启网络服务
[root@web1 ~]# ip add show
4)配置后端服务器的VIP地址(web2操作)
[root@web2 ~]# cd /etc/sysconfig/network-scripts/
[root@web2 ~]# cp ifcfg-lo ifcfg-lo:0
[root@web2 ~]# vim ifcfg-lo:0
DEVICE=lo:0 //设备名称
IPADDR=192.168.4.15 //IP地址
NETMASK=255.255.255.255 //子网掩码
NETWORK=192.168.4.15 //网络地址
BROADCAST=192.168.4.15 //广播地址
ONBOOT=yes //开机是否激活该网卡
NAME=lo:0 //网卡名称
5)修改内核配置说明文件(不回应广播,不向外宣告,防止进出站IP冲突)
[root@web2 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
[root@web2 ~]# sysctl -p //刷新配置文件,立刻生效
6)重启服务
[root@web2 ~]# systemctl restart network //重启网络服务
[root@web2 ~]# ip add show
步骤4:部署Keepalived与ipvsadm软件,实现LVS-DR模式调度器的高可用
- 通过keepalived服务,从2台LVS调度器选举MASTER并分配VIP地址
- 通过keepalived配置文件,可对LVS进行相关配置(Keepalived起初就是为LVS设计)
- 通过keepalived服务,可监控后端服务器服务,并做健康检查,
1)关闭服务(把案例1中web1、web2的keepalived服务关闭)
[root@web1 ~]# systemctl stop keepalived
[root@web2 ~]# systemctl stop keepalived
2)两台LVS调度器安装软件
[root@proxy ~]# yum install -y keepalived
[root@proxy ~]# systemctl enable keepalived
[root@proxy ~]# yum install -y ipvsadm
[root@proxy ~]# ipvsadm -C
[root@proxy2 ~]# yum install -y keepalived
[root@proxy2 ~]# systemctl enable keepalived
[root@proxy2 ~]# yum install -y ipvsadm
[root@proxy2 ~]# ipvsadm -C
3)LVS1调度器设置Keepalived并启动服务(proxy操作)
[root@proxy ~]# vim /etc/keepalived/keepalived.conf
global_defs { //全局配置
...
router_id lvs1 //设置路由ID号
vrrp_iptables //清除防火墙的拦截规则(实验需要修改,手动添加)
...
}
vrrp_instance VI_1 { //VRRP示例配置
state MASTER //主服务器为MASTER
interface eth0 //定义网络接口
virtual_router_id 51 //配置VRID(主辅VRID号必须一致)
priority 100 //服务器优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { //配置分配的VIP
192.168.4.15/24
}
}
virtual_server 192.168.4.15 80 { //设置LVS虚拟服务器集群规则(VIP)
delay_loop 6 //默认健康检查延迟6秒
lb_algo rr //设置LVS调度算法为rr(轮询)
lb_kind DR //设置LVS的模式为DR
#persistence_timeout 50 //无语法错误,但实验需删除,开启后客户端在一定时间内(50秒)始终访问相同服务器(无法实现轮询效果)
protocol TCP //集群基于TCP协议
real_server 192.168.4.100 80 { //设置LVS后端服务器规则(RIP)
weight 1 //设置权重为1
TCP_CHECK { //设置对后端real_server做健康检查
connect_timeout 3 //健康检查的超时时间3秒
nb_get_retry 3 //健康检查的重试次数3次
delay_before_retry 3 //健康检查的间隔时间3秒
}
}
real_server 192.168.4.200 80 { //设置LVS后端服务器规则(RIP)
weight 1 //设置权重为1
TCP_CHECK { //设置对后端real_server做健康检查
connect_timeout 3 //健康检查的超时时间3秒
nb_get_retry 3 //健康检查的重试次数3次
delay_before_retry 3 //健康检查的间隔时间3秒
}
}
}
[root@proxy ~]# systemctl restart keepalived.service
[root@proxy ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.15:80 rr
-> 192.168.4.100:80 Route 1 0 0
-> 192.168.4.200:80 Route 1 0 0
4)LVS2调度器设置Keepalived并启动服务(proxy2操作)
[root@proxy2 ~]# vim /etc/keepalived/keepalived.conf
global_defs { //全局配置
...
router_id lvs2 //设置路由ID号
vrrp_iptables //清除防火墙的拦截规则(实验需要修改,手动添加)
...
}
vrrp_instance VI_1 { //VRRP示例配置
state BACKUP //备服务器为BACKUP
interface eth0 //定义网络接口
virtual_router_id 51 //配置VRID
priority 95 //服务器优先级
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { //配置分配的VIP
192.168.4.15/24
}
}
virtual_server 192.168.4.15 80 { //设置LVS虚拟服务器集群规则(VIP)
delay_loop 6
lb_algo rr //设置LVS调度算法为rr(轮询)
lb_kind DR //设置LVS的模式为DR
protocol TCP //集群基于TCP协议
real_server 192.168.4.100 80 { //设置LVS后端服务器规则(RIP)
weight 1
TCP_CHECK { //设置对后端real_server做健康检查
connect_timeout 3 //健康检查的超时时间3秒
nb_get_retry 3 //健康检查的重试次数3次
delay_before_retry 3 //健康检查的间隔时间3秒
}
}
real_server 192.168.4.200 80 { //设置LVS后端服务器规则(RIP)
weight 1
TCP_CHECK { //设置对后端real_server做健康检查
connect_timeout 3 //健康检查的超时时间3秒
nb_get_retry 3 //健康检查的重试次数3次
delay_before_retry 3 //健康检查的间隔时间3秒
}
}
}
[root@proxy2 ~]# systemctl start keepalived.service
[root@proxy2 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.4.15:80 rr
-> 192.168.4.100:80 Route 1 0 0
-> 192.168.4.200:80 Route 1 0 0
5)客户端验证
① Porxy查看IP(因优先级高,选举为MASTER,获得VIP192.168.4.15)
[root@proxy ~]# ip add show eth0
② Porxy2查看IP
[root@proxy2 ~]# ip add show eth0
客户端使用curl命令反复连接http://192.168.4.15,查看访问的页面是否会轮询到不同的后端真实服务器
[root@client ~]# curl 192.168.4.15
192.168.4.100
[root@client ~]# curl 192.168.4.15
192.168.4.200
[root@client ~]# curl 192.168.4.15
192.168.4.100
[root@client ~]# curl 192.168.4.15
192.168.4.200
补充:keepalived+LVS可实现健康检查功能;
原始的keepalived默认不带健康检查功能,在keepalived配置文件的LVS配置中添加以下TCP_CHECK记录,可实现健康检查功能;
假设当后端服务器web1的httpd服务为失败状态,keepalived+LVS进行健康检查,并在LVS调度器的规则中将问题后端服务器剔除(健康检查根据重试次数、间隔描述对服务保持检查服务,待后端服务器的服务恢复后,即可重新自动添加规则)
测试访问192.168.4.15
二、HAProxy概述
HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理(HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上)
HAProxy的一般架构:
HAProxy的监控页面示例:
相关字段解释说明:
衡量负责均衡器性能的因素:
- 1.Session rate 会话率(每秒钟产生的会话数)
- 2.Session concurrency 并发会话数(服务器处理会话的时间越长,并发会话数越多)
- 3.Date rate 数据速率(以MB/s或Mbps衡量)
HAProxy工作模式:http、tcp、health
- 1.mode http 7层代理,客户端请求被深度分析后再发往服务器;
- 2.mode tcp 4层代理,不检查第7层信息
- 3.mode health 仅做健康状态检查,不做代理(不建议使用)
1)HAProxy基础
- 软件包:haproxy
- 主配置文件:/etc/haproxy/haproxy.cfg
2)管理服务
- 启动服务:systemctl start haproxy
- 停止服务:systemctl stop haproxy
- 查看状态:systemctl status haproxy
3)haproxy的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen;
① 全局配置段“global”用于设定全局配置参数,列举部分参数:
② proxy代理相关配置段:“defaults”、“listen”、“frontend”和“backend”
案例:配置HAProxy负载平衡集群
案例要求:
- 1)客户端访问HAProxy,HAProxy分发请求到后端Real Server
- 2)开启HAProxy监控页面,及时查看调度器状态
- 3)设置HAProxy为开机启动服务
主机地址分配:
实验网络拓扑:
步骤1:网络环境准备
1)配置Web服务器网络环境(web1、web2操作)
[root@web1 ~]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.2.100/24 connection.autoconnect yes
[root@web1 ~]# nmcli connection up eth1
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html
[root@web1 ~]# systemctl start httpd
[root@web2 ~]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.2.200/24 connection.autoconnect yes
[root@web2 ~]# nmcli connection up eth1
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html
[root@web2 ~]# systemctl start httpd
2)配置proxy服务器网络环境(proxy操作)(注意:配置2张网卡)
[root@proxy ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.5/24 connection.autoconnect yes
[root@proxy ~]# nmcli connection up eth0
[root@proxy ~]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.2.5/24 connection.autoconnect yes
[root@proxy ~]# nmcli connection up eth1
步骤2:部署HAProxy服务器
1)安装HAProyx软件包
[root@proxy ~]# yum -y install haproxy
[root@proxy ~]# id haproxy
uid=188(haproxy) gid=188(haproxy) 组=188(haproxy)
2)修改配置文件
[root@proxy ~]# vim /etc/haproxy/haproxy.cfg
global //全局配置(默认即可,不用修改)
log 127.0.0.1 local2 //错误日志([err warning info debug])
pidfile /var/run/haproxy.pid //haproxy的pid存放路径
user haproxy
group haproxy
daemon //让haproxy以守护进程的方式工作于后台
defaults //defaults段为所有其它配置段提供默认参数
mode http //默认的模式mode { tcp|http|health }
option dontlognull //不记录健康检查的日志信息
option httpclose //每次请求完毕后主动关闭http通道
option httplog //日志类别http日志格式
option redispatch //当某个服务器挂掉后强制定向到其他健康服务器
timeout client 300000 //客户端连接超时,默认毫秒,也可以加时间单位
timeout server 300000 //服务器连接超时
maxconn 3000 //最大连接数
retries 3 //3次连接失败就认为服务不可用,也可以通过后面设置
...
listen websrv 0.0.0.0:80 //listen端定义集群(集群名任意)
balance roundrobin //调度算法默认轮询(可不写)
server web1 192.168.2.100:80 check inter 2000 rise 2 fall 5
server web2 192.168.2.200:80 check inter 2000 rise 2 fall 5
listen stats *:1080 //监听端口(1080端口可任意)
stats refresh 30s //统计状态页面数据自动刷新时间
stats uri /status // 统计页面url(status为网页状态页面)
stats realm Haproxy Manager //进入的是HAProxy管理界面查看状态信息
stats auth admin:admin //统计页面用户名和密码设置
解释说明:
3)启动服务器并设置开机启动(Haproxy服务占用80端口)
[root@proxy ~]# systemctl restart haproxy.service
[root@proxy ~]# systemctl enable haproxy.service
[root@proxy ~]# ss -anptul | grep :80 //Haproxy服务占用80端口
tcp LISTEN 0 128 *:80 *:* users:(("haproxy",pid=1153,fd=7))
步骤3:客户端验证
① 使用浏览器访问http://192.168.4.5,测试Haproxy代理是否正常工作及轮询效果
[root@client ~]# curl 192.168.4.5
192.168.2.100
[root@client ~]# curl 192.168.4.5
192.168.2.200
[root@client ~]# curl 192.168.4.5
192.168.2.100
[root@client ~]# curl 192.168.4.5
192.168.2.200
② 尝试将web1服务器的httpd服务设置为stop状态,查看健康检查效果;
[root@client ~]# curl 192.168.4.5
192.168.2.200
[root@client ~]# curl 192.168.4.5
192.168.2.200
③ 客户端访问http://192.168.4.5:1080/status测试状态监控页面是否正常。访问状态监控页的内容;账号密码为:admin admin
状态监控页面如图所示:
模拟压力测试:
[root@client ~]# yum -y install httpd-tools
[root@client ~]# ab -c 100 -n 100 http://192.168.4.5/
...
Percentage of the requests served within a certain time (ms)
50% 17
66% 17
75% 17
80% 17
90% 17
95% 17
98% 17
99% 17
100% 17 (longest request)
解释说明:
常见报错:没有可用于处理此请求的服务器
[root@client ~]# curl 192.168.4.5
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>
思路分析:
- 1.服务器与调度器之间的网络不通,调度器无法到后端服务器获取数据;
- 2.web服务器的httpd服务未开启;
- 3.Haproxy的配置文件中,定义集群的后端服务器地址有问题;
常见报错:没有到主机的路由
[root@client ~]# curl 192.168.4.5
curl: (7) Failed connect to 192.168.4.5:80; 没有到主机的路由
思路分析:排查客户端与服务器之间的网络通信
常见报错:在同一个服务器上安装并启动了httpd或nginx服务,导致80端口被占用
思路分析:排查是否80端口被占用
三、集群调度软件对比
1)Nginx分析
2)LVS分析
3)HAProxy分析
思维导图:
小结:
本篇章节为【第二阶段】CLUSTER-DAY2 的学习笔记,这篇笔记可以初步了解到 Keepalived基础、Keepalived+LVS 实现高可用和负载均衡、HAproxy、集群调度软件对比。除此之外推荐参考相关学习网址:
- Keepalived + Nginx 实现高可用 Web 负载均衡_nginx应用高可用-CSDN博客
- https://www.cnblogs.com/losbyday/p/5841830.html
- http://www.ttlsa.com/linux/haproxy-study-tutorial/
Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解