Haproxy01-安装Haproxy

1、HAProxy安装(二进制)

1.1、部署环境

  • 软件版本
    • lua:5.4.3
    • haproxy:2.5.6
  • 系统环境
    • 192.168.1.101:CentOSLinuxrelease7.7.1908(Core)
    • 192.168.1.102:CentOSLinuxrelease7.7.1908(Core)
    • 192.168.1.254:CentOSLinuxrelease7.7.1908(Core)
  • 在192.168.1.254上安装haproxy,提供负载均衡能力。在192.168.1.101和192.168.1.102上安装httpd,提供后端服务。
    • HAProxy的机器上有两个IP,将10.1.1.12当作外网IP。

1.2、安装httpd提供后端服务

1、安装httpd

//在192.168.1.101和192.168.1.102上安装httpd
]# yum install httpd -y

2、提供测试页

//在192.168.1.101上执行
]# cat > /var/www/html/index.html << EOF
<h1>192.168.1.101, test1</h1>
EOF

//在192.168.1.102上执行
]# cat > /var/www/html/index.html << EOF
<h1>192.168.1.102, test2</h1>
EOF

3、启动httpd服务

//在192.168.1.101和192.168.1.102上执行
]# systemctl start httpd.service

4、测试后端服务是否可用

//在192.168.1.254上执行
]# curl http://192.168.1.101:80
<h1>192.168.1.101, test1</h1>
]# curl http://192.168.1.102:80
<h1>192.168.1.102, test2</h1>

1.3、安装HAProxy

  • 在192.168.1.254上安装HAProxy

1.3.1、安装LUA

]# yum -y install gcc gcc-c++ openssl-devel systemd-devel -y

]# wget http://www.lua.org/ftp/lua-5.4.3.tar.gz

]# tar zvfx lua-5.4.3.tar.gz
]# mkdir -p /apps/lua-5.4.3/
]# cd lua-5.4.3/

]# make linux
]# make install INSTALL_TOP=/apps/lua-5.4.3/

1.3.2、安装HAProxy

1、安装HAProxy

]# wget https://www.haproxy.org/download/2.5/src/haproxy-2.5.6.tar.gz

]# tar zvfx haproxy-2.5.6.tar.gz
]# cd haproxy-2.5.6/
]# mkdir /apps/haproxy-2.5.6/

]# make TARGET=linux-glibc USE_LUA=1 USE_OPENSSL=1 USE_SYSTEMD=1 USE_PCRE=1 USE_ZLIB=1 LUA_LIB=/apps/lua-5.4.3/lib LUA_INC=/apps/lua-5.4.3/include 
]# make install PREFIX=/apps/haproxy-2.5.6/

2、创建系统服务

]# cd /apps/
]# ln -s haproxy-2.5.6 haproxy

]# cat > /usr/lib/systemd/system/haproxy.service << EOF
[unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/apps/haproxy/sbin/haproxy  -f /apps/haproxy/haproxy.cfg -c -q
ExecStart=/apps/haproxy/sbin/haproxy -Ws -f /apps/haproxy/haproxy.cfg
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
EOF

]# systemctl daemon-reload

3、配置HAProxy

  • 创建配置文件haproxy.cfg
    • listen段可以独立完整的定义前端和后端。但这里使用listen只是为了配置HAProxy的状态页面,所以就没有定义后端服务器,HAProxy的状态页面与后端无关。
    • frontend和backend配合使用。
      • frontend定义一个前端。
      • backend定义一组后端服务器。
]# cat > /apps/haproxy/haproxy.cfg << EOF
global
    ###后台运行
    #以守护进程的方式运行harpoxy
    daemon
    #将所有守护进程的pid写入文件
    pidfile /apps/haproxy/haproxy.pid

    ###安全加固:隔离和删除特权
    #增加了安全级别,以防未知的漏洞被利用。指定的目录为 空目录 且任何用户都没有 写权限
    chroot /apps/haproxy/empty
    #运行haproxy的用户
    user haproxy
    #运行haproxy的用户组
    group haproxy

    #通过服务管理器将日志发送到127.0.0.1进行日志记录[error warring debug info]
    log 127.0.0.1 local3 info
    #每个进程的最大并发连接数(注意,在某些平台上,“select”轮询器不能可靠地使用超过1024个文件描述符)
    maxconn  4096
    #重新加载后,旧进程的存在时间不能超过这个时间
    hard-stop-after 5m

    #默认情况下,所有文件名都相对于包含该配置文件的目录
    default-path config
    #如果在加载配置文件时有任何报错,就拒绝启动(保持配置清洁)
    zero-warning
    #定义当前节点的名称,用于HA场景中多haproxy进程共享同一个IP地址时
    node node_name1
    #当前实例的描述信息
    description 'global_hh1'

defaults
    #设置haproxy的代理模式(7层代理http,4层代理tcp)
    mode http
    #日志遵循global的配置
    log global
    #启用HTTPS请求、会话状态和计时器的日志记录
    option httpslog
    #启用空连接日志记录
    option dontlognull

    #如果后端服务器需要获得客户端的真实IP,需要配置此参数,将可以从Http Header中获得客户端IP(插入X-Forwarded-For头)
    option forwardfor
    #每次请求完毕后主动关闭http通道,HA-proxy不支持keep-alive模式
    option httpclose
    #在服务端,每次请求完毕后主动关闭http通道,HA-proxy不支持keep-alive模式
    option http-server-close 

    #在连接失败的情况下启用会话重新分配(当后端服务器挂了之后,将请求强制分配到其他健康的后端服务器)
    option redispatch
    #健康状态检测,3次连接失败就认为该后端服务器不可用
    retries 3
    #一次健康状态检测的超时时间
    timeout check 2000

    #等待完成HTTP请求的最大时间
    timeout http-request 10s
    #在队列中等待连接槽空闲的最大时间
    timeout queue 15s
    #haprox将用户请求转发到后端服务器后,等待后端服务器响应的超时时间
    timeout connect 10s
    #haproxy作为客户端,和后端服务器之间的空闲超时时间
    timeout client 1m
    #haproxy作为服务器,和用户之间的空闲连接超时时间
    timeout server 1m
    #等待新的HTTP请求出现的最大时间(默认持久连接超时时间)
    timeout http-keep-alive 2m
    #设置隧道客户端和服务器端的最大不活动时间。(for websocket)
    timeout tunnel 4h

    #每个进程的最大并发连接数,优先级比global中的高
    maxconn 2048

listen stats
    bind :18080

    #开启haproxy的状态页面
    stats enable
    #通过这个url访问haproxy的状态页面
    stats uri /haproxystatus
    #访问haproxy的状态页面的用户名和密码,可以设置多个用户名
    stats auth admin1:admin1
    stats auth admin2:admin2
    #启用管理后端服务器(在状态页面上启动/禁用后端服务器)
    stats admin if TRUE

    #设置haproxy的状态页面的提示信息
    stats realm Haproxy\ status
    #设置监控页面刷新时间:5s
    stats refresh 10s
    #隐藏监控页面的HAproxy版本信息
    stats hide-version

    #default段中开启了日志,no log关闭日志
    #no log

frontend frontend_hh1
    #当前实例的描述信息
    description "frontend frontend_hh1"
    #设置监听端口,即haproxy提供的web服务端口
    bind  :80

    #默认的后端服务器是server_hh1
    default_backend server_hh1

backend server_hh1
    #在后端中使用的负载平衡算法。
    balance roundrobin

    ###添加一个后端服务器。
	#check开启健康状态检查,inter检查的时间间隔,rise几次成功的检查就认为后端服务器可用,fall几次失败的检测就认为后端服务器不可用。
    server httpA 192.168.1.101:80 check inter 1500 rise 3 fall 2 weight 1
    #添加一个后端服务器。
    server httpB 192.168.1.102:80 check inter 1500 rise 3 fall 2 weight 1
EOF
  • 配置chroot
]# mkdir /apps/haproxy/empty/
]# chmod 000 /apps/haproxy/empty/
  • 创建启动用户haproxy
]# useradd -r haproxy
]# usermod -G haproxy haproxy
  • 开启haproxy日志
]# vim  /etc/rsyslog.conf
$ModLoad imudp                             #去掉注释
$UDPServerRun 514                          #去掉注释

local3.* /apps/haproxy/logs/haproxy.log    #添加

]# systemctl restart rsyslog
]# chown haproxy.haproxy -R /apps/haproxy/

1.4、启动HAProxy

1、检查配置文件

]# /apps/haproxy/sbin/haproxy -c -f /apps/haproxy/haproxy.cfg

2、启动HAProxy

systemctl enable haproxy.service
systemctl start haproxy.service

systemctl stop haproxy.service

systemctl restart haproxy.service

3、测试HAProxy

  • 在其他机器访问HAProxy
]# curl http://10.1.1.12:80
<h1>192.168.1.101, test1</h1>
]# curl http://10.1.1.12:80
<h1>192.168.1.102, test2</h1>
  • 登录HAProxy的状态页面(http://10.1.1.12:18080/haproxystatus)

1

#                                                                                                                         #
posted @ 2022-07-17 22:24  麦恒  阅读(176)  评论(0编辑  收藏  举报