欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Haproxy群集与高可用Haproxy群集搭建超详细流程!

程序员文章站 2024-03-21 09:42:52
...

Haproxy群集与高可用Haproxy群集搭建超详细流程!

一、什么是Haproxy?

前几期博客介绍了LVS负载均衡器是如何进行工作的。而今天要介绍的Haproxy则是强于LVS的。LVS在工作时不支持正则表达式的处理,而且对于一些大型的网站LVS的实施相对复杂,使用成本高。而Haproxy适用于大型的网站的高并发处理。其支持多种调度算法:RR轮询、LC最小连接数和SH访问源算法等。

二、一般的Haproxy群集的搭建

1.节点web服务器的搭建

这里以两台nginx服务器为例。为此我准备了安装nginx的脚本:

#!/bin/bash
systemctl stop firewalld
setenforce 0

read -p "请输入nginx安装包路径(路径最后不要加斜杠:/;否则会出错)" lj

#解压安装包
echo "所有压缩包将解压到/opt/中"
tar zxvf $lj/nginx-1.12.2.tar.gz -C /opt/ &> /dev/null

################################################
#nginx安装

#安装环境
echo "安装环境。"
yum install pcre* zlib-devel gcc gcc-c++ -y

#创建程序型用户
echo "创建nginx系统用户。"
useradd -M -s /sbin/nologin nginx

cd /opt/nginx-1.12.2
#编译 安装路径、用户、组、统计模块
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install

#建立软连接方便系统识别命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

touch /etc/init.d/nginx

#创建一个启动脚本
cat >> /etc/init.d/nginx << EOF
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
case \$1 in
  start)
 /usr/local/nginx/sbin/nginx
 ;;
  stop)
  killall -s QUIT /usr/local/nginx/sbin/nginx
  ;;
   restart)
  killall -s QUIT /usr/local/nginx/sbin/nginx
    /usr/local/nginx/sbin/nginx
  ;;
   reload)
   killall -s HUP /usr/local/nginx/sbin/nginx
   ;;

  *)
  echo "Usage: $0 {start|stop|restart|reload}"
  exit 1

esac
exit 0

EOF


echo 'PATH=/usr/local/nginx/sbin/nginx:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile

#添加执行权限
chmod +x /etc/init.d/nginx

#将命令导入系统
chkconfig --add nginx

nginx服务安装好了之后就可以不用再管了。

2.Haproxy负载均衡器的搭建

1.在负载均衡器服务器上解压Haproxy压缩包、安装环境

#解压haproxy压缩包
tar zxvf haproxy-1.5.19.tar.gz -C /opt

#安装环境
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make

2.移动到编译路劲下开始编译


cd /opt/haproxy-1.5.19

make TARGET=Linux26 && make install

3.创建主配置文件目录和复制只配置文件模板

mkdir /etc/haproxy
cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/

4.编辑主配置文件

#其中这两个要加注释
#chroot /usr/share/haproxy
#redispatch


#删除所有监听地址、添加以下监听地址样式
listen  webcluster 0.0.0.0:80      
    option httpchk GET /test.html  
    balance roundrobin     
    server inst1 192.168.80.132:80 check inter 2000 fall 3       
    server inst2 192.168.80.134:80 check inter 2000 fall 3

5.配置启动脚本

#复制启动脚本
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy 
#便于system管理
chkconfig --add /etc/init.d/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

6.日志功能开启

#在全局配置中修改日志文件路径和日志类型
global
        log /dev/log    local0 info
        log /dev/log    local1 notice
#创建日志配置文件路径
touch /etc/rsyslog.d/haproxy.conf
cd /etc/rsyslog.d/
vim haproxy.conf 
#在其中添加if条件判断
if ($programname == 'haproxy' and $syslogseverity-text == 'info') then
-/var/log/haproxy/haproxy-info.log
& ~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then
-/var/log/haproxy/haproxy-notice.log
& ~
#开启日志功能、重启Haproxy功能
systemctl restart haproxy
service rsyslog restart

7.测试Haproxy功能。
Haproxy群集与高可用Haproxy群集搭建超详细流程!
Haproxy群集与高可用Haproxy群集搭建超详细流程!

三、高可用Haproxy群集搭建

在刚才实验的基础上再增加一台haproxy服务器作为备用服务器。防止在主服务器宕机后整个群集瘫痪。
1.安装keepalived。

yum install keepalived -y

2.编辑keepalived.conf主配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     aaa@qq.com
     aaa@qq.com
     aaa@qq.com
   }
   notification_email_from aaa@qq.com
   smtp_server 127.0.0.1				#改为127.0.0.1
   smtp_connect_timeout 30
   router_id_01								#改为_01负载均衡器序号
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER						#主要的为MASTER
    interface ens33
    virtual_router_id 10					#主备要在同一组之中
    priority 100								#设置优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.80.10					#虚拟IP
    }
}

3.备份负载均衡器上keepalived配置

只需要修改以下几项:
 router_id_02								#改为_01负载均衡器序号
 state BACKUP					#主要的为MASTER
 priority 99							#设置优先级

4.设置虚拟IP地址
两个负载均衡器都需要设置相同的虚拟IP。

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
#添加虚拟网卡设定
DEVICE="ens33:0"
ONBOOT="yes"
IPADDR=192.168.80.10
NETMASK=255.255.255.0

关闭MAST负载均衡器的网络,稍等一会。
Haproxy群集与高可用Haproxy群集搭建超详细流程!
过了一会依旧可以上网。
Haproxy群集与高可用Haproxy群集搭建超详细流程!
以上就是Haproxy高可用群集的搭建流程。

相关标签: HAproxy