Keepalived+LVS集群+HAProxy集群

Keepalived概述

  • 调度器出现单点故障,如何解决?
  • Keeplived实现了高可用集群
  • Keepalived最初是为了LVS设计的,专门监控各服务器节点的状态
  • Keepalived后来加入了VRRP功能,防止单点故障

Keepalived运行原理

  • Keepalived检测每个服务器节点状态
  • 服务器节点异常或工作出现故障,Keepalived将故障节点从集群系统中剔除
  • 故障节点恢复后,keepalived再将其加入到集群系统中
  • 所有工作自动完成,无需人工干预
    通俗来说
  • Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

Keepalived功能

1.VRRP热备(FTP,MySQL,HTTP,Nginx,LVS)
2.自动配置LVS规则(enable)
3.Keepalived自带健康检查功能

配置文件解析

在这里插入图片描述
在这里插入图片描述

Keepalived高可用服务器

问题
准备三台Linux服务器,两台做Web服务器,并部署Keepalived高可用软件,一台作为客户端主机,实现如下功能:
使用Keepalived实现web服务器的高可用
Web服务器IP地址分别为192.168.4.100和192.168.4.200
Web服务器的浮动VIP地址为192.168.4.80
客户端通过访问VIP地址访问Web页面

方案
使用3台虚拟机,2台作为Web服务器,并部署Keepalived、1台作为客户端,拓扑结构如图所示,主机配置如表所示
在这里插入图片描述
在这里插入图片描述
步骤一:配置网络环境(如果在前面课程已经完成该配置,可以忽略此步骤)
1)设置Web1服务器网络参数、配置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

2)设置Web2服务器网络参数、配置Web服务

[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

3)配置proxy主机的网络参数(如果已经设置,可以忽略此步骤)

[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

步骤二:安装Keepalived软件
注意:两台Web服务器做相同的操作。

[root@web1 ~]# yum install -y keepalived
[root@web2 ~]# yum install -y keepalived 

步骤三:部署Keepalived服务
1)修改web1服务器Keepalived配置文件

[root@web1 ~]# vim /etc/keepalived/keepalived.conf
 *12    router_id web1     ##设置路由ID号(实验需要修改)
 19 vrrp_instance VI_1 {
 20     state MASTER      ##主服务器为MASTER(备服务器需要修改为BACKUP)
 21     interface eth0    ##定义网络接口
 22     virtual_router_id 51   ##主备服务器VRID号必须一致
 23     priority 100           ##服务器优先级,优先级高优先获取VIP
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111      ##主备服务器密码必须一致
 28     }
 29     virtual_ipaddress {     ##谁是主服务器谁获得该VIP(实验需要修改)
 *30         192.168.4.80   ##vip
 31     }
 32 }
注:有*号的行需修改
##33行往下是集群本次实验只涉及VRRP

2)修改web2服务器Keepalived配置文件

[root@web2 ~]# vim /etc/keepalived/keepalived.conf
12    router_id web2
20     state BACKUP
23     priority 50
30         192.168.4.80

3)启动服务

[root@web1 ~]# systemctl start keepalived
[root@web2 ~]# systemctl start keepalived
[root@web1 ~]# ip a s eth0   ##查看vip
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:ea:6b:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.100/24 brd 192.168.4.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.4.80/32 scope global eth0
       valid_lft forever preferred_lft forever
[root@web1 ~]# systemctl stop keepalived.service 
[root@web2 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:34:9f:a9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.200/24 brd 192.168.4.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.4.80/32 scope global eth0
       valid_lft forever preferred_lft forever
[root@web1 ~]# systemctl start  keepalived.service        
[root@web1 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:ea:6b:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.100/24 brd 192.168.4.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.4.80/32 scope global eth0
       valid_lft forever preferred_lft forever      

4)配置防火墙和SELinux
启动keepalived会自动添加一个drop的防火墙规则,需要清空!

[root@web1 ~]# ping 192.168.4.80
PING 192.168.4.80 (192.168.4.80) 56(84) bytes of data.
[root@web1 ~]# iptables -F
[root@web1 ~]# setenforce 0
[root@web2 ~]# ping 192.168.4.80
PING 192.168.4.80 (192.168.4.80) 56(84) bytes of data.
[root@web2 ~]# iptables -F
[root@web2 ~]# setenforce 0

步骤四:测试
客户端访问
客户端使用curl命令连接http://192.168.4.80,查看Web页面;关闭Web1服务器的网卡,客户端再次访问http://192.168.4.80,验证是否可以正常访问服务。

[root@proxy ~]# curl 192.168.4.80
192.168.2.100
[root@web1 ~]# systemctl stop keepalived.service 
[root@proxy ~]# curl 192.168.4.80
192.168.2.200
[root@web1 ~]# systemctl start keepalived.service 
[root@web1 ~]# iptables -F
[root@proxy ~]# curl 192.168.4.80
192.168.2.100

高可用调度器

Keepalived+LVS拓扑

  • 使用Keepalived高可用解决调度器单点故障的问题
  • 主,备调度器上配置LVS
  • 主调度器异常时,Keepalived启用备用调度器
    在这里插入图片描述

Keepalived配置说明

  • LVS相关信息通过Keepalived配置即可
  • 主要配置文件说明如下:
    在这里插入图片描述

Real Server配置

  • 真实服务器运行在DR模式下
  • 修改内核参数,并附加VIP

Keepalived+LVS服务器

问题
使用Keepalived为LVS调度器提供高可用功能,防止调度器单点故障,为用户提供Web服务:
LVS1调度器真实IP地址为192.168.4.5
LVS2调度器真实IP地址为192.168.4.6
服务器VIP地址设置为192.168.4.15
真实Web服务器地址分别为192.168.4.100、192.168.4.200
使用加权轮询调度算法,真实web服务器权重不同
方案
使用5台虚拟机,1台作为客户端主机、2台作为LVS调度器、2台作为Real Server,实验拓扑环境结构如图所示,基础环境配置如表所示。
在这里插入图片描述
在这里插入图片描述
注意:所有主机都需要配置IP地址与有效的YUM源。

步骤一:配置网络环境

1)设置Web1服务器的网络参数(已配置请忽略)

注:先关闭上一个实验的keepalived服务
[root@web1 ~]# systemctl stop keepalived.service
[root@web2 ~]# systemctl stop keepalived.service
[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

接下来给web1配置VIP地址
注意:这里的子网掩码必须是32(也就是全255),网络地址与IP地址一样,广播地址与IP地址也一样。

[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 ~]# cp ifcfg-lo{,:0}
[root@web1 ~]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0

注意:这里因为web1也配置与调度器一样的VIP地址,默认肯定会出现地址冲突。
写入这四行的主要目的就是访问192.168.4.15的数据包,只有调度器会响应,其他主机都不做任何响应。

[root@web1 ~]# vim /etc/sysctl.conf
#手动写入如下4行内容
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
#当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应
#本机不要向外宣告自己的lo回环地址是192.168.4.15

重启网络服务,设置防火墙与SELinux

[root@web1 ~]# systemctl stop NetworkManager
[root@web1 ~]# systemctl disable NetworkManager
[root@web1 ~]# systemctl restart network
[root@web1 ~]# ifconfig
[root@web1 ~]# systemctl stop firewalld
[root@web1 ~]# setenforce 0

3)设置Web2服务器

[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 ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo{,:0}
[root@web2 ~]# vim ifcfg-lo:0
[root@web2 ~]# vim /etc/sysctl.conf
[root@web1 ~]# systemctl stop NetworkManager
[root@web1 ~]# systemctl disable NetworkManager
[root@web2 ~]# systemctl restart network
[root@web2 ~]# systemctl stop firewalld
[root@web2 ~]# setenforce 0

3)配置proxy主机的网络参数(不配置VIP,由keepalvied自动配置)

[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

4)配置proxy2主机的网络参数(不配置VIP,由keepalvied自动配置)
注意:按照前面的课程环境,默认没有该虚拟机,需要重新建一台虚拟机proxy2。

[root@proxy2 ~]# nmcli connection modify eth0 ipv4.method manual \
ipv4.addresses 192.168.4.6/24 connection.autoconnect yes
[root@proxy2 ~]# nmcli connection up eth0

步骤二:配置后台web服务
1)安装软件,自定义Web页面(web1和web2主机)

[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "192.168.4.100" > /var/www/html/index.html
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "192.168.4.200" > /var/www/html/index.html

2)启动Web服务器软件(web1和web2主机)

[root@web1 ~]# systemctl start httpd ; systemctl enable httpd
[root@web2 ~]# systemctl start httpd ; systemctl enable httpd

步骤三:调度器安装Keepalived与ipvsadm软件
注意:两台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
注:proxy如果有ifcfg-eth0:0网卡请删除
[root@proxy ~]# cd /etc/sysconfig/network-scripts
[root@proxy network-scripts]# rm -rf ifcfg-eth0:0

步骤四:部署Keepalived实现LVS-DR模式调度器的高可用
1)LVS1调度器设置Keepalived,并启动服务(在192.168.4.5主机操作)

[root@proxy ~]# vim /etc/keepalived/keepalived.conf
12    router_id proxy1
30         192.168.4.15
34 virtual_server 192.168.4.15 80 {      ##设置ipvsadm的VIP规则(实验需要修改)
35  delay_loop 6
36  lb_algo rr        ##设置LVS调度算法为RR
37  lb_kind DR        ##设置LVS的模式为DR(实验需要修改)
38  #persistence_timeout 50   ##(实验需要注释或dd)
#注意这样的作用是保持连接,开启后,客户端在一定时间内始终访问相同服务器
39  protocol TCP
40
41  real_server 192.168.4.100 80 {       ##设置后端web服务器真实IP(实验需要修改)
42    weight 1                ##设置权重为1
43    TCP_CHECK {             ##对后台real_server做健康检查(实验需要修改)
44    connect_timeout 3   ##超时时间
45    nb_get_retry 3       ##失败后尝试连接3次,3次失败代表坏了 
46    delay_before_retry 3  ##健康检查,每隔3秒检查一次
47    }
48  }
49
50 real_server 192.168.4.200 80 {      ##设置后端web服务器真实IP(实验需要修改)
51    weight 2                  ##设置权重为1
52    TCP_CHECK {              ##对后台real_server做健康检查(实验需要修改)
52    connect_timeout 3
53    nb_get_retry 3
54    delay_before_retry 3
55    }
56  }
57}
[root@proxy ~]# systemctl start keepalived
[root@proxy ~]# ipvsadm -Ln   #查看LVS规则
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         
[root@proxy ~]# ip a s eth0   #查看VIP配置
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:86:73:d1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.5/24 brd 192.168.4.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.4.15/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.4.15/24 brd 192.168.4.255 scope global secondary noprefixroute eth0:0
       valid_lft forever preferred_lft forever
[root@proxy ~]# iptables -F
[root@client ~]# curl 192.168.4.15
192.168.2.100
[root@client ~]# curl 192.168.4.15
192.168.2.200

2)LVS2调度器设置Keepalived(在192.168.4.6主机操作)

[root@proxy ~]# scp /etc/keepalived/keepalived.conf root@192.168.4.6:/etc/keepalived/keepalived.conf
[root@proxy2 ~]# vim /etc/keepalived/keepalived.conf
12    router_id proxy2
20     state BACKUP
23     priority 50
[root@proxy2 ~]# systemctl restart keepalived.service
[root@proxy2 ~]# iptables -F
[root@proxy2 ~]# yum -y install ipvsadm
[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         
[root@proxy2 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:67:2e:b5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.6/24 brd 192.168.4.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever

步骤五:客户端测试
客户端使用curl命令反复连接http://192.168.4.15,查看访问的页面是否会轮询到不同的后端真实服务器。

[root@proxy ~]# systemctl stop keepalived.service ##模拟proxy调度器坏了
[root@client ~]# curl 192.168.4.15  ##客户端依旧能正常访问
192.168.2.200
[root@client ~]# curl 192.168.4.15
192.168.2.100
[root@proxy ~]# systemctl start keepalived.service 
[root@proxy ~]# iptables -F
[root@web1 ~]# systemctl stop httpd  ##模拟web服务器坏了
[root@proxy ~]# ipvsadm -Ln   ##keepalived+LVS调度器自动把集群里坏的那台删除
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.200:80             Route   1      0          3         
[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.200:80             Route   1      0          2         
[root@client ~]# curl 192.168.4.15  ##客户端还是能正常访问
192.168.2.200
[root@client ~]# curl 192.168.4.15
192.168.2.200
[root@web1 ~]# systemctl start httpd  ##模拟web1服务器修好了
[root@client ~]# curl 192.168.4.15
192.168.2.200
[root@client ~]# curl 192.168.4.15
192.168.2.100
[root@proxy2 ~]# ipvsadm -Ln ##keepalived+Lvs调度器自动把web1加回来
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        
[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        

HAProxy概述

  • 它是免费,快速并且可靠的一种解决方案
  • 适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层代理
  • 提供高可用性,负载均衡以及基于TCP和HTTP应用的代理

衡量负责均衡器性能的因素

  • Session rate 会话率
  • 每秒钟产生的会话数
  • Session concurrent 并发会话数
  • 服务器处理会话的时间越长,并发会话数越多
  • data rate 数据速率
  • 以MB/s或Mbps衡量
  • 大的对象导致并发会话数增加
  • 高会话数,搞数据速率要求更多的内存

HAProxy工作模式

  • mode http
  • 客户端请求被深度分析后再发往服务器
  • mode tcp
  • 4层调度,不检查第七层信息
  • mode health
  • 仅做健康状态检查,已经不建议使用

配置文件说明

  • HAproxy配置参数来源
  • 命令行: 总是具有最高优先级
  • global部分: 全局设置进程级别参数
  • 代理声明部分
  • 来自于default, listen, frontend和backend
  • 配置文件可由如下部分构成:
  • default
  • 为后续的其他部分设置缺省参数
  • 缺省参数可以被后续部分重置
  • frontend
  • 描述接收客户端侦听套接字(socket)集
  • backend
  • 描述转发连接的服务器集
  • listen
  • 把frontend和backend结合到一起的完整声明

配置文件说明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

管理服务
[root@proxy ~]# sysetmctl start haproxy  ##开启
[root@proxy ~]# sysetmctl stop haproxy   ##关闭
[root@proxy ~]# systemctl status haproxy  ##重启

配置HAProxy负载平衡集群

问题
准备4台Linux服务器,两台做Web服务器,1台安装HAProxy,1台做客户端,实现如下功能:
客户端访问HAProxy,HAProxy分发请求到后端Real Server
开启HAProxy监控页面,及时查看调度器状态
设置HAProxy为开机启动
方案
使用4台虚拟机,1台作为HAProxy调度器、2台作为Real Server、1台作为客户端,拓扑结构如图所示,具体配置如表所示

在这里插入图片描述
在这里插入图片描述

注意事项:
将前面实验VIP、LVS等实验的内容清理干净!!!!!!
删除所有设备的VIP,清空所有LVS设置,关闭keepalived!!!

web1和web2关闭多余的网卡与VIP,配置本地真实IP地址。

临时处理方式:
[root@web1 ~]# ifdown lo:0
[root@web2 ~]# ifdown lo:0
永久方式:
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# rm -rf ifcfg-lo:0
[root@web1 network-scripts]# systemctl restart network
[root@web2 ~]# cd /etc/sysconfig/network-scripts/
[root@web2 network-scripts]# rm -rf ifcfg-lo:0
[root@web2 network-scripts]# systemctl restart network

proxy关闭keepalived服务,清理LVS规则。

[root@proxy ~]# systemctl stop keepalived
[root@proxy ~]# systemctl disable keepalived
[root@proxy ~]# ipvsadm -C

配置后端web服务器(如果已经配置完成,可用忽略此步骤)

[root@web1 ~]# !ss
ss -nutlp | grep :80
tcp    LISTEN     0      128       *:80                    *:*                   users:(("httpd",pid=1432,fd=3),("httpd",pid=1431,fd=3),("httpd",pid=1430,fd=3),("httpd",pid=1429,fd=3),("httpd",pid=1428,fd=3),("httpd",pid=1426,fd=3))
[root@web1 ~]# curl 192.168.2.100
192.168.2.100
[root@web2 ~]# !ss
ss -nutlp |grep :80
tcp    LISTEN     0      128       *:80                    *:*                   users:(("httpd",pid=953,fd=3),("httpd",pid=952,fd=3),("httpd",pid=951,fd=3),("httpd",pid=950,fd=3),("httpd",pid=949,fd=3),("httpd",pid=947,fd=3))
[root@web2 ~]# curl 192.168.2.200
192.168.2.200

部署HAProxy服务器

[root@proxy ~]# yum -y install haproxy

2)修改配置文件

[root@proxy ~]# vim /etc/haproxy/haproxy.cfg
global
 log 127.0.0.1 local2   ##[err warning info debug]
 chroot /usr/local/haproxy
 pidfile /var/run/haproxy.pid ##haproxy的pid存放路径
 maxconn 4000     ##最大连接数,默认4000
 user haproxy
 group haproxy
 daemon       ##创建1个进程进入deamon模式运行
defaults
 mode http    ##默认的模式mode { tcp|http|health } 
option dontlognull  ##不记录健康检查的日志信息
 option httpclose  ##每次请求完毕后主动关闭http通道
 option httplog   ##日志类别http日志格式
 option forwardfor  ##后端服务器可以从Http Header中获得客户端ip
 option redispatch  ##serverid服务器挂掉后强制定向到其他健康服务器
 timeout connect 10000 #如果backend没有指定,默认为10s
 timeout client 300000 ##客户端连接超时
 timeout server 300000 ##服务器连接超时
 maxconn  3000  ##最大连接数
 retries  3   ##3次连接失败就认为服务不可用,也可以通过后面设置
 -----------------------------------------------------------------------------
 ##案例参考
listen stats 0.0.0.0:1080   #监听端口
    stats refresh 30s   #统计页面自动刷新时间
    stats uri /stats   #统计页面url
    stats realm Haproxy Manager #进入管理解面查看状态信息
    stats auth admin:admin  #统计页面用户名和密码设置
  ----------------------------------------------------------------------------
##案例参考
listen  websrv-rewrite 0.0.0.0:80
   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
   ---------------------------------------------------------------------------
##63行以下全删除
##添加: 
 63 listen webs 0.0.0.0:80  ##也可以打(*:80)
 64 balance roundrobin   
 65 server web1 192.168.2.100:80 check  ##(加一个check带健康检查功能)
 66 server web2 192.168.2.200:80 check
##没写算法,默认轮询
##inter 2000 rise 2 fall 5 不写默认2~3次

3)启动服务器并设置开机启动

[root@proxy ~]# systemctl start haproxy
[root@proxy ~]# systemctl enable haproxy
[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
[root@client ~]# curl  192.168.4.5
192.168.2.100
默认轮询效果

修改配置文件,设置状态页面

注:全文最后添加:
listen stats 0.0.0.0:1080   #监听端口
    stats refresh 30s   #统计页面自动刷新时间
    stats uri /stats   #统计页面url
    stats realm Haproxy Manager #进入管理解面查看状态信息
    stats auth admin:admin  #统计页面用户名和密码设置
   [root@proxy ~]# systemctl restart haproxy 

客户端配置与HAProxy相同网络的IP地址,并使用火狐浏览器访问http://192.168.4.5,测试调度器是否正常工作,客户端访问http://192.168.4.5:1080/stats测试状态监控页面是否正常。访问状态监控页的内容,参考图所示
在这里插入图片描述
在这里插入图片描述

备注:
Queue队列数据的信息(当前队列数量,最大值,队列限制数量);
Session rate每秒会话率(当前值,最大值,限制数量);
Sessions总会话量(当前值,最大值,总量,Lbtot: total number of times a server was selected选中一台服务器所用的总时间);
Bytes(入站、出站流量);
Denied(拒绝请求、拒绝回应);
Errors(错误请求、错误连接、错误回应);
Warnings(重新尝试警告retry、重新连接redispatches);
Server(状态、最后检查的时间(多久前执行的最后一次检查)、权重、备份服务器数量、down机服务器数量、down机时长)

集群调度软件对比

性能:

  • LVS>Haproxy>Nginx
    功能:
  • LVS<Haproxy<Nginx

Nginx分析

优点

  • 工作在7层,可以针对http做分流策略
  • 1.9版本开始支持4层代理
  • 正则表达式比HAProxy强大
  • 安装,配置,测试简单.通过日志可以解决多数问题
  • 并发量可以达到几万次
  • Nginx还可以达到几万次
    缺点
  • 7层代理仅支持http,https,mail协议,应用面小
  • 监控检查仅通过

LVS分析

优点

  • 负载能力强,工作在4层,对内存,CPU消耗低
  • 配置性低,没有太多可配置性,减少认为错误
  • 应用面广,几乎可以为所有应用提供负载均衡
    缺点
  • 不支持正则表达式,不能实现动静分离
  • 如果网站架构庞大,LVS-DR配置比较繁琐

HAProxy分析

优点

  • 支持session,cookie功能
  • 可以通过url进行健康检查
  • 效率,负载均衡速度,高于Nginx,低于LVS
  • HAProxy支持TCP,可以对MySQL进行负载均衡
  • 调度算法丰富
    缺点
  • 正则弱于Nginx
  • 日志依赖于syslogd

安全加密功能

TCP_CHECK {} 
	仅检查端口 (网页内容不检查)
	HTTP_GET {}
	检查不加密页面
	SSL_GET {}
	检查加密页面
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现基于 Keepalived + LVS 的高可用集群,您可以按照下面的步骤操作: 1. 安装 KeepalivedLVS 您需要在每个服务器上安装 KeepalivedLVSKeepalived 是一个实现 VRRP 协议的工具,用于实现服务器之间的故障切换。LVS 是一个 Linux 负载均衡器,可以将流量分发到多个后端服务器上。 2. 配置 LVS 在配置 LVS 之前,您需要先确定负载均衡器的 IP 地址和后端服务器的 IP 地址。您可以在 LVS 上配置虚拟 IP 地址,然后将请求转发到后端服务器上。 3. 配置 Keepalived 在配置 Keepalived 之前,您需要确定一个主节点和多个备份节点。主节点将拥有虚拟 IP 地址,并将请求转发到后端服务器上。如果主节点发生故障,备份节点将接管虚拟 IP 地址,并继续转发请求。 在每个节点上,您需要配置 Keepalived 的配置文件,以实现 VRRP 协议和故障切换。在主节点上,您需要将 VRRP 的优先级设置为最高,以确保它成为主节点。在备份节点上,您需要将优先级设置为较低,以确保它只在主节点发生故障时接管虚拟 IP 地址。 4. 测试集群 在完成上述步骤后,您需要测试集群是否正常工作。您可以使用 curl 或浏览器访问虚拟 IP 地址,以确保请求能够正确地转发到后端服务器上。 以上就是基于 KeepalivedLVS 的高可用集群实现的大致步骤。需要注意的是,配置过程可能会因环境而异,您需要根据实际情况进行适当的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值