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

[经验分享] Haproxy的介绍和安装

[复制链接]

尚未签到

发表于 2019-1-1 08:14:12 | 显示全部楼层 |阅读模式
  Haproxy的介绍和安装
Haproxy介绍
软件介绍
Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,它支持双机热备,虚拟主机,基于TCP和HTTP应用代理等功能。配置简单,而且拥有服务器节点的健康检查功能(相当于keepalived健康检查),当后端服务器宕机时,haproxy会自动将故障服务器摘除,当服务器故障恢复后,再自动加入到集群中。
Haproxy特别在适用于那些访问量很大,但又需要会话保持或七层应用的业务。支持两种主要的代理模式:4层Tcp代理(例如邮件服务,mysql业务,ssh等)和7层(HTTP代理)。在4层tcp模式下,haproxy仅在客户端和服务器之间转发双向流量。7层模式下haproxy会分析应用层协议,并且能通过允许,拒绝,交换,增加,修改或者删除请求或者回应里指定内容来控制协议
  Haproxy采用的是NAT模式,数据包来去都会经过haproxy。
4层代理和7层代理介绍
  Haproxy软件的4层tcp代理应用非常优秀,配置非常简单方便,比lvs和nginx要方便的多,haproxy不需要在RS端执行脚本即可实现应用代理

  从上图可以看出,haproxy采用的是NAT的工作模式,网站所有流量都经过haproxy,所以适用于那些访问量不是特别大的网站,在一般的中小型公司,建议使用haproxy做负载均衡。
  Haproxy最大额优点在于其7层的根据URL请求头应用过滤的功能,在门户网站的高并发生产架构中。Haproxy软件一般用在LVS软件的下一层,或挂在硬件负载均衡althon、NS、F5下使用

Haproxy安装部署
下载软件包,并安装
cd /usr/src
wget http://down1.chinaunix.net/distfiles/haproxy-1.4.21.tar.gz
tar zxf haproxy-1.4.21.tar.gz
cd haproxy-1.4.21
make TARGET=linux26 ARCH=x86_64
make PREFIX=/usr/local/haproxy-1.4.21 install
ln -s /usr/local/haproxy-1.4.21/ /usr/local/haproxy
说明:
1.      make TARGET=linux26  ARCH=x86_64                是64位系统的编译方式
32位系统的编译方式为:
make  TARGET=linux26 ARCH=x86
2. TARGET 后面是系统内核,不同版本的linux系统,内核版本不一样。可以 more  README 查看详细信息

创建相关目录,使软件更结构化
  默认的文件结构为:
[root@localhost haproxy]# tree
├── doc
│  └── haproxy
│       ├── architecture.txt
│       ├── configuration.txt
│       ├── haproxy-en.txt
│       └── haproxy-fr.txt
├── sbin
│  └── haproxy
└── share
    └── man
        └── man1
            └── haproxy.1
6 directories, 6 files
现在创建 bin conf logsvar/chroot var/run等目录
cd /usr/local/haproxy  
mkdir -p conf bin logs var/run var/chroot

查看:
[root@localhost  haproxy]# tree
.
├── bin
├── conf
├── doc
│   └── haproxy
│       ├──  architecture.txt
│       ├──  configuration.txt
│       ├── haproxy-en.txt
│       └── haproxy-fr.txt
├── logs
├── sbin
│   └── haproxy
├── share
│   └── man
│       └── man1
│           └── haproxy.1
└── var
    ├── chroot
    └── run

12 directories, 6 files
至此,haproxy已经安装完成。配置需要我们手动创建,下面先简单进行配置,并测试
Haproxy主配置文件
cat >/usr/local/haproxy/conf/haproxy.conf  &1
         $PROG  -f $CONFFILE
       [ $?  -eq 0 ] && {
        action  "haproxy start is  OK..."  /bin/true
} || action  "haproxy start is error..." /bin/false
         ;;
status)
         if [ !  -f $PIDFILE ]; then
                   echo  "pid not found"
                   exit  1
         fi
         for  pid in $(cat $PIDFILE); do
                   kill  -0 $pid
                   RETVAL="$?"
                   if  [ ! "$RETVAL" = "0" ]; then
                            echo  "process $pid died"
                            exit  1
                   fi
         done
         echo  "process is running"
         ;;
restart)
         $PROG  -f $CONFFILE -sf $(cat $PIDFILE) >/dev/null 2>&1
         ;;
stop)
         kill  $(cat $PIDFILE)
[ $? -eq 0 ] && {
        action  "haproxy stop is  OK..."  /bin/true
} || action  "haproxy stop is error..." /bin/false
         ;;
*)
         echo  "USAGE: $0 start|restart|status|stop"
         exit 1
         ;;
esac
  把启动文件放在bin目录下,并赋予执行权限,添加开机自启动
chmod 755 haproxy
echo "/usr/local/haproxy/bin/haproxy  start" >> /etc/rc.local
tail -1 /etc/rc.local
查看结果: /usr/local/haproxy/bin/haproxy start

  启动haproxy,并测试
/usr/local/haproxy/bin/haproxy start
启动结果:
[root@localhost  bin]# /usr/local/haproxy/bin/haproxy  start
[WARNING]  269/165754 (1791) : Proxy 'admin_status': in multi-process mode, stats will  be limited to process assigned to the current request.
haproxy  start is  OK...                                    [确定]
[root@localhost bin]# netstat -anput | grep haproxy
tcp         0      0 192.168.1.104:80            0.0.0.0:*                   LISTEN      1792/haproxy
tcp         0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      1792/haproxy
udp         0      0 0.0.0.0:38073               0.0.0.0:*                               1792/haproxy
[root@localhost  bin]# ps -aux | grep  haproxy
Warning:  bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
haproxy   1792   0.0  0.6  18312   3348 ?        Ss   16:57    0:00 /usr/local/haproxy/sbin/haproxy -f  /usr/local/haproxy/conf/haproxy.conf
haproxy   1793   0.0  0.6  18312   3348 ?        Ss   16:57    0:00 /usr/local/haproxy/sbin/haproxy -f  /usr/local/haproxy/conf/haproxy.conf
haproxy   1794   0.0  0.6  18312   3348 ?        Ss   16:57    0:00 /usr/local/haproxy/sbin/haproxy -f  /usr/local/haproxy/conf/haproxy.conf
haproxy   1795   0.0  0.6  18312   3348 ?        Ss   16:57    0:00 /usr/local/haproxy/sbin/haproxy -f  /usr/local/haproxy/conf/haproxy.conf
haproxy   1796   0.0  0.6  18312   3348 ?        Ss   16:57    0:00 /usr/local/haproxy/sbin/haproxy -f  /usr/local/haproxy/conf/haproxy.conf
haproxy   1797   0.0  0.6  18312   3348 ?        Ss   16:57    0:00 /usr/local/haproxy/sbin/haproxy -f  /usr/local/haproxy/conf/haproxy.conf
haproxy   1798   0.0  0.6  18312   3348 ?        Ss   16:57    0:00 /usr/local/haproxy/sbin/haproxy -f  /usr/local/haproxy/conf/haproxy.conf
haproxy   1799   0.0  0.6  18312   3348 ?        Ss   16:57    0:00 /usr/local/haproxy/sbin/haproxy -f  /usr/local/haproxy/conf/haproxy.conf
root      1804   0.0  0.1 103244   868 pts/0    S+    16:59   0:00 grep haproxy
haproxy已经成功启动。查看发现,80端口和8080端口已经监听,而且有8个进程在系统后台。下面开始测试
[root@localhost  bin]# for ((i=1;i>/etc/rsyslog.conf  /etc/sysctl.conf
sysctl -p

所以这种方法有效解决了在主备haproxy环境下,VIP不在备haproxy上时,备haproxy能正常启动的问题
由于haproxy工作模式是NAT模式,为了更好的实现转发请求,需要开启linux本身的转发功能
sed -i "s/net.ipv4.ip_forward =  0/net.ipv4.ip_forward = 1/g" /etc/sysctl.conf
sysctl -p

Haproxy多实例配置
  Haproxy支持多实例,每个实例可以有自己的单独配置文件。启动的时候用-f指定配置文件即可。下面增加一个实例,用来代理ssh服务
[table][tr][td=1,1,697]cat > /usr/local/haproxy/conf/haproxy-ssh.conf

运维网声明 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-658103-1-1.html 上篇帖子: HAproxy指南之haproxy实现动静分离(案例篇) 下篇帖子: logstash解析haproxy的haproxy.log日志字段
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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