02 HA haproxy 2.0安装

阅读: 评论:0

02 HA haproxy 2.0安装

02 HA haproxy 2.0安装

HA haproxy 2.0 安装-2

  • 判断linxu 内核
  • 通过readme文件 使用make编译haproxy
  • 安装/usr/local/权限需要修改
  • 修改系统日志
  • 通过makefile文件
  • haproxy.init 自带启动脚本
  • 编译安装Haproxy(下面是操作是时用的命令)
  • 创建 haproxy.cfg
  • 通过命令方式启动haproxy
  • 创建haproxy 启动脚本(即前面修改的启动脚本图片的最终内容)
  • 服务脚本 启动脚本排错
    • Starting haproxy (via systemctl): Job for haproxy.service failed because the control process exited with error code. See "systemctl status haproxy.service" and "journalctl -xe" for details.
    • /etc/rc.d/init.d/haproxy: 第 26 行:[: =: 期待一元表达式
    • 修改完/etc/rc.d/init.d/haproxy 记得 执行systemctl daemon-reload 否则可能不生效。
    • service haproxy stop 不生效
    • Starting SYSV: HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availabili
  • 服务 启动脚本 2

前言:最近项目组需要搭建一个高可用系统,用到的是keepalived+haproxy的架构技术,作为小白的我也是搜了很多资料,最终测试环境部署成功。虽然实现了应有的功能,但是对于haproxy的更多功能也是一直半解,通过该文章做一个系统的复习。

判断linxu 内核

uname -r
3.10.0-327.el7.x86_64

通过readme文件 使用make编译haproxy

编译haproxy 参数 需要查看 解压后haproxy中的readme文件

编译安装

查看编译完成后是否报错

安装haproxy 查看/usr/local/haproxy 目录是否生成

haproxy.cfg



安装/usr/local/权限需要修改

因为haproxy.cfg配置中uid gid 是99

使用 id 99 查看用户组id 99 的用户组权限

递归修改haproxy的权限

chown nobody /usr/local/haproxy/ -R


修改系统日志


添加日志以及路径

重启系统日志

通过makefile文件

PREFIX :指定安装路径
指定 内核版本 TARGET=linux2628

haproxy.init 自带启动脚本


需要将启动脚本复制到指定目录

注意:linux基础差的可能看不懂haproxy.init 脚本 如果安装目录和配置文件目录和脚本中的不一样,就可能出现意想不到的错误。

本人修改hoproxy.init 修改点如下

编译安装Haproxy(下面是操作是时用的命令)

cd /usr/local/software
yum -y install gcc openssl-devel pcre-devel systemd-devel
# 后面网址可以在浏览器中打开查看是否存在当前版本 (本人尝试好几个地址 下面地址可用)
wget .4.
# 因为本人使用不是root用 故前面加sudo
sudo tar xvf  haproxy-2.4. -C /usr/local/
cd /usr/local/haproxy-2.4.2#参考INSTALL文件进行编译安装 权限不够 加 sudo
sudo make  ARCH=x86_64 TARGET=linux-glibc  USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1  USE_SYSTEMD=1  USE_LUA=1 LUA_INC=/usr/local/lua-5.3.5/src/  LUA_LIB=/usr/local/lua-5.3.5/src/ PREFIX=/usr/local/haproxy# ...... make 参数解析 start ...... #  (注意 LUA_INC 后面的路径)
ARCH=x86_64  #CPU架构
TARGET=linux-glibc  #通用linux内核  也可以通过readme 查看对应内核版本参数
USE_PCRE=1  #PCRE支持正则表达式,用于用户请求的uri
USE_OPENSSL=1   #https,证书
USE_ZLIB=1   #开启压缩
USE_SYSTEMD=1   #使用systemd启动haproxy主进程
USE_CPU_AFFINITY=1  #CPU亲和性,让haproxy指定的进程工作在指定的CPU核心上
USE_LUA=1 LUA_INC=/usr/local/lua-5.3.5/src LUA_LIB=/usr/local/lua-5.3.5/src   #开启lua,及lua和lua库所在路径
PREFIX=/usr/local/haproxy   #指定安装路径
# ...... make 参数解析 end ...... ##生成的模块、文件和二进制程序拷贝到指定路径
make install PREFIX=/usr/local/haproxy
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/# 检查 haproxy 版本
[userwin@MiWiFi-R3L-srv sbin]$ haproxy -v
HAProxy version 2.4.2-553dee3 2021/07/07 - /
Status: long-term supported branch - will stop receiving fixes around Q2 2026.
Known bugs: .4.2.html
Running on: Linux 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64

创建 haproxy.cfg

# 创建 haproxy.cfg (本人没有安装httpd 仅仅测试haproxy  目录是自己的目录)
cd /usr/local/haproxy/etc/
vim haproxyglobal
log 127.0.0.1 local0
maxconn 4096
#chroot /usr/local/haproxy
uid 99
gid 99
daemon
nbproc 1
#pidfile /usr/local/haproxy/run/haproxy.piddefaults
log global
log 127.0.0.1 local3
mode http
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
balance roundrobin
#stats uri /stats
timeout connect 5000
timeout client 50000
timeout server 50000
#option httpchk GET /index.htmllisten statsmode httpbind 0.0.0.0:9999stats enablelog globalstats uri /ha-stats#frontend http
#bind 0.0.0.0:80
#default_backend http_back    #backend http_back
#server s1 192.168.3.17:80 weight 3 check
#server s1 192.168.3.18:80 weight 3 check
#server s1 192.168.3.19:80 weight 3 check
# 创建 haproxy.cfg
mkdir  /etc/haproxy
cd /etc/haproxy
vim haproxy.cfg global  #全局设置daemon  #以后台进程运行maxconn 256  #每个进程的最大连接数nbproc 1  #进程数,该值可以设置小于或等于cpu核心数balance roundrobin #默认的负载均衡的方式,轮询方式 #balance source #默认的负载均衡的方式,类似nginx的ip_hash #balance leastconn #默认的负载均衡的方式,最小连接 defaultsoption http-keep-aliveoption  forwardformaxconn 256#设置http(七层模式),也可设置为tcp(四层模式),另外还有一个Health健康监测模式。对mysql进行负载均衡的话,这里记得修改为tcpmode http timeout connect 5000mstimeout client  50000mstimeout server  50000mslisten statsmode httpbind 0.0.0.0:9999stats refresh 30s  #自动刷新时间stats uri /stats  #项目名为status,ip+端口+项目名即可访问stats auth admin:admin  #配置管理用户账号密码stats admin if TRUEstats hide-versionlisten  web_portbind 10.0.0.7:80mode httpserver web1  127.0.0.1:8080  check inter 3000 fall 2 rise 5
backend serversserver server1 172.16.1.230:80 check inter 2000 rise 3 fall 3 weight 1 maxconn 32

通过命令方式启动haproxy

使用指定配置文件运行haproxy。建议都haproxy和hadproxy.cfg都使用绝对路径

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg


上面错误是因为没有启动web服务器,注释了监听端口后依然报错,因为haproxy检测不到listener

创建haproxy 启动脚本(即前面修改的启动脚本图片的最终内容)

注意事项见上面图片

cd /etc/init.d
vim haproxy#!/bin/sh
#
# chkconfig: - 85 15
# description: HAProxy is a TCP/HTTP reverse proxy which is particularly suited 
#              for high availability environments.
# processname: haproxy
# config: /usr/local/haproxy/etc/haproxy.cfg
# pidfile: /usr/local/haproxy/etc/run/haproxy.pid# Script Author: Simon Matter <simon.matter@invoca.ch>
# Version: 2004060600# Source function library.
if [ -f /etc/init.d/functions ]; then. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then. /etc/rc.d/init.d/functions
elseexit 0
fi# Source networking configuration.
. /etc/sysconfig/network# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0# This is our service name
BASENAME=`basename $0`
if [ -L $0 ]; thenBASENAME=`find $0 -name $BASENAME -printf %l`BASENAME=`basename $BASENAME`
fiBIN=/usr/sbin/$BASENAMECFG=/usr/local/$BASENAME/etc/$BASENAME.cfg
[ -f $CFG ] || exit 1PIDFILE=/usr/local/$BASENAME/run/$BASENAME.pid
LOCKFILE=/usr/local/$BASENAME/run/$BASENAMERETVAL=0start() {quiet_checkif [ $? -ne 0 ]; thenecho "Errors found in configuration file, check it with '$BASENAME check'."return 1fiecho -n "Starting $BASENAME: "daemon $BIN -D -f $CFG -p $PIDFILERETVAL=$?echo[ $RETVAL -eq 0 ] && touch $LOCKFILEreturn $RETVAL
}stop() {echo -n "Shutting down $BASENAME: "killproc $BASENAME -USR1RETVAL=$?echo[ $RETVAL -eq 0 ] && rm -f $LOCKFILE[ $RETVAL -eq 0 ] && rm -f $PIDFILEreturn $RETVAL
}restart() {quiet_checkif [ $? -ne 0 ]; thenecho "Errors found in configuration file, check it with '$BASENAME check'."return 1fistopstart
}reload() {if ! [ -s $PIDFILE ]; thenreturn 0fiquiet_checkif [ $? -ne 0 ]; thenecho "Errors found in configuration file, check it with '$BASENAME check'."return 1fi$BIN -D -f $CFG -p $PIDFILE -sf $(cat $PIDFILE)
}check() {$BIN -c -q -V -f $CFG
}quiet_check() {$BIN -c -q -f $CFG
}rhstatus() {status $BASENAME
}condrestart() {[ -e $LOCKFILE ] && restart || :
}# See how we were called.
case "$1" instart)start;;stop)stop;;restart)restart;;reload)reload;;condrestart)condrestart;;status)rhstatus;;check)check;;*)echo $"Usage: $BASENAME {start|stop|restart|reload|condrestart|status|check}"exit 1
esacexit $?

服务脚本 启动脚本排错

Starting haproxy (via systemctl): Job for haproxy.service failed because the control process exited with error code. See “systemctl status haproxy.service” and “journalctl -xe” for details.

[root@MiWiFi-R3L-srv ~]# /etc/init.d/haproxy  start
Starting haproxy (via systemctl):  Job for haproxy.service failed because the control process exited with error code. See "systemctl status haproxy.service" and "journalctl -xe" for details.[失败]
# 需要执行 systemctl status haproxy.service  或者  journalctl -xe 来查看具体的报错
systemctl status haproxy.service
journalctl -xe

/etc/rc.d/init.d/haproxy: 第 26 行:[: =: 期待一元表达式

修改完/etc/rc.d/init.d/haproxy 记得 执行systemctl daemon-reload 否则可能不生效。

service haproxy stop 不生效


查看/etc/rc.d/init.d/haproxy 使用 killproc 命令 查看是否 killproc 环境

stop() {echo -n "Shutting down $BASENAME: "killproc $BASENAME -USR1RETVAL=$?echo[ $RETVAL -eq 0 ] && rm -f $LOCKFILE[ $RETVAL -eq 0 ] && rm -f $PIDFILEreturn $RETVAL
}

Starting SYSV: HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availabili

参考图片 也是在网上查的资料 尝试过 对我的错误没有见效,也许对你的错误有用。

服务 启动脚本 2

==与上面创建haproxy脚本使用功能一个就行了,但是要注意里面的路径要正确=

cd /usr/lib/systemd/system
vim haproxy.service[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg  -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /usr/local/haproxy/etc/run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID[Install]
WantedBy=multi-user.target#默认缺少配置文件,无法启动
systemctl daemon-reload
systemctl start haproxy

小结:看遍教程千千万,不如实操来一遍,本人在实操过程中,没有按照教程的中路径,中间出现很多错误,鉴于对运维知识不是很熟悉,踩了很多的坑。如果此文能帮助到你,麻烦点个赞。谢谢。

本文发布于:2024-02-01 10:06:34,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170675319635876.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:HA   haproxy
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23