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
阅读全文
1 0
- HaProxy安装/启动/简单配置
- HAProxy安装及简单配置
- Keepalived&Haproxy的简单安装配置
- haproxy简单配置说明
- Haproxy简单配置实例
- haproxy简单配置
- haproxy安装与配置
- haproxy安装与配置
- Haproxy安装配置
- Haproxy安装和配置
- Haproxy安装与配置
- haproxy安装与配置
- Haproxy+keepalived安装配置
- haproxy 安装和配置
- Haproxy 安装 配置
- haproxy安装配置
- Haproxy安装及配置
- haproxy安装配置介绍
- java中参数和属性的区别
- DeepFace: 结构化图片的特殊处理
- 51Testing软件测试论坛
- Angular2引导方式:基于JIT的动态引导和基于AOT的静态引导
- 有手机直播源码,不会搭看这里
- HaProxy安装/启动/简单配置
- json格式转换list
- Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{*****Activity}: java.lang.C
- 洛谷P1594 护卫队
- 安卓学习笔记之Handler
- 覆盖父类方法的new和override关键字
- 引用作为函数与指针及值传递的差别
- SpringMVC 通过ajax从controller传值给js出现中文乱码
- spring学习之---依赖注入