Keepalived和Haproxy两个项目

一.Haproxy和Keepalived是两种常用的负载均衡软件,它们有以下区别:

功能:Haproxy是一种高性能的负载均衡软件,可以根据不同的算法将请求分发到多个后端服务器。它还可以进行会话保持和健康检查等功能。Keepalived是一种高可用性软件,可以监控服务的运行状态,当主服务器故障时,可以自动切换到备份服务器。

架构:Haproxy是一个独立的软件,需要安装在每台负载均衡服务器上。Keepalived则是一个守护进程,可以运行在负载均衡服务器上,也可以运行在其他服务器上。

高可用性:Haproxy本身不提供高可用性功能,但可以与Keepalived配合使用,实现高可用性。Keepalived可以监控Haproxy的运行状态,当Haproxy出现故障时,可以自动切换到备份服务器。

配置:Haproxy的配置相对复杂,需要手动配置多个参数和后端服务器。Keepalived的配置相对简单,只需要指定主备服务器的IP地址和监控端口即可。

管理界面:Haproxy有一些开源的管理界面,可以提供图形化的操作界面,方便管理和监控。Keepalived本身没有管理界面,需要通过命令行或配置文件进行管理。
二、Keepalived
1、keepalived概念
调度器的高可用

vip地址主备之间的切换,主在工作时,vip地址值在主上,主停止工作,vip飘移到备服务器

在主备的优先级不变的情况下,主恢复工作,vip会飘回到主服务器

1、配优先级

2、配vip地址和真实服务器

3、主备的id要一致

4、主备的id要区分

keepalive是专门为lvs打造的,但是不是为lvs专门服务的

keepalive也可以使用nginx,haproxy

2、keepalive+nginx实现高可用
监控脚本,来监控nginx1的状态,如果nginx1挂了,nginx1的keepalive也要停止,实现vip的飘移

#nginx1和nginx2#
systemctl stop firewalld
setenforce 0
yum -y install keepalived

#nginx1#
cd /opt
vim check_nginx.sh

#!/bin/bash
/usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ]
then
 systemctl stop keepalived
fi
wq!

systemctl restart keepalived
systemctl status keepalived
systemctl restart nginx
chmod 777 check_nginx.sh
# ls查看是否生成check_nginx.sh的文件

cd /etc/keepalived
vim keepalived.conf
#修改smtp_server 192.168.200.1如下
smtp_server 127.0.0.1
#修改router_id LVS_DEVEl如下
router_id LVS_01
#新增一行
vrrp_iptables
}

#修改interface eth0如下
interface ens33
#virtual_router_id 51保持不变(主备保持相同)
#priority 100修改如下
priority 120

#virtual_ipaddress修改为vip地址如下
virtual_ipaddress {
   192.168.100.100
}
# 以下全部删除
# 在虚拟地址结束的新增一行
 track_script {
     check_nginx
 }
 
# 在vrrp_iptables
#}下新增
vrrp_script check_nginx {
    script "/opt/check_nginx.sh"
    # 调用脚本内容,检测nginx的状态
    interval 5
    # 检测的时间间隔是5秒,如果业务敏感可以改成3秒
}

wq!

systemctl status keepalived.service
# 此时状态是开启
systemctl stop nginx 
# 等待5秒
systemctl status keepalived.service
# 此时状态是关闭

#nginx2#
systemctl restart nginx
cd /etc/keepalived
cp keepalived.conf keepalived.conf.bak.2024.07.12
scp root@192.168.100.11:/etc/keepalived/keepalived.conf /etc/keepalived/
vim keepalived.conf

#修改router_id LVS_01如下
router_id LVS_02
#修改state MASTER如下
state BACKUP
#priority 120修改如下
priority 100
wq!

#nginx1#
systemctl start nginx
systemctl start keepalived.service
# 一定要先启动nginx,因为脚本检测的是nginx

vim /usr/local/nginx/html/index.html
# 修改为this is nginx1
wq!

#nginx2#
systemctl restart nginx
systemctl restart keepalived
ip addr
vim /usr/local/nginx/html/index.html
# 修改为this is nginx2
wq!

主备切换
#客户机#
页面访问vip地址:curl 192.168.100.100,此时访问的是nginx1的页面

#nginx1#
systemctl stop nginx

#nginx2#
ip addr
vip地址切换到nginx2

#客户机#
页面访问vip地址:curl 192.168.100.100,此时访问的是nginx2的页面

#nginx1#
页面访问vip地址:curl 192.168.100.100,此时页面又切换回来,是nginx1的页面

三、Haproxy
1、Haproxy的概念
1.1 Haproxy负载均衡:

nginx(四层转发、七层代理)、lvs(四层转发)、Haproxy(四层转发 、七层转发)

1.2 Haproxy的作用和使用场景:

场景:主要用于高并发的web场景,可以支持一万个以上的并发请求,是高性能的tcp和http的负载均衡器

工作原理:提供一个代理地址用来访问集群

作用:

• 可以进行四层和七层转发

• 支持https协议

• Haproxy本身不自带缓存功能,请求当中添加cookie,使用缓存功能

• 支持主备切换(keepalived)

1.3 特点:

• 可靠性高、稳定性好

• 可以同时维护40000~50000个并发,单位时间内可以处理的最大请求数20000个(3秒)

• 支持负载均衡算法,虽然不带缓存,但是可以支持会话保持

权重:rr、wrr、leastconn

2、实验:七层代理

#客户端#
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make

tar -xf haproxy-1.5.19.tar.gz
uname -r
cd haproxy-1.5.19 
make TARGET=linux2628 ARCH=x86_64
# target使用的版本要大于linux2.60以上的版本
mkdir /etc/haproxy
cd examples
#haproxy.cfg是主配置文件
cp haproxy.cfg /etc/haproxy
cd /etc/haproxy

vim haproxy.cfg
set nu
#第四行五行改为 注释第八行
log /dev/log local0 info
log /dev/log local1 notice
maxconn 4096
# 最多连接数,推荐10240
# 在daemon下新增
nbproc 6
# haproxy的并发线程数,设置的数量最后是cpu的2倍或者和cpu保持一致

defaults
# 这是是默认参数配置,连接配置,监听配置以及代理配置

retries 3
# 检查节点服务器3次,连续3次失败,就任务节点服务器不可用
redispatch
# 服务器负载很高时,自动结束当前队列中处理比较久的连接
maxconn 2000
# 最大连接数,这个数值可以和global里面的maxconn的保持一致,但是不能超过它,一般设置成一致
下面三行注释掉
#
#
#
在注释的三行下新增
timeout http-request 10s
# http请求的默认超时时间
timeout queue 1m
# 在队列当中请求的超时时间
timeout connect 10s
# 连接超时时间
timeout client 1m
# 客户端超时时间
timeout server 1m 
# 服务端超时时间
timeout http-keep-alive 10s
# 默认长连接的超时时间
timeout check 10s
# 检查后端服务器超时时间

# 删除listen  appli2-insert 0.0.0.0:10002下面的所有行
# 修改listen  appli1-rewrite 0.0.0.0:10001为七层配置的格式


# 转发请求的设置,既可以是四层也可以是七层
# 七层的配置:
listen xy102 0.0.0.0:80
       option httpchk GET /index.html
       # 设置转发请求的内容
       balance static-rr
       # 默认轮询算法
       server rs01 192.168.11:80 check inter 2000 fall 3 weight 2
       server rs02 192.168.12:80 check inter 2000 fall 3 weight 3
       # server 指定真实服务器 rs01 自定义后台服务器的名称 checkinter 2000 启动对后端服务器进行检查,检查间隔是2000毫秒  fall 3 连续cd三次检测不到,则检测失败
       
wq!

cd /opt/haproxy-1.5.19/examples
cp haproxy.init /etc/init.d/haproxy
chmod 777 /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin
systemctl restart haproxy.service
 

#客户端#
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make

tar -xf haproxy-15.19.tar.gz
uname -r
make TARGET=linux2628 ARCH=x86_64
# target使用的版本要大于linux2.60以上的版本
mkdir /etc/haproxy
#haproxy.cfg是主配置文件
cp haproxy.cfg

vim haproxy.cfg
set nu
第四行五行
log /dev/log local0 info
log /dev/log local1 notice
maxconn 4096
# 最多连接数,推荐10240
# 在daemon下新增
nbproc 6
# haproxy的并发线程数,设置的数量最后是cpu的2倍或者和cpu保持一致
defaults
# 这是是默认参数配置,连接配置,监听配置以及代理配置

retries 3
# 检查节点服务器3次,连续3次失败,就任务节点服务器不可用
redispatch
# 服务器负载很高时,自动结束当前队列中处理比较久的连接
maxconn 2000
# 最大连接数,这个数值可以和global里面的maxconn的保持一致,但是不能超过它,一般设置成一致
下面三行注释掉
#
#
#
在注释的三行下新增
timeout http-request 10s
# http请求的默认超时时间
timeout-queue 1m
# 在队列当中请求的超时时间
timeout connect 10s
# 连接超时时间
timeout client 1m
# 客户端超时时间
timeout server 1m 
# 服务端超时时间
timeout http-keep-alive 10s
# 默认长连接的超时时间
timeout check 10s
# 检查后端服务器超时时间

.....删除

# 转发请求的设置,既可以是四层也可以是七层
# 四层的配置:
frontend test
bind *:80
mode tcp
default_backend test

backend test
mode tcp
balance roundrobin
server server1 182.168.100.11:80 check inter 2000 fall 3 weight 2
server server1 182.168.100.12:80 check inter 2000 fall 3 weight 3

wq!

cp haproxy,init /etc/init.d/haproxy
chmod 777 /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值