HaProxy安装/启动/简单配置

来源:互联网 发布:无间道知乎细节 编辑:程序博客网 时间:2024/06/06 00:05
Haproxy 虽然带着ha,但它做的确是负载均衡。haproxy是工作在四层之上的,这也就意味着它可以代理的服务要比nginx更广泛,性能比nginx也要更高一些。相比较lvs,可配置性又比较好,需要的机器没有lvs那么多。因此haproxy在一定需求下使用还是不错的。比如使用haproxy来对mysql的从节点进行负载均衡。下面我们就来简单的使用haproxy来进行MySQL的负载均衡。

环境准备

IP地址
职能
192.168.111.100
负载均衡服务器
192.168.111.101
MySQL服务器
192.168.111.102
MySQL服务器

我们这里假设两台节点的MySQL服务器都已经安装完毕了。而且进行了如下配置

1.MySQL的端口都为3306
2.服务器开启了 3306 端口
3.创建MySQL用户 test ,密码 test ,可被 192.168.111.* 下的主机访问
4.为了显示负载到两个不同的机器,在一个机器中创建一个不同于另一个机器的数据库,用以区分。一个是MySQL1,一个是MySQL2

下面主要针对的是负载均衡节点的安装以及配置,也就是本笔记的核心。

先来下载haproxy,下载地址

http://www.haproxy.org/

解压

tar -zxvf haproxy-1.7.8.tar.gz

安装(编译的时候需要指定内核的版本,安装的时候需要指定安装的路径)

make TARGET=linux26make install PREFIX=/usr/local/haproxy

在make的过程中需要指定linux的内核版本,可以通过下面的命令来查看内核版本
cat /proc/version

安装成功信息(下面的安装信息是不指定PREFIX的情况下的)
[root@m007 haproxy-1.7.8]# make installinstall -d "/usr/local/sbin"install haproxy  "/usr/local/sbin"install -d "/usr/local/share/man"/man1install -m 644 doc/haproxy.1 "/usr/local/share/man"/man1install -d "/usr/local/doc/haproxy"for x in 51Degrees-device-detection architecture close-options configuration cookie-options DeviceAtlas-device-detection intro linux-syn-cookies lua management netscaler-client-ip-insertion-protocol network-namespaces proxy-protocol SPOE WURFL-device-detection; do \        install -m 644 doc/$x.txt "/usr/local/doc/haproxy" ; \    done
在这里,我先说说我的目录结构的规划,我在学习的过程中,感觉在目录结构上遇到了很多坑。在这里把我的目录结构列出来,我的haproxy是放到usr/local/haproxy下的

/usr/local/haproxy
     sbin    这里放的是可执行文件,就是haproxy (安装的过程中创建的)
          haproxy
     logs     这里放的是记录的日志(自己创建的)
          haproxy.log
     conf     这里放置的是配置文件(自己创建的)
          haproxy.cnf
          haproxy.pid
     doc     我还没用到过,看名字应该是存放的文档(安装过程中创建的)
          haproxy
     share     这个我也没用到过也是在安装过程中创建的
          man
也就是说,我们这里要自己创建两个文件夹,一个是logs,一个是conf。在这两个文件夹下,要创建一个log文件,一个cnf主配置文件和一个pid文件。

安装成功之后就是要进行配置,配置的过程还是比较麻烦的。首先1.7.8这个版本我并没有找到它提供的配置文件。我确实找了examples下的配置文件,没有找到。于是我在网上找到的一些配置进行的拼凑出来的。下面列出haproxy最简单的配置信息。这个配置的内容是放到/usr/local/haproxy/conf/haproxy.cnf文件中的。其中这里用到了pid文件,我在pid中就保存了一个1.
global        daemon               # 后台方式运行        nbproc 1        pidfile /usr/local/haproxy/conf/haproxy.piddefaults        mode tcp               #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK        retries 2               #两次连接失败就认为是服务器不可用,也可以通过后面设置        option redispatch       #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器        option abortonclose     #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接        maxconn 4096            #默认的最大连接数        timeout connect 5000ms  #连接超时        timeout client 30000ms  #客户端超时        timeout server 30000ms  #服务器超时        #timeout check 2000      #=心跳检测超时        log 127.0.0.1 local0 err #[err warning info debug]########test1配置#################listen test1                         #这里是配置负载均衡,test1是名字,可以任意        bind 0.0.0.0:3306            #这里是监听的IP地址和端口,端口号可以在0-65535之间,要避免端口冲突        mode tcp                     #连接的协议,这里是tcp协议        #maxconn 4086        #log 127.0.0.1 local0 debug        server s1 192.168.111.101:3306 #负载的机器        server s2 192.168.111.102:3306 #负载的机器,负载的机器可以有多个,往下排列即可
这样就配置好了。下面来启动haproxy
./usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cnf
-f 是指定我们的配置文件的路径。

启动过程中没有任何日志信息打印,安静到让你怀疑没有启动成功,然后本都的你去查看日志,发现日志里没有任何信息,不知道是你的日志没有配置正确还是系统启动没有问题,茫茫然的感觉,不知该从哪里下手。但作为程序员的你思维还是敏捷的,咱先测测能不能负载均衡啊,于是使用MySQL的客户端工具,输入本地机器的ip,加上监听的端口号,发现连上了,然后再退出重新连,发现连了另外的一台机器,到这里,我们发现这个实验已经成功了。但作为程序员的你仍心有不甘,我们要监控,我们还要查看日志。下面来继续

配置监控
haproxy带有监控功能,而且配置简单,直接在主配置文件中加入一下配置即可,格式就是这么缩进的,非拷贝出现问题。这个配置中可以看到,项目的名称使用的是haproxy,访问的时候在浏览器中输入本机的IP地址加端口加上uri就可以了。例如:http://192.168.111.100:8888/haproxy
listen  admin_stats        bind 0.0.0.0:8888         mode  http         stats uri   /haproxy        stats realm     Global\ statistics         stats auth  admin:admin


下面配置日志

日志暂时没还搞定(跟着网上的步骤在做,但始终就是不给我记录,我也没辙啊,研究完再单独写一个记录日志的吧)

端口检测
haproxy可以检测我们的服务是否宕机,检测的方式就是通过指定检测端口。配置非常简单
listen test1        bind 0.0.0.0:3306        mode tcp        #maxconn 4086        #log 127.0.0.1 local0 debug        server s1 192.168.111.101:3306 check port 3306        server s2 192.168.111.102:3306 check port 3306
当我们停止一个服务的时候,监控视图如下(很快把我们关掉的机器就标记为红色了)



查看haproxy的进程状态
ps -ef | grep haproxy
杀掉haproxy进程
kill -9 pid
原创粉丝点击