SLB+ECS实现高可用加负载均衡haproxy
发布日期:2015-11-30 14:11:32
SLB+ECS实现高可用加负载均衡haproxy SLB的业务是不支持DR模式,这里提供的是一个折中的方案,这个方案包含稳健和灵活的特点,稳健的含义来自SLB 可以保障高可用(消除ECS的单点故障问题)和负载均衡(SLB本身的服务)灵活性的含义来自SLB后端的haproxy(这个客户可以完全掌控配置),这个可以配置的参数非常丰富,下面给出一个实例仅供参考,给出一个思路来可以把自己的业务迁移到阿里云的平台上。 域名有两个(解析到SLB的ip上的) 1、域名解析 http://www-B.ethnicity.cn/ http://www-c.ethnicity.cn/ 2、SLB的架构 Haproxy有两台,通过SLB实现负载均衡+高可用 wanyan-HP1和wanyan-HP2 2.1 haproxy的安装和配置(这里仅仅列举测试需要的配置,客户可以根据自己的站点实际脑洞大开的) 这里采用的是haproxy-1.5.8.tar.gz的源码安装包 #tar zxvf haproxy-1.5.8.tar.gz //解压缩 #cd haproxy-1.5.8 # make install PREFIX=/usr/local/haproxy //安装 install -d /usr/local/haproxy/sbin install haproxy /usr/local/haproxy/sbin install haproxy-systemd-wrapper /usr/local/haproxy/sbin install -d /usr/local/haproxy/share/man/man1 install -m 644 doc/haproxy.1 /usr/local/haproxy/share/man/man1 install -d /usr/local/haproxy/doc/haproxy for x in configuration architecture haproxy-en haproxy-fr; do \ install -m 644 doc/$x.txt /usr/local/haproxy/doc/haproxy ; \ done 新建配置文件 [root@iZ23s1sj5txZ haproxy-1.5.8]# cat /usr/local/haproxy/haproxy.cfg global maxconn 51200 chroot /usr/local/haproxy uid 99 gid 99 daemon #quiet nbproc 1 #进程数 pidfile /usr/local/haproxy/logs/haproxy.pid defaults mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK #retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置 option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 timeout connect 5000ms #连接超时 timeout client 30000ms #客户端超时 timeout server 30000ms #服务器超时 #timeout check 2000 #=心跳检测超时 log 127.0.0.1 local0 err #[err warning info debug] balance roundrobin #负载均衡算法 option httplog #日志类别,采用httplog option httpclose #每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现 option dontlognull option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip listen admin_stats bind 0.0.0.0:8888 #监听端口 option httplog #采用http日志格式 stats refresh 30s #统计页面自动刷新时间 stats uri /stats #统计页面url stats realm Haproxy Manager #统计页面密码框上提示文本 stats auth admin:admin #统计页面用户名和密码设置 stats hide-version #隐藏统计页面上HAProxy的版本信息 frontend web_in mode http maxconn 1000 bind :80 acl is_b hdr_beg(host) -i www-b.ethnicity.cn #判断域名是不是www-b.ethnicity.cn,是则给与a服务器集群服务 acl is_c hdr_beg(host) -i www-c.ethnicity.cn #判断域名是不是www-bc.ethnicity.cn,是则给与a服务器集群服务 use_backend b_server if is_b use_backend c_server if is_c backend b_server mode http #http 模式 stats uri /haproxy balance roundrobin cookie JSESSIONID prefix stats hide-version option httpclose server web1 10.175.197.205:1080 backend c_server mode http #http 模式 stats uri /haproxy balance roundrobin cookie JSESSIONID prefix stats hide-version option httpclose server web1 10.175.197.205:1081 创建重启脚本 [root@iZ23s1sj5txZ haproxy-1.5.8]# cat /etc/init.d/haproxy #!/bin/bash BASE_DIR="/usr/local/haproxy/" ARGV="$@" start() { echo "START HAPoxy SERVERS" $BASE_DIR/sbin/haproxy -f $BASE_DIR/haproxy.cfg } stop() { echo "STOP HAPoxy Listen" kill -TTOU $(cat $BASE_DIR/logs/haproxy.pid) echo "STOP HAPoxy process" kill -USR1 $(cat $BASE_DIR/logs/haproxy.pid) } case $ARGV in start) start ERROR=$? ;; stop) stop ERROR=$? ;; restart) stop start ERROR=$? ;; *) echo "hactl.sh [start|restart|stop]" esac exit $ERROR 启动 [root@iZ230pjvrn7Z ~]# /etc/init.d/haproxy restart STOP HAPoxy Listen STOP HAPoxy process START HAPoxy SERVERS 3、后端ECS服务器的设置 这里仅仅设置了一台,本次测试的重点不在这里 默认设置两个站点采用1080和1081端口 [root@iZ23uqhpwvhZ conf]# cat httpd.conf|grep 10 Listen 1080 Listen 1081 3.1虚拟子目录的设置 4、测试的部分 访问http://www-b.ethnicity.cn/示例是访问的haproxy后端的ecs的1080端口 访问http://www-c.ethnicity.cn/示例是访问的haproxy后端的ecs的1081端口 下一条: 阿里云ECS如何更换系统盘
|