Haproxy一键搭建web集群

1.原理与简介

1.HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上

2.HAProxy实现了一种事件驱动**, **单一进程模型,此模型支持非常大的并发连接数多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。

包括 GitHubBitbucketStack OverflowRedditTumblrTwitter和 Tuenti在内的知名网站,及亚马逊网络服务系统都使用了HAProxy

2.脚本部署服务

以下实验环境均为 CentOS7.9,需要三台如下:

一台Haproxy 两台web服务器

脚本如下:

#!/bin/bash
#function: Haproxy一键搭建web集群
#author: tommypeng  20230912
#####root判断#####
if
  [  "$USER"  != "root"   ]
then
   echo "错误:非root用户,权限不足!"
  exit  0
fi
############防火墙与高级权限##########
systemctl stop firewalld && systemctl disable firewalld  && echo "防火墙已经关闭"
sed -i 's/SELINUX=.*/SELINUX=disabled/g'  /etc/selinux/config  && echo "关闭selinux"
echo "运行之前请先确保是否部署两台web服务器,是否符合条件"
read -ep "是否符合以上条件请输入(yes/no):" niuma
case $niuma in
    yes)
    echo  "滴滴 帅哥通行证,符合条件,继续执行..."
    ;;
    no)
    echo  "帅哥通行证不符合条件,请先部署两台web服务器"
    exit 0
    ;;
    *)
     echo "不符合,即将退出脚本"
    exit 1

esac
read -ep  "请输入第一台web服务器IP地址:" web1 
read -ep  "请输入第二台web服务器IP地址:" web2
############安装依赖包############
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
##########上传安装包#################
cd /opt/
bao_path="haproxy-1.5.19.tar.gz"
if [ -e "$bao_path" ]; then
 echo "帅哥通行卡已存在,继续执行喽!!!"
else
    echo "帅哥通行卡不存在,安装个毛线"
  if [ $? -eq 0 ]; then
      echo "兄弟请上传安装包到/opt/"
exit 1
fi
fi

##########解压包#######
tar zxvf haproxy-1.5.19.tar.gz && cd haproxy-1.5.19/

##########编译安装########
make TARGET=linux2628 ARCH=x86_64
if [ $? -eq 0 ]; then 
   make install
    if [ $? -eq 0 ]; then
  echo "滴滴,帅哥通信证通过!!!"
fi
 else
echo "帅哥通信证失效喽,自己慢慢排查吧!!!"

exit 1

fi

##############创建配置文件存放目录#########
mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/
cd /etc/haproxy/ && cp haproxy.cfg haproxy.bak

##########编辑配置文件###########
cat > /etc/haproxy/haproxy.cfg << EOF
# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
        log /dev/log    local0 info
        log /dev/log    local0 notice
        #log loghost    local0 info
        maxconn 4096
        #chroot /usr/share/haproxy
        uid 99
        gid 99
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen  webcluster 0.0.0.0:80
        option httpchk GET /index.html
        balance roundrobin
        server inst1 $web1:80 check inter 2000 fall 3
        server inst2 $web2:80 check inter 2000 fall 3

EOF

#######复制文件####
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
cd /etc/init.d/
####添加执行权限###
chmod +x haproxy
#######将haproxy服务加入到chkconfig管理#########
chkconfig --add /etc/init.d/haproxy
##########添加软连接######
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
#########启动Haproxy服务#########
service haproxy start

测试实验如下:

使用Haproxy服务的本机IP进行访问,刷新网页可以进行轮询

nginx脚本参考链接如下:

nginx一键部署服务_陪小余久¹点⁸的博客-CSDN博客

测试实验如下:

部署完两台nginx之后,要在nginx插入网页内容如下:

echo web1 > /usr/local/nginx/html/index.html           ##192.168.75.154 nginx 1

echo web2 > /usr/local/nginx/html/index.html           ##192.168.75.186 nginx 2

使用Haproxy服务的本机IP进行访问,刷新网页可以进行轮询

实验也就完成了,觉得不错的可以关注(●'◡'●) !!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陪小余久¹点⁸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值