HAProxy负载均衡安装手册

技术文档网 2021-04-29

此手册是实用HAProxy做为负载均衡,安装在其中一台应用服务器上。

我们假设负载均衡(应用服务器1)地址为192.168.1.1

应用服务器2地址为192.168.1.2

我们部署HAProxy在应用服务器1上,以下所有操作都在服务器1上

1. 安装HAProxy

# setup
$ wget http://www.muug.mb.ca/pub/centos/6.7/os/x86_64/Packages/setup-2.8.14-20.el6_4.1.noarch.rpm
$ rpm -Uhv setup-2.8.14-20.el6_4.1.noarch.rpm

# 下载HAProxy
$ wget http://mirror.esecuredata.com/centos/6.7/updates/x86_64/Packages/haproxy-1.5.4-2.el6_7.1.x86_64.rpm
$ rpm -ihv haproxy-1.5.4-2.el6_7.1.x86_64.rpm

2. 配置 HA Proxy

首先我们需要修改Nginx的地址从80改为81:

# default.conf

# Upstream for Unicorn's socket
upstream hy-app {
  # 连接服务器和Socket
  server unix:/tmp/unicorn.huanyu.sock;
}

# 服务器设置
server {
  # Serve localhost:81
  listen 81;
  server_name localhost;

  # 程序根目录
  root /var/www/huanyu/public;

  # 默认载入文件
  try_files $uri/index.html $uri @hy-app;

  # 连接Upstream和服务器
  location @hy-app {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://hy-app;
  }

  # 其他默认设置
  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

重启nginx

service nginx restart

修改HAProxy配置文档

# 打开文件:
$ vim /etc/haproxy/haproxy.cfg

# 在defaults下,修改为:
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    30s
    timeout queue           86400
    timeout connect         86400
    timeout client          86400
    timeout server          86400
    timeout http-keep-alive 30s
    timeout check           30s
    maxconn                 50000

# 在这个文档最后设置负载均衡
# 默认可能看起来是: frontend main *:5000, backend static, backend app
# 修改为:
frontend main *:5000
    bind 192.168.1.1:80 # 这个是负载均衡服务器地址
    reqadd X-Forwarded-Proto:\ http
    default_backend app

backend app 192.168.1.1:80 # 负载均衡IP地址
    mode http
    balance roundrobin
    server 192.168.1.1 192.168.1.1:81 check #这里是应用服务器1地址
    server 192.168.1.2 192.168.1.2:80 check
    # 这里可以输入更多的服务器地址

设置HAProxy 自动启动

# 在以上修改完成后,重启HAProxy
$ service haproxy restart

# 设置自动启动
$ chkconfig haproxy on

打开HAProxy 的防火墙 (假设端口80已经打开)

# 修改/etc/sysconfig/iptables
# 加入一下做为第一个条件
-A INPUT -m state --state NEW -p tcp --dport 514 -j ACCEPT

到此为止,负载均衡就成功部署在应用服务器1上了

测试

  1. 访问192.168.1.1可以成功打开网页
  2. 关闭防火墙后,访问192.168.1.1:81可以访问网页(说明应用服务器实际运行在端口81)
  3. 打开防火墙后,访问192.168.1.1:81不可以访问

相关文章

  1. supervisor使用教程

    一、安装 1:easy_install 安装: easy_install supervisor 2:pip 安装: pip install supervisor 3:Debian / Ubuntu

  2. gitlab的ssh key不生效的问题

    在用 gitlab 的管理代码时发现一个问题:如果用 http 协议,每次 push 的时候都需要输入用户名和密码,如果 用 ssh 协议,先要生成公钥: ssh-keygen -t rsa -C

  3. UOJ安装指南

    这是一个UOJ的docker版本。在安装之前,请确认Docker已经安装在您的操作系统中。这个docker的映像是64位的版本,在32位的系统上安装可能会出现错误。 安装 请先下载 JDK7u76

  4. untu14.04下创建用户并赋予执行sudo命令的权限

    untu14.04下创建用户并赋予执行sudo命令的权限 创建用户:adduser +用户名(该命令在home下生成用户目录并创建用户) 1. 切换到root用户下 2. /etc/sud

  5. 如何查看当前apache的工作模式prefork worker还是event模式?

    查看apache工作模式 $ apachectl -V (注:apachectl可理解为apache control,其实是一段bash脚本) Server version: Apache/2.4.

随机推荐

  1. supervisor使用教程

    一、安装 1:easy_install 安装: easy_install supervisor 2:pip 安装: pip install supervisor 3:Debian / Ubuntu

  2. gitlab的ssh key不生效的问题

    在用 gitlab 的管理代码时发现一个问题:如果用 http 协议,每次 push 的时候都需要输入用户名和密码,如果 用 ssh 协议,先要生成公钥: ssh-keygen -t rsa -C

  3. UOJ安装指南

    这是一个UOJ的docker版本。在安装之前,请确认Docker已经安装在您的操作系统中。这个docker的映像是64位的版本,在32位的系统上安装可能会出现错误。 安装 请先下载 JDK7u76

  4. untu14.04下创建用户并赋予执行sudo命令的权限

    untu14.04下创建用户并赋予执行sudo命令的权限 创建用户:adduser +用户名(该命令在home下生成用户目录并创建用户) 1. 切换到root用户下 2. /etc/sud

  5. 如何查看当前apache的工作模式prefork worker还是event模式?

    查看apache工作模式 $ apachectl -V (注:apachectl可理解为apache control,其实是一段bash脚本) Server version: Apache/2.4.