1、简述keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的虚拟ip,即vip(该路由器所在局域网内其他机器的默认路由为该vip),在keepalived中只有作为master的服务器会一直发送VRRP广播包(心跳消息),以告知局域网内的其他backup节点自己还活着,当master宕机了那么backup就无法收到VRRP包,这时就需要根据VRRP的优先级来选举一个backup接管master的工作。VRRP的出现就是用来保障单点故障问题,即某个节点出现故障,不会影响整个网络的正常运行,这样的话就可以保证路由器的高可用了。

2、编译安装haproxy

安装基础命令和编译环境: yum install gcc readline-devel wget http://www.lua.org/ftp/lua-5.3.5.tar.gz tar xvzf lua-5.3.5.tar.gz -C /usr/local/src

cd /usr/local/src/lua-5.3.5 make linux test src/lua -v

yum -y install gcc openssl-devel pcre-devel systemd-devel tar xvzf haproxy-2.1.3.tar.gz -C /usr/local/src

cd /usr/local/src/haproxy-2.1.3

make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.3.5/src/ LUA_LIB=/usr/local/src/lua-5.3.5/src/ make install PREFIX=/apps/haproxy ln -s /apps/haproxy/sbin/haproxy /usr/sbin/

3、总结haproxy各调度算法的实现方式及其应用场景

1.roundrobin 根据服务器权重轮询的算法,可以自定义权重,它支持慢启动,并能在运行时修改权重,所以是一种动态算法。最多支持4095台后端主机。 2.static-rr 与roundrobin类似,static-rr也是一种轮询算法,但它是静态的,对后端主机数量无限制。 3.leastconn 最小连接数算法,一种可以根据后端主机连接数情况进行调度的动态算法,支持慢启动和运行时调整,可将新的请求调度至连接数较少的后端主机。与LVS中lc算法类似。

4、使用haproxy的ACL实现基于文件后缀名的动静分离"

cat /etc/haproxy/conf.d/test.cfg frontend magedu_http_port bind 10.0.0.7:80 mode http balance roundrobin log global option httplog acl acl_static path_end -i .jpg .jpeg .png .gif .css .js .html acl acl_php path_end -i .php use_backend mobile_hosts if acl_static use_backend app_hosts if acl_php default_backend pc_hosts backend mobile_hosts mode http serve web1 10.0.0.17 check inter 2000 fall 3 rise 5 backend pc_hosts mode http server web2 10.0.0.27:80 check inter 2000 fall 3 rise5

backend app_hosts mode http server web2 10.0.0.27:80 check inter 2000 fall 3 rise5