Haproxy实现多服务器线路负载均衡

           负载均衡最大的作用就是0宕机,可以做到宕机秒切换。Haproxy 会将多个服务器线路进行负载均衡整合,也即用 haproxy 宿主机一个线路,代替了原来多个服务器线路,这样就不用手动切换了。笔者把Haproxy安装在阿里云服务器(ubuntu系统)上,建议使用国内的云服务器:一方面延时低,另一方面不容易挂掉。

使用haproxy进行多服务器负载均衡的两个前提条件:

(1)所有的服务器线路的密码、端口必须一致。

(2)加密方式、协议/混淆也必须一致。

1、更新apt的资源列表

sudo apt-get update

2、安装haproxy

sudo apt-get install haproxy

3、编辑haproxy文件

sudo vi /etc/haproxy/haproxy.cfg

然后输入以下配置信息:

global
    log         127.0.0.1 local2
    chroot      /usr/bin
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        nobody
    daemon
defaults
    mode                    tcp
    log                     global
    option                  tcplog
    option                  dontlognull
    option http-server-close
    #option forwardfor      except 127.0.0.0/8
    option                  redispatch
    retries                 2
    timeout http-request    10s
    timeout queue           1m
    timeout connect         3s                                   
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
listen admin_status
    bind 0.0.0.0:1111                  #管理页面的登录端口
    mode http                
    stats refresh 30s    
    stats uri  /
    stats auth fzjh:fzjh               #管理页面的账号密码
    #stats hide-version  
    stats admin if TRUE
resolvers mydns
    nameserver dns1 119.29.29.29:53
    nameserver dns2 114.114.114.114:53
    resolve_retries       3
    timeout retry         2s
    hold valid           10s
listen shadowscoks_balance_load
    bind 0.0.0.0:63052                
    mode tcp
    balance roundrobin
	server serA_name 100.2.14.1:63052 weight 200 rise 2 fall 3 check inter 2000 resolvers mydns        #主力服务器
    server serB_name 103.2.14.1:63052 weight 50 rise 2 fall 3 check inter 2000 resolvers mydns backup  #备用服务器
    server serC_name 150.2.14.1:63052 weight 8 rise 2 fall 3 check inter 2000 resolvers mydns backup   #备用服务器
    server serD_name 120.2.14.1:63052 weight 8 rise 2 fall 3 check inter 2000 resolvers mydns backup   #备用服务器
    server serE_name 100.4.14.1:63052 weight 3 rise 2 fall 3 check inter 2000 resolvers mydns backup   #备用服务器
    server serF_name 107.2.14.1:63052 weight 1 rise 2 fall 3 check inter 2000 resolvers mydns backup   #备用服务器
    server serH_name 108.2.34.1:63052 weight 1 rise 2 fall 3 check inter 2000 resolvers mydns backup   #备用服务器

使用vim语法时需要注意:

esc键可以在【只读】和【输入】 两种状态之间切换。ndd:n为数字,删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 

输入完毕后想退出vim可以输入:wq!,然后按enter键

这里详细说一下这个配置里面的各项作用:

3.1 listen admin_status段的参数分析

bind 0.0.0.0:1111是指通过端口1111可以访问管理页面,访问形式是在浏览器输入ip:1111,这里的ip是指haproxy宿机的ip

stats auth后面是管理页面的账号密码,在stats auth fzjh:fzjh中,账号是fzjh,密码也是fzjh

特别注意:如果租用阿里云服务器,必须要在服务器控制台里对防火墙添加如下规则才能访问63052端口。

 在浏览器地址栏输入haproxy宿主机ip:1111就能看到haproxy的管理页面了:

3.2 listen shadowscoks_balance_load段的参数分析

serA_name:server后面首先跟名字,名字随便起呗,自己能够区分就行。紧接着跟这台机器的公网IP+端口。

check:是检测的意思,这段配置很重要。

inter:单位毫秒,我配置的2000,即2000毫秒检测一次目标服务器。

rise2:设定健康状态检查中,某离线的服务器从离线状态转换至正常状态需要成功检查的次数,这里我设置的2次。

fall3:确认服务器从正常状态转换为不可用状态需要检查的次数,这里是3次。

weight:权重,值越大代表这台机器工作的机会越多,这里我们可以把一台线路较好的机器的权重设置高一些。

backup:备用服务器,当所有主力服务器挂掉后就会马上启用备用服务器

bind 0.0.0.0:63052,指需要使用服务器的63052端口

特别注意:如果租用阿里云服务器,必须要在服务器控制台里对防火墙添加如下规则才能访问63052端口。

4、重启haproxy

sudo service haproxy restart

5、其它命令

sudo service haproxy status   #查看haproxy的状态

sudo service haproxy stop     #停止运行haproxy


卸载方法:
apt-get -y remove haproxy
然后删掉haproxy的配置文件目录:
rm -rf /etc/haproxy

启动:/etc/init.d/haproxy start
停止:/etc/init.d/haproxy stop
重启:/etc/init.d/haproxy restart
重载:/etc/init.d/haproxy reload
状态:/etc/init.d/haproxy status

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章