设为首页 收藏本站
查看: 1189|回复: 0

[经验分享] haproxy 1.8.X版本编译安装教程

[复制链接]

尚未签到

发表于 2019-1-2 08:06:56 | 显示全部楼层 |阅读模式
1.7和1.8版本的haproxy 略有不同,从1.8.3版本开始,haproxy支持单主进程多子进程模式,类似于的Nginx的单master process进程多worker process结构,haproxy 1.8.3之前的版本是多个主进程,haproxy 1.8.3安装的时候需要安装systemd-devel提供底层编译支持,否则编译安装haproxy 的时候会报错,并且使用Ws参数启动haproxy主进程,之前的版本没有此参数,具体过程参考如下:

1.1:下载并编译安装haproxy-1.8.3:
[root@bj-zw-comm-lb-h-25-3 ~]# cd /usr/local/src/#安装基础依赖包,必须安装system-devel,如果不安装会报错
[root@bj-zw-comm-lb-h-25-3 src]# yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel systemd-devel net-tools vim iotop bc  zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate
[root@bj-zw-comm-lb-h-25-3 src]# tar xvf haproxy-1.8.3.tar.gz
[root@bj-zw-comm-lb-h-25-3 src]# cd haproxy-1.8.3/#USE_CPU_AFFINITY=1 为开启haproxy进程与CPU核心绑定,USE_SYSTEMD=1为支持使用 -Ws参数(systemd-aware master-worker 模式)启动Haproxy,从而实现单主进程多子进程运行模式。
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# make  ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1  USE_CPU_AFFINITY=1  PREFIX=/usr/local/haproxy
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# make install PREFIX=/usr/local/haproxy
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# cp haproxy  /usr/sbin/1.2:准备启动脚本文件:
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# vim /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load BalancerAfter=syslog.target network.target
[Service]
#支持多配置文件读取,类似于从侧面是实现配置文件的include功能。
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -p /run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]WantedBy=multi-user.target1.3:验证haproxy版本:
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# haproxy -v
HA-Proxy version 1.8.3-205f675 2017/12/30
Copyright 2000-2017 Willy Tarreau 1.4:定义简单haproxy配置文件:
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# mkdir  /etc/haproxy
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# mkdir  /etc/haprox/conf
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# cat  /etc/haproxy/haproxy.cfg
global
maxconn 100000
chroot /usr/local/haproxy
#stats socket /var/lib/haproxy/haproxy.sock
mode 600 level admin
uid 99
gid 99
daemon
nbproc 4
cpu-map 1 0
cpu-map 2 1
cpu-map 3 2
cpu-map 4 3
pidfile /usr/local/haproxy/run/haproxy.pid
log 127.0.0.1 local3 info
defaults
option http-keep-alive
option  forwardfor
maxconn 100000mode http
timeout connect 300000ms
timeout client  300000ms
timeout server  300000ms
listen stats
mode http
bind 0.0.0.0:9999 stats enable
log global
stats uri     /haproxy-status
stats auth    admin:admin   #状态页登录用户名:密码 [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# cat  /etc/haproxy/conf/tomcat-web.cfg  #注意此处配置文件必须以.cfg结尾
listen  web_port
bind 0.0.0.0:80 mode http
log global
server web1  127.0.0.1:8080  check inter 3000 fall 2 rise 5  
1.5:启动验证haproxy状态:
1.5.1:以下是1.8.3版本的单主进程多子进程模式:
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# systemctl daemon-reload
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# systemctl  restart haproxy
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# cat /run/haproxy.pid 41998
[root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# ps -ef | grep haproxy
root      41998      1  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
nobody    41999  41998  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
nobody    42000  41998  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
nobody    42001  41998  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
nobody    42002  41998  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
root      42186  10580  0 16:28 pts/14   00:00:00 grep --color=auto haproxy1.5.2:以下是1.7版本的传统多进程的haproxy模式:
[root@docker-server4 ~]# ps -ef | grep haproxy
root     118786      1  0 17:10 ?        00:00:00 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
root     118787 118786  0 17:10 ?        00:00:00 [haproxy]
nobody   118788      1  6 17:10 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
nobody   118789      1  6 17:10 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
nobody   118790      1  3 17:10 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
nobody   118791      1  5 17:10 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
root     118814  99636  0 17:10 pts/0    00:00:00 grep --color=auto haproxy1.5.3:以下是Nginx的单主进程多子进程模式,此模式和1.8.3版本的haproxy工作模式是类似的:
[root@docker-server5 ~]# ps -ef | grep nginx
root     13399     1  0 Jan06 ?        00:00:01 nginx: master process /apps/tengine/sbin/nginx -s start
devops   22165 22122  0 16:20 pts/0    00:00:00 grep --color=auto nginx
zceo     22915 13399  0 Jan13 ?        00:41:41 nginx: worker process
zceo     22916 13399  0 Jan13 ?        00:41:59 nginx: worker process
zceo     22917 13399  0 Jan13 ?        00:41:38 nginx: worker process
zceo     22918 13399  0 Jan13 ?        00:41:32 nginx: worker process
zceo     22919 13399  0 Jan13 ?        00:41:22 nginx: worker process
zceo     22920 13399  0 Jan13 ?        00:41:40 nginx: worker process
zceo     22921 13399  0 Jan13 ?        00:42:07 nginx: worker process
zceo     22922 13399  0 Jan13 ?        00:41:40 nginx: worker process1.5.4:以下是apache的单主进程多子进程模式,也和1.8.3版本的haproxy工作模式类似:
[root@ztouch-cluster12-web1 ~]# ps -ef | grep apache
root      6758     1  0 11:01 ?        00:00:00 /usr/local/apache2.2.17/bin/httpd -k start
webshop   6760  6758  0 11:01 ?        00:00:00 /usr/local/apache2.2.17/bin/httpd -k start
webshop   6761  6758  0 11:01 ?        00:00:02 /usr/local/apache2.2.17/bin/httpd -k start
webshop   6762  6758  0 11:01 ?        00:00:03 /usr/local/apache2.2.17/bin/httpd -k start
webshop   6764  6758  0 11:01 ?        00:00:03 /usr/local/apache2.2.17/bin/httpd -k start
webshop   6770  6758  0 11:01 ?        00:00:03 /usr/local/apache2.2.17/bin/httpd -k start
webshop   6771  6758  0 11:01 ?        00:00:03 /usr/local/apache2.2.17/bin/httpd -k start
webshop   6780  6758  0 11:01 ?        00:00:02 /usr/local/apache2.2.17/bin/httpd -k start
root      8076  8038  0 11:50 pts/2    00:00:00 grep apache
注意:Haproxy结合keepalived做高可用时,keepalived的主从节点监听同一VIP地址,会导致从节点的Haproxy启动失败
解决方法:
    修改内核参数:
        echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
        sysctl -p



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658470-1-1.html 上篇帖子: 配置 Haproxy 防止 DDOS *** 下篇帖子: Haproxy+keepalivd+varnish+LAMP实验
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表