HAProxy
HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件(PS:nginx最新版也可以基于第四层和第七层的负载均衡)。
HAProxy和Keepalived 都采用源码方式安装,如果没有gcc编译器,需要先安装gcc编译工具。
下载解压安装
下载haproxy:http://www.haproxy.org/download/1.4/src/
1 2 3 4 5 6 7
| tar zxvf haproxy-1.4.24.tar.gz cd haproxy-1.4.24 make install mkdir -p /usr/local/haproxy/etc mkdir -p /usr/local/haproxy/sbin cp examples/haproxy.cfg /usr/local/haproxy/etc ln -s /usr/local/sbin/haproxy /usr/local/haproxy/sbin/haproxy
|
修改配置文件
vim /usr/local/haproxy/etc/haproxy.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| global maxconn 51200 chroot /usr/local/haproxy uid 99 gid 99 daemon nbproc 1 pidfile /usr/local/haproxy/logs/haproxy.pid
defaults mode http option redispatch option abortonclose timeout connect 5000ms timeout client 30000ms timeout server 30000ms log 127.0.0.1 local0 err balance roundrobin
listen admin_stats bind 0.0.0.0:8888 option httplog stats refresh 30s stats uri /stats stats realm Haproxy Manager stats auth admin:admin
listen tcp_test bind :12345 mode tcp server t1 127.0.0.1:9000 server t2 192.168.15.13:9000 listen zzs_dzfp_proxy:90 mode http balance roundrobin cookie LBN insert indirect nocache option httpclose server web01 192.168.15.12:9000 check inter 2000 fall 3 weight 20 server web02 192.168.15.13:9000 check inter 2000 fall 3 weight 20
|
启停haproxy
启动Haproxy
1
| /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
|
停止Haproxy:
访问统计页面:
1
| http://10.10.3.163:1080/stats
|
Keepalived
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
下载解压编译安装
下载地址:http://www.keepalived.org/download.html
或者 :
1 2
| wget http://www.keepalived.org/software/keepalived-1.2.8.tar.gz
|
安装:
1 2 3 4 5
| tar zxvf keepalived-1.2.8.tar.gz cd keepalived-1.2.8 ./configure --prefix=/usr/local/keepalived make make install
|
安装成功后做成服务模式
1 2 3
| cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
|
1 2 3 4
| mkdir -p /etc/keepalived/ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf chmod +x /etc/init.d/keepalived vi /etc/keepalived/keepalived.conf
|
修改文件配置keepalived.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| global_defs { router_id LVS_DEVEL }
vrrp_script chk_haproxy { script "/etc/keepalived/chk_haproxy.sh" interval 2 weight -10 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 mcast_src_ip 192.168.15.12 authentication { auth_type PASS auth_pass 12345678 } track_script { chk_haproxy } virtual_ipaddress { 192.168.15.235 } }
|
监控脚本配置
vi /etc/keepalived/chk_haproxy.sh
1 2 3 4 5 6 7 8 9 10
| tatus=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l) if [ "${status}" = "0" ]; then /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
status2=$(ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l)
if [ "${status2}" = "0" ]; then /etc/init.d/keepalived stop fi fi
|
这个配置文件意思:检查haproxy是否挂掉,如果挂掉启动haproxy;若启动之后还是没有检测到启动状态,则关闭keepalived,让IP飘移到备机上。
启动停止keepalived命令
1 2
| service keepalived start service keepalived stop
|