haproxy学习之安装部署和应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了haproxy学习之安装部署和应用相关的知识,希望对你有一定的参考价值。

【认识haproxy】

官网:www.haproxy.org

软件作用:负载均衡,可做4层也可做7层。

优点:

1 配置简单,软件使用简单

2 4、7层都可以做

3 有自动的监控检查功能

4 是一个专业反向代理软件

5 会话保持功能比较强大(ngixn的实现是通过ip hash,LVS 是通过-p)

6 几乎不需要优化,支持数以万计的并发连接。


常常用来对比LVS和nginx对比



【常用环境】

1 邮件服务器代理

2 取代F5 等设备,或者作为其备份

3 代理web


【haporxy的简单搭建和简单使用实例--代理ssh】

目的:学习了解haproxy



【系统的环境】

[[email protected] haproxy]# ifconfig |grep -A1 eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:65:14:0F  

          inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0

[[email protected] haproxy]# uname -r; uname -m

2.6.32-358.el6.x86_64

x86_64

[[email protected] haproxy]# cat /etc/issue

entOS release 6.4 (Final)



【软件准备】

[[email protected] haproxy]# ll -h /usr/local/src/haproxy-1.6.2.tar.gz 

-rw-r--r-- 1 root root 1.5M Sep  4 18:52 /usr/local/src/haproxy-1.6.2.tar.gz



【安装】

cd /usr/local/src
tar xvf haproxy-1.6.2.tar.gz 
cd haproxy-1.6.2
make TARGET=linux2628 ARCH=x86_64
make install PREFIX=/usr/local/haproxy


【安装结果和一些常用目录创建】

默认只有三个目录

[[email protected] haproxy]# tree -d /usr/local/haproxy/

/usr/local/haproxy/

├── doc

│   └── haproxy

├── sbin

└── share

    └── man



创建一些常用目录:

cd /usr/local/haproxy

mkdir -p etc var/run/ var/chroot logs  #放置haproxy配置文的目录,var/run 放置pid等文件的目录



创建haproxy用户

[[email protected] etc]# useradd haproxy

[[email protected] etc]# id haproxy

uid=1002(haproxy) gid=1002(haproxy) groups=1002(haproxy)


【编写haproxy配置文件】

vim haproxy.cfg


#Global settings

global

    log 127.0.0.1:514 local3 info  ###[err warning info debug]

    maxconn 20480

    chroot /usr/local/haproxy/var/chroot

    user haproxy #为haproxy 用户的uid ,haproxy用户需要自己手动创建

    group haproxy

    daemon  #后台运行

    quiet

    nbproc 2

    pidfile /usr/local/haproxy/var/run/haproxy.pid


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

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

## use if not designated in their block

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

defaults

    log global   ####采用全局定义的日志

    mode http   ###默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK

    maxconn 20480

    option httplog

    option httpclose

    option forwardfor

    option dontlognull ###不记录健康检查的日志信息

    option redispatch  ###serverId对应的服务器挂掉后,强制定向到其他健康的服务器

    retries 3   #3次连接失败就认为服务不可用,也可以通过后面设置

    balance roundrobin

    contimeout 5000

    clitimeout 50000

    srvtimeout 50000

listen ssh_poll

    bind 192.168.100.10:80

    mode tcp

    option httplog

    option dontlognull

    option logasap

    option forwardfor

    option httpclose

server host1 192.168.100.10:22 check inter 2000 rise 3 fall 3

server host2 192.168.100.13:22 check inter 2000 rise 3 fall 3


listen status

    bind 192.168.100.10:8080

    stats enable

    stats uri /stats   #管理地址

    stats auth admin:123456  #管理用户和密码

[[email protected] etc]# 




测试启动:

检查配置文件:

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.conf -c


-f 指定配置文件

-c check配置文件


后台启动

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.conf -D


检查是否启动1:

[[email protected] haproxy]# ps -ef |grep haproxy

haproxy   2394     1  0 22:22 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.conf -D

haproxy   2395     1  0 22:22 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.conf -D

root      2626  1707  0 22:27 pts/0    00:00:00 grep --color=auto haproxy


检查端口是否启动:

[[email protected] haproxy]# netstat -tulnp |grep 80

tcp        0      0 192.168.100.10:8080         0.0.0.0:*                   LISTEN      2394/haproxy        

tcp        0      0 192.168.100.10:80           0.0.0.0:*                   LISTEN      2394/haproxy  




【测试80-代理ssh端口】

[[email protected] haproxy]# ssh -p80 192.168.100.10

[email protected]‘s password: 

Last login: Sun Sep  4 22:23:02 2016 from 192.168.100.10    #第一被代理轮循到了host1

[[email protected] ~]# logout

Connection to 192.168.100.10 closed.

[[email protected] haproxy]# ssh -p80 192.168.100.10    

Last login: Sun Sep  4 22:23:05 2016 from 192.168.100.10      #第二被代理轮循到了host2

[[email protected] ~]# Connection to 192.168.100.10 closed by remote host.

Connection to 192.168.100.10 closed.





【查看日志和配置日志的路径】

1 日志被定义到了local3 级别为info。 这是要开启/etc/init.d/rsyslogd 服务的(如何使用这个服务,百度)。

2 netstat -tulnp |grep 514 查看是否监听rsyslogd端口


默认日志写入/var/log/messages

技术分享




如何修改日志的路径?

1 修改rsyslogd的配置(514监听端口一定要开启)

[[email protected] haproxy]# tail -1 /etc/rsyslog.conf 

local3.*     /usr/local/haproxy/logs/haproxy.log


2 重启rsyslogd服务

/etc/init.d/rsyslog restart



【编写haproxy的启动脚本】





本文出自 “学通信,第一份工作运维” 博客,请务必保留此出处http://cuidehua.blog.51cto.com/5449828/1846235

以上是关于haproxy学习之安装部署和应用的主要内容,如果未能解决你的问题,请参考以下文章

高负载均衡学习haproxy之安装与配置

Prometheus + Grafana 部署说明之安装

小5聊VS2019开发工具之安装和部署winform项目

部署LNMP架构之安装PHP

部署LNMP架构之安装nginx服务

Prometheus学习之安装