线上环境是阿里云,既然阿里云有SLB,比自己运维一个要省事儿的多,事实上,自己做也真不一定做得比它好,本节试图以haproxy来解释一下slb的原理
讲解haproxy的目的是介绍负载算法,便于理解SLB
目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,软件有LVS,Nginx及HAProxy,高可用软件有Heartbeat. Keepalived
成熟的架构有
优点
官网 http://www.haproxy.org/ (自备梯子)
我觉得它是所有负载软件里最简单最好用的。配置文件比nginx还简单,而且还有监控页面。
下载最新版软件 http://www.haproxy.org/download/1.5/src/haproxy-1.5.12.tar.gz
解压
tar -zxvf haproxy-1.5.12.tar.gz
切换到目录
cd haproxy-1.5.12
打开readme看一下,如何安装
make TARGET=linux26
sudo make install
# Simple configuration for an HTTP proxy listening on port 80 on all
# interfaces and forwarding requests to a single backend "servers" with a
# single server "server1" listening on 127.0.0.1:8000
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
default_backend servers
backend servers
server server1 127.0.0.1:8000 maxconn 32
# The same configuration defined with a single listen block. Shorter but
# less expressive, especially in HTTP mode.
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen http-in
bind *:80
server server1 127.0.0.1:8000 maxconn 32
haproxy -f test.cfg
记得在配置文件里加上
listen admin_stats
bind 0.0.0.0:8888
stats refresh 30s
stats uri /stats
stats realm Haproxy Manager
stats auth admin:admin
#stats hide-version
HAProxy的算法有如下8种:
负载均衡(Server Load Balancer,简称SLB)是对多台云服务器进行流量分发的负载均衡服务。SLB可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性
使用tengine实现的。
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。
see http://tengine.taobao.org/
创建slb
点击管理按钮,进入实例详情
没啥需要改的,我们直接看服务监听功能,看看如何配置slb
点击编辑按钮,此时可以看到具体配置页面
目前slb支持2种转发规则
轮询应该是和haproxy的roundrobin调度算法一样,表示简单的轮询
最小连接数SLB会自动判断 当前ECS 的established 来判断是否转发
配置完了slb server,下一步要设置具体slb把请求转发给哪台机器,这实际上才是最核心的的配置。
阿里云把这件事儿做的超级简单
假设我现在有一个ecs服务器为已填加
点击【未添加的服务器】,此时会列出未加入负载池的ecs服务器
选中一台服务器
点击批量添加
配置一下权重,如果机器性能一样就配置权重一样,性能越好,权重越大
可选值【0 -- 100】
完成配置后,已添加服务器里就有了2台服务器
保证你的服务器都启动,比如2台服务器的80端口都正常即可
此时你需要做的是把你的域名解析到slb服务器的ip地址上
1台服务器绑定多个域名