Haproxy+keepalived

Haproxy+keepalived
主机ip地址角色
ha1192.168.1.10haproxy+keepalived
ha2192.168.1.20haproxy+keepalived
安装keepalived

两台主机都需要操作

yum install -y keepalived
yum install -y keepalived 

关闭防火墙以及selinux

systemctl stop firewalld
systemctl diables firewalld
sed -i '/SELINUX/s/enforcing/disabled/'  /etc/sysconfig/selinux
setenfroce 0

keepalived 只能做到对网络故障和 Keepalived 本身的监控,即当出现网络故障或者 keepalived 本身出现问题时,才会进行切换。但是在工作中,有业务服务停止而 Keepalived 服务器还在工作的情况,这就会导致用户访问的 VIP 无法找到对应的服务。

自定义检测haproxy脚本
cat >> /etc/keepalived/check_ha.sh <<EOF
#!/bin/bash
while true
do
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
systemctl stop keepalived
fi
sleep 5
done
EOF
自定义监控端口脚本
#!/bin/bash
#keepalived 监控端口脚本
#使用方法:
#在keepalived的配置文件中
#vrrp_script check_port {          #创建一个vrrp_script脚本,检查配置
#    script "/etc/keepalived/check_port.sh 端口号"   #配置监听的端口
#    interval 2 #检查脚本的频率,单位(秒)
#}
CHK_PORT=$1
if [ -n "$CHK_PORT" ];then
        PORT_PROCESS=`ss -lnt|grep $CHK_PORT|wc -l`
        if [ $PORT_PROCESS -eq 0 ];then
                echo "Port $CHK_PORT Is Not Used,End."
                exit 1
        fi
else
        echo "Check Port Cant Be Empty!"
fi
部署keepalived服务

ha1

cat >> /etc/keepalived/keepalived.conf <<EOF
global_defs {
  router_id  ha1            #12行,设置路由ID号(实验需要修改)
    vrrp_iptables           #13行,清除防火墙的拦截规则(实验需要修改,手动添加该行)
}
vrrp_script chk_nginx {
    script "/etc/keepalived/check_ha.sh"
    interval 2
    weight -20
}
vrrp_instance VI_1 {
  state MASTER              #21行,主服务器为MASTER(备服务器需要修改为BACKUP)
  interface eth0            #22行,VIP配在哪个网卡(实验需要修改,不能照抄网卡名)
  virtual_router_id 51      #23行,主备服务器VRID号必须一致
  priority 100              #24行,服务器优先级,优先级高优先获取VIP
  advert_int 1
  nopreempt   #非抢占式 ,当主节点挂了以后,从节点vip飘到从上,主节点恢复以后,不主动飘回主,需要手动重启
  authentication {
    auth_type pass
    auth_pass 1111                       
  }
  track_script {
        chk_nginx
    }
  virtual_ipaddress {       #30~32行,谁是主服务器谁获得该VIP(实验需要修改)
   192.168.1.100/24 
}    
}
EOF

ha2

cat >> /etc/keepalived/keepalived.conf <<EOF
global_defs {
  router_id ha2          #12行,设置路由ID号(实验需要修改)
    vrrp_iptables           #13行,清除防火墙的拦截规则(实验需要修改,手动添加该行)
}
vrrp_script chk_nginx {
    script "/etc/keepalived/check_ha.sh"
    interval 2
    weight -20
}
vrrp_instance VI_1 {
  state BACKUP             #21行,主服务器为MASTER(备服务器需要修改为BACKUP)
  interface eth0            #22行,VIP配在哪个网卡(实验需要修改,不能照抄网卡名)
  virtual_router_id 51      #23行,主备服务器VRID号必须一致
  priority 80             #24行,服务器优先级,优先级高优先获取VIP
  advert_int 1
  nopreempt   #非抢占式 ,当主节点挂了以后,从节点vip飘到从上,主节点恢复以后,不主动飘回主,需要手动重启
  authentication {
    auth_type pass
    auth_pass 1111                       
  }
  track_script {
        chk_nginx
    }
  virtual_ipaddress {       #30~32行,谁是主服务器谁获得该VIP(实验需要修改)
  192.168.1.100/24 
}    
}
EOF

起服

systemctl enable --now keepalived
安装haproxy

两台都需要安装

yum -y install haproxy

修改配置文件

cat >> /etc/haproxy/haproxy.cfg <<EOF
global
 log 127.0.0.1 local2   ##[err warning info debug]
 pidfile /var/run/haproxy.pid ##haproxy的pid存放路径
 user haproxy
 group haproxy
 daemon                    ##以后台进程的方式启动服务
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-rewrite 0.0.0.0:80          
   balance roundrobin
   server  web1 192.168.1.40:80 check inter 2000 rise 2 fall 5
   server  web2 192.168.1.50:80 check inter 2000 rise 2 fall 5
#定义集群,listen后面的名称任意,端口为80
#balance指定调度算法为轮询(不能用简写的rr)
#server指定后端真实服务器,web1和web2的名称可以任意
#check代表健康检查,inter设定健康检查的时间间隔,rise定义成功次数,fall定义失败次数
listen stats *:1080        #监听端口
    stats refresh 30s             #统计页面自动刷新时间
    stats uri /stats              #统计页面url
    stats realm Haproxy Manager #进入管理解面查看状态信息
    stats auth admin:admin       #统计页面用户名和密码设置
EOF

起服

systemctl enable --now haproxy
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: haproxy+keepalived是一种常见的负载均衡解决方案,haproxy是一款高性能的负载均衡软件,而keepalived则是一款用于实现高可用性的软件。通过将haproxykeepalived结合使用,可以实现负载均衡和高可用性的双重保障,从而提高系统的可靠性和稳定性。 ### 回答2: HAProxyKeepalived是两个常用的负载均衡解决方案。 HAProxy是一款高性能、稳定、开源的负载均衡软件,它提供了四种负载均衡算法,可以实现TCP和HTTP层的负载均衡,并支持SSL和ACL等高级功能。HAProxy使用事件驱动的异步I/O模型,可以处理成千上万个并发连接请求,达到高并发和高可用的目的。 而Keepalived是一个基于VRRP协议的高可用软件,它可以管理多个负载均衡器,实现负载均衡器的主备切换,从而保障服务的高可用性。通过把HAProxy运行在Keepalived的VIP(虚拟IP)上,实现对外提供服务的高可用性。 通常情况下,使用HAProxy单独部署时,需要考虑其高可用性的问题,例如应对服务器宕机、网络故障等突发情况。使用Keepalived可以实现对HAProxy的高可用性管理,当一台负载均衡器故障时,Keepalived可以自动将VIP指向另一台正常的负载均衡器上,保障服务的连续性。 总之,HAProxyKeepalived是两个功能强大、稳定可靠的负载均衡解决方案,它们可以实现对后端服务的负载均衡和高可用性管理。需要根据实际需求选择适合的解决方案,并进行合理的部署和配置,从而达到提高服务性能和保障连续性的目的。 ### 回答3: HAProxyKeepalived是常用的负载均衡软件和高可用性解决方案。HAProxy是一个高性能的负载均衡软件,可以根据请求的情况将请求转发给多个后端服务器,从而达到请求分散、负载均衡的效果。而Keepalived则是一个高可用性解决方案,它能够确保服务的持续可用性,当主服务器故障时,可以快速地切换到备份服务器,从而达到服务的高可用性。 HAProxyKeepalived可以配合使用,实现负载均衡和高可用性。在此方案中,HaProxy负责分发请求以及维护对后端服务器的连接,Keepalived负责检测服务器的状态,并及时切换集群中的主服务器,保证服务的高可用性。 当一个客户端向HAProxy发起请求时,HAProxy会根据配置的负载均衡算法将请求转发到后端的某个服务器上。同时,HAProxy会维护与后端服务器的长连接,保证请求可以快速地被分发。Keepalived则会持续地监测服务器的可用性,如果发现主服务器不可用,它会快速地将主服务器切换到备份服务器上,从而确保服务的持续可用性。 总的来说,HAProxyKeepalived的配合使用能够提高系统的稳定性和可靠性,同时还能提供更好的性能和可扩展性。这种方案已经被广泛地应用于大型Web应用、云厂商等领域中,可以帮助企业和用户提高业务的效率和可靠性,实现服务的更高级别的运维。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值