Centos7源码安装HAProxy

324 阅读2分钟

1、解决lua环境

下载地址:www.lua.org/ftp/

安装基础命令及编译依赖环境:(内网环境挂载本地源安装)

yum install gcc readline-devel -y

解压缩并安装:

[root@db02 ~]# tar zxf lua-5.4.4.tar.gz [root@db02 ~]# cd lua-5.4.4/ [root@db02 ~]# make linux

查看lua版本

[root@db02 lua-5.4.4]# pwd /root/lua-5.4.4 [root@db02 lua-5.4.4]# ./src/lua -v Lua 5.4.4 Copyright (C) 1994-2020 Lua.org, PUC-Rio

2、安装Haproxy

haproxy官网:www.haproxy.org/

将下载好的haproxy软件上传到linux上

安装基础命令及编译依赖环境:

yum -y install gcc openssl-devel pcre-devel systemd-devel

解压缩并安装:

[root@db02 ~]# tar zxf haproxy-2.8.1.tar.gz [root@db02 ~]# cd haproxy-2.8.1/

USE_PROMEX=1为内置的Prometheus exposes metrics

参考INSTALL文件进行编译安装:

make -j 4 TARGET=linux-glibc USE_OPENSSL=1 USE_ZLIB=1 USE_PCRE=1 USE_SYSTEMD=1 USE_LUA=1 USE_PROMEX=1 LUA_INC=/usr/local/src/lua-5.4.4/src LUA_LIB=/usr/local/src/lua-5.4.4/src

make install PREFIX=/usr/local/haproxy

ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/

3、验证Haproxy版本

/usr/sbin/haproxy -v

4、创建配置文件

mkdir /etc/haproxy

vi /etc/haproxy/haproxy.cfg

global

log 127.0.0.1 local0 info

#log loghost local0 info

maxconn 20480

#chroot /usr/local/haproxy

#pidfile /var/run/haproxy.pid

pidfile /var/lib/haproxy/haproxy.pid

#maxconn 4000

user haproxy

group haproxy

daemon

#---------------------------------------------------------------------

#common defaults that all the 'listen' and 'backend' sections will

#use if not designated in their block

#---------------------------------------------------------------------

defaults

mode http

log global

option dontlognull

option httpclose

option httplog

#option forwardfor

option redispatch

balance roundrobin

timeout connect 10s

timeout client 10s

timeout server 10s

timeout check 10s

maxconn 60000

retries 3

#--------------统计页面配置------------------

listen stat

bind 0.0.0.0:8888

mode http

http-request use-service prometheus-exporter if { path /metrics }

stats enable

stats refresh 30s

stats uri /stats

stats realm Haproxy\ Statistics

stats auth admin:admin

stats hide-version

#---------------web设置-----------------------

listen webcluster

bind 0.0.0.0:80

mode http

#option httpchk GET /index.html

log global

maxconn 3000

balance roundrobin

cookie SESSION_COOKIE insert indirect nocache

server web01 192.168.212.52:8080 check inter 2000 fall 5

#server web01 192.168.80.102:80 cookie web01 check inter 2000 fall 5

创建socket文件的目录: [root@db02 ~]# mkdir /var/lib/haproxy/ 创建运行haproxy的用户: [root@db02 ~]# useradd -r -s /sbin/nologin -d /var/lib/haproxy haproxy 将haproxy的帮助文档,加入到帮助里边 [root@db02 ~]# tree /usr/local/haproxy/share/man/ [root@db02 ~]# vi /etc/man_db.conf MANDATORY_MANPATH /usr/local/haproxy/share/man/ 更新man的数据库: [root@db02 ~]# mandb

5、设置linux内核参数

vi /etc/sysctl.conf

#添加如下配置 net.ipv4.ip_nonlocal_bind = 1 net.ipv4.ip_forward = 1

[root@localhost haproxy-2.1.3]# sysctl -p net.ipv4.ip_nonlocal_bind = 1 net.ipv4.ip_forward = 1

6、配置HAProxy服务

vi /usr/lib/systemd/system/haproxy.service

[Unit]

Description=HAProxy Load Balancer

After=syslog.target network.target

Documentation=man:haproxy(1)

Documentation=file:/usr/local/haproxy/doc/haproxy/configuration.txt

[Service]

ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q

ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid

ExecReload=/bin/kill -USR2 $MAINPID

[Install]

WantedBy=multi-user.target

6、刷新配置,设置开机启动

systemctl daemon-reload

systemctl enable haproxy.service

#查看端口是否开启

[root@localhost ~]# ss -anlt

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process

LISTEN 0 128 0.0.0.0:80 0.0.0.0:*

LISTEN 0 128 0.0.0.0:22 0.0.0.0:*

LISTEN 0 128 0.0.0.0:8189 0.0.0.0:*

LISTEN 0 128 [::]:22 [::]:*

7、配置日志信息

[root@localhost ~]# vi /etc/rsyslog.conf

Log anything (except mail) of level info or higher.

Don't log private authentication messages!

*.info;mail.none;authpriv.none;cron.none /var/log/messages

local0.* /var/log/haproxy.log #添加此行内容

The authpriv file has restricted acc

[root@localhost ~]# systemctl restart rsyslog.service

[root@localhost ~]# systemctl enable rsyslog.service

[root@localhost ~]# systemctl restart haproxy.service

[root@localhost ~]# systemctl enable haproxy.service

关闭防火墙systemctl stop firewalld.service

关闭开机制动启动systemctl disable firewalld.service

访问haproxy自带监控界面

1689326820766.jpg