1、Haproxy的简介
HAProxy各版本的官方文档:http://cbonte.github.io/haproxy-dconv/index.html
HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
MyCat官方推荐使用HAProxy做MyCat的高可用负载均衡代理。
本文采用的haproxy-2.5-dev3版本

2、下载安装包并解压
tar -xzvf haproxy-2.5-dev3.tar.gz

3、安装预编译依赖包
sudo apt-get install make gcc gcc-c++ libpcre3-dev openssl libssl-dev zlib1g-dev

4、编译
切换到刚解压的目录并执行命令:
sudo make TARGET=linux-glibc ARCH=x86_64 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy

5、创建安装目录 /usr/local/haproxy
sudo mkdir /usr/local/haproxy

6、执行安装
切换到解压的目录并执行命令
sudo make install PREFIX=/usr/local/haproxy

7、创建配置文件目录

[root@localhost haproxy]# mkdir -p /usr/local/haproxy/conf
[root@localhost haproxy]# mkdir -p /etc/haproxy/

8、从配置文件模版复制配置文件(详细配置见文末),并添加配置文件软连接

[root@localhost haproxy-1.8.20]# cp ~/haproxy-1.8.20/examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg
[root@localhost haproxy-1.8.20]# ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg

9、拷贝错误页面,并添加目录软连接(HTTP模式选配)

cp -r ~/haproxy-1.8.20/examples/errorfiles /usr/local/haproxy/
ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles

10、拷贝开机启动文件,并赋予可执行权限

cp ~/haproxy-1.8.20/examples/haproxy.init /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy

11、添加haproxy命令脚本软连接

ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin

12、设置HAProxy开机启动(可选)

chkconfig --add haproxy
chkconfig haproxy on

13、根据以上HAProxy配置文件要求做以下配置
添加haproxy用户组和用户,创建chroot运行的路径

[root@localhost haproxy]# groupadd haproxy
[root@localhost haproxy]# useradd -g haproxy haproxy
[root@localhost haproxy]# mkdir /usr/share/haproxy

14、开启rsyslog的haproxy日志记录功能
默认情况下 haproxy是不记录日志的,如果需要记录日志,还需要配置系统的syslog,在linux系统中是rsyslog服务。syslog服务器可以用作一个网络中的日志监控中心,rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。安装配置rsyslog服务:

sudo apt-get install rsyslog

修改配置文件:

vi /etc/rsyslog.conf
把#module(load="imudp")和#input(type="imudp" port="514")前面的 # 去掉
module(load="imudp")  # 是模块名,支持UDP协议
input(type="imudp" port="514") #允许514端口接收使用UDP和TCP协议转发过来的日志,而rsyslog在默认情况下,正是在514端口监听UDP

在/etc/rsyslog.d/目录下创建 haproxy的日志配置文件haproxy.log。

[root@localhost rsyslog.d]# touch /etc/rsyslog.d/haproxy.log
[root@localhost rsyslog.d]# vim /etc/rsyslog.d/haproxy.log

文件内容如下:

local0.* /var/log/haproxy.log
&~

说明:如果不加上面的的"&~"配置则除了在/var/log/haproxy.log中写入日志外,也会写入/var/log/message文件中。
配置保存后重启rsyslog服务:systemctl restart rsyslog.service

15、防火墙中打开3306端口和48800端口(打开可跳过)

# vim /etc/sysconfig/iptables ,并重启防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 48800 -j ACCEPT
# service iptables restart

16、配置系统内核IP包转发规则
修改文件/etc/sysctl.conf,修改内容为:net.ipv4.ip_forward = 1,然后执行sysctl -p使其生效

17、启动HAProxy并查看进程

(1) service haproxy start

(2) /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

查看进程命令 : ps -ef | grep haproxy

附: haproxy-mycat配置文件内容

##
## Haproxy 配置文件
##
##################################################################################################### global配置中的参数为进程级别的参数,通常与其运行的操作系统有关
globallog 127.0.0.1    local0    info ## 定义全局的syslog服务器,最多可以定义2个### local0是日志设备,对应于/etc/rsyslog.conf中的配置,默认回收info的日志级别#log 127.0.0.1    local1 infochroot /usr/share/haproxy    ## 修改HAProxy的工作目录至指定的目录并在放弃权限之前执行### chroot() 操作,可以提升 haproxy 的安全级别group    haproxy    ## 同gid,不过这里为指定的用户组名user    haproxy    ## 同uid,但这里使用的为用户名daemon    ## 设置haproxy后台守护进程形式运行nbproc    1    ## 指定启动的haproxy进程个数,### 只能用于守护进程模式的haproxy;默认为止启动1个进程,### 一般只在单进程仅能打开少数文件描述符的场中中才使用多进程模式maxconn 4096    ## 设定每个haproxy进程所接受的最大并发连接数,### 其等同于命令行选项"-n","ulimit-n"自动计算的结果正式参照从参数设定的# pidfile    /var/run/haproxy.pid    ## 进程文件(默认路径 /var/run/haproxy.pid)node    edu-haproxy-01    ## 定义当前节点的名称,用于HA场景中多haproxy进程共享同一个IP地址时description    edu-haproxy-01    ## 当前实例的描述信息## defaults:用于为所有其他配置段提供默认参数,这默认配置参数可由下一个"defaults"所重新设定
defaultslog    global    ## 继承global中log的定义mode    http    ## mode:所处理的模式 (tcp:四层 , http:七层 , health:状态检查,只会返回OK) ### tcp: 实例运行于纯tcp模式,在客户端和服务器端之间将建立一个全双工的连接,#### 且不会对7层报文做任何类型的检查,此为默认模式### http:实例运行于http模式,客户端请求在转发至后端服务器之前将被深度分析,#### 所有不与RFC模式兼容的请求都会被拒绝### health:实例运行于health模式,其对入站请求仅响应“OK”信息并关闭连接,#### 且不会记录任何日志信息 ,此模式将用于相应外部组件的监控状态检测请求option    httplogretries    3option redispatch    ## serverId对应的服务器挂掉后,强制定向到其他健康的服务器maxconn    2000    ## 前端的最大并发连接数(默认为2000)### 其不能用于backend区段,对于大型站点来说,可以尽可能提高此值以便让haproxy管理连接队列,### 从而避免无法应答用户请求。当然,此最大值不能超过“global”段中的定义。### 此外,需要留心的是,haproxy会为每个连接维持两个缓冲,每个缓存的大小为8KB,### 再加上其他的数据,每个连接将大约占用17KB的RAM空间,这意味着经过适当优化后 ,### 有着1GB的可用RAM空间时将维护40000-50000并发连接。### 如果指定了一个过大值,极端场景中,其最终所占据的空间可能会超过当前主机的可用内存,### 这可能会带来意想不到的结果,因此,将其设定一个可接受值放为明智绝对,其默认为2000timeout connect    5000ms    ## 连接超时(默认是毫秒,单位可以设置us,ms,s,m,h,d)timeout client    50000ms    ## 客户端超时timeout server    50000ms    ## 服务器超时## HAProxy的状态信息统计页面
listen admin_stats bind    :48800  ## 绑定端口stats    uri /admin-status    ## 统计页面URIstats    auth admin:admin    ## 设置统计页面认证的用户和密码,如果要设置多个,另起一行写入即可mode    httpoption    httplog    ## 启用日志记录HTTP请求## listen: 用于定义通过关联“前端”和“后端”一个完整的代理,通常只对TCP流量有用
listen    mycat_serversbind    :3307  ## 绑定端口 ---------------------------------------------------------------------这里一定要注意,在测试连接的时候,端口指定3307mode    tcpoption    tcplog    ## 记录TCP请求日志option    tcpka    ## 是否允许向server和client发送keepaliveoption    httpchk OPTIONS * HTTP/1.1\r\nHost:\ www    ## 后端服务状态检测### 向后端服务器的48700端口(端口值在后端服务器上通过xinetd配置)发送 OPTIONS 请求### (原理请参考HTTP协议) ,HAProxy会根据返回内容来判断后端服务是否可用.### 2xx 和 3xx 的响应码表示健康状态,其他响应码或无响应表示服务器故障。balance    roundrobin    ## 定义负载均衡算法,可用于"defaults"、"listen"和"backend"中,默认为轮询方式server    mycat_01 192.168.9.169:8066 check port 48700 inter 2000ms rise 2 fall 3 weight 10  ------------------------------------------------第一台mycatserver    mycat_02 192.168.9.170:8066 check port 48700 inter 2000ms rise 2 fall 3 weight 10  ------------------------------------------------第二台mycat## 格式:server <name> <address>[:[port]] [param*]### serser 在后端声明一个server,只能用于listen和backend区段。### <name>为此服务器指定的内部名称,其将会出现在日志及警告信息中### <address>此服务器的IPv4地址,也支持使用可解析的主机名,但要在启动时需要解析主机名至响应的IPV4地址### [:[port]]指定将客户端连接请求发往此服务器时的目标端口,此为可选项### [param*]为此server设定的一系列参数,均为可选项,参数比较多,下面仅说明几个常用的参数:#### weight:权重,默认为1,最大值为256,0表示不参与负载均衡#### backup:设定为备用服务器,仅在负载均衡场景中的其他server均不可以启用此server#### check:启动对此server执行监控状态检查,其可以借助于额外的其他参数完成更精细的设定#### inter:设定监控状态检查的时间间隔,单位为毫秒,默认为2000,##### 也可以使用fastinter和downinter来根据服务器端专题优化此事件延迟#### rise:设置server从离线状态转换至正常状态需要检查的次数(不设置的情况下,默认值为2)#### fall:设置server从正常状态转换至离线状态需要检查的次数(不设置的情况下,默认值为3)#### cookie:为指定server设定cookie值,此处指定的值将会在请求入站时被检查,##### 第一次为此值挑选的server将会被后续的请求所选中,其目的在于实现持久连接的功能#### maxconn:指定此服务器接受的最大并发连接数,如果发往此服务器的连接数目高于此处指定的值,#####其将被放置于请求队列,以等待其他连接被释放

ubuntu20.04安装haproxy-2.5-dev3相关推荐

  1. 优麒麟Ubuntu20.04安装各种问题

    优麒麟Ubuntu用了六年了,版本旧了,所以按照20.04版. 1.adobe-flashplugin的安装极其慢 慎重啊!需要好几个小时,无法忍受啊! 2.dpkg被中断的解决方法 关闭掉Ubunt ...

  2. ubuntu20.04 安装 Qt5.12步骤

    转载链接:ubuntu20.04 安装 Qt5.12_仙海寻波的博客-CSDN博客_ubuntu20.04安装qt第一步 下载 Qt5.12.9安装包使用清华镜像进行下载:https://mirror ...

  3. 了解Docker、Ubuntu20.04安装docker教程

    Docker 的前世今生 https://my.oschina.net/u/4126211/blog/4517028 Ubuntu20.04安装docker教程 https://blog.csdn.n ...

  4. ubuntu20.04安装ROS及常见问题

    ubuntu20.04安装ROS及常见问题 一.ubuntu安装参考(双系统) 1.ios镜像官网下载地址: https://releases.ubuntu.com/?_ga=2.239339907. ...

  5. Ubuntu20.04安装,并Linux微信等

    Ubuntu20.04安装,并Linux微信等 一.Ubuntu20.04双硬盘双系统安装 电脑状况:256G+260G双固态硬盘,其中256G(sda)分C.D盘安装win10,460G(sdb)硬 ...

  6. ubuntu20.04安装小鹤双拼输入法挂接音形改简体中文Rime

    ubuntu20.04安装小鹤双拼输入法挂接音形改简体中文Rime 方案1,按照这个挂接方法,原始的繁体等其他的也还在: 替换方案 方案2 修改成默认简体中文: 更改皮肤 设置-区域与语言-改成中文- ...

  7. 微星主板 Ubuntu20.04安装以及配置

    1 设置U盘启动 1)插入使用软碟通制作好的U盘,开机按del键进入BIOS: 2)Boot Option 中 选择U盘启动: 3)设置硬盘BBS(我也不知道是什么): 4)点击左边Settings, ...

  8. Ubuntu20.04安装NVIDIA显卡驱动、CUDA、CUDNN及突破NVENC并发限制

    1.查看当前系统版本 cat /proc/version 显示为: 2.查看当前显卡型号: sudo lshw -numeric  -C display 显示我的显卡型号为:GM107M[GeForc ...

  9. Ubuntu20.04安装yum

    Ubuntu20.04安装yum 1打开终端,备份你原来Ubuntu默认的源地址 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup ...

  10. Ubuntu20.04安装vscode打开出现花屏

    目录 前言 出现原因 解决方法 探索 最终方案 前言 最近在Ubuntu20.04安装vscode打开后出现了花屏的情况,在网上查找各种方法后终于解决,在这里记录一下,希望对大家有所帮助. 出现原因 ...

最新文章

  1. pip安装模块警告InsecurePlatformWarning: A true SSLContext object is not available.
  2. 【Open Search产品评测】-- 淘点点:基于OpenSearch,轻松实现一整套O2O类
  3. 设计模式 | 工厂方法模式及典型应用
  4. linux切换桌面环境bug,GNOME 3.32.2桌面环境发布,最新的bug和安全修复
  5. oracle存储查询出来的值_技术分享|浅析ORACLE数据库物理体系结构及其对应优化策略...
  6. 如何实现把固定内容自动写入excel_Excel如何把修改记录自动写入批注?
  7. 实验7-3-5 输出大写英文字母 (15分)
  8. MongoDB的Java驱动使用整理 (转)
  9. Tornado之异步authenticated
  10. 思科模拟器叫什么_《班主任模拟器》第155关怎么过 通关技巧分享
  11. Lua中的聊天屏蔽敏感词汇
  12. Navicat连接Linux下MySQL
  13. 我常用的几款数据软件
  14. 一起学OCP:oracle-082题库及解析(1-20)
  15. mysql中tab键作用_MySQL小技巧-mysql命令 tab键数据表名、字段名补全功能
  16. 面试官最容易提出的20个问题
  17. python | 数组下表省略号的含义:array[...,:]==array[:,:,0]
  18. 1050ti比1050强多少 gtx1050和gtx1050ti差距大吗
  19. 狼追击兔matlab,狼兔追击问题-数学建模
  20. 高通AR 的cloud研究

热门文章

  1. 解密 三岁的三岁到底为什么叫做三岁?
  2. Android常用的第三方组件
  3. 计算机通信网络实验(三) RIP协议原理及配置
  4. 【MySQL】MySQL进阶之路(三)MySQL基础知识点整理
  5. JavaSE基础篇——超详细,Java入门,这一篇就够了
  6. 互联网券商驶入快车道
  7. shareTo 网页版分享
  8. 全民一起玩python求分享_全民一起玩Python(基础篇+提高篇)
  9. 结对作业2——自动生成四则运算
  10. 歧视的反义词和歧视的近义词都是什么?