HAproxy+Keepalived實現高可用
阿新 • • 發佈:2018-04-13
daemon type tom com rontab date redis start virt
HAproxy+Keepalived實現高可用 說明: HA1:HAproxy+Keepalived(master) HA2:HAproxy+Keepalived(backup) 1.HA1上keepalived的配置: # Configuration File for keepalived global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_haproxy { script "/usr/local/keepalived/scripts/chk_haproxy.sh" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 105 priority 151 advert_int 1 nopreempt authentication { auth_type PASS auth_pass xxx } track_interface { eth0 eth1 } track_script { chk_haproxy } virtual_ipaddress { xxx.xxx.xxx.xxx } notify "/usr/local/keepalived/scripts/alarm.bash" } 2.HA2上keepalived的配置: # Configuration File for keepalived global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_haproxy { script "/usr/local/keepalived/scripts/chk_haproxy.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 105 priority 141 advert_int 1 nopreempt authentication { auth_type PASS auth_pass xxx } track_interface { eth0 eth1 } track_script { chk_haproxy } virtual_ipaddress { xxx.xxx.xxx.xxx } notify "/usr/local/keepalived/scripts/alarm.bash" } 3.HA1和HA2上haproxy的配置: # this config needs haproxy-1.1.28 or haproxy-1.2.1 global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 #chroot /usr/share/haproxy user haproxy group haproxy daemon #debug #quiet defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen fabuqi 0.0.0.0:80 cookie SERVERID rewrite balance roundrobin server real_server1 rs1_ip:80 cookie app1inst1 check inter 1000 rise 2 fall 5 server real_server2 rs2_ip:80 cookie app1inst2 check inter 1000 rise 2 fall 5 server real_server3 rs3_ip:80 cookie app1inst3 check inter 1000 rise 2 fall 5 backup listen stats 0.0.0.0:1080 #設置Frontend和Backend的組合體,監控組的名稱,按需要自定義名稱 mode http #http的7層模式 option httplog #采用http日誌格式 #log 127.0.0.1 local0 err #錯誤日誌記錄 maxconn 5 #默認的最大連接數 stats refresh 30s #統計頁面自動刷新時間 stats uri /stats #統計頁面url stats realm XingCloud\ Haproxy #統計頁面密碼框上提示文本 stats auth admin:xxx #設置監控頁面的用戶和密碼:admin,可以設置多個用戶名 #stats auth Frank:xxx #設置監控頁面的用戶和密碼:Frank stats hide-version #隱藏統計頁面上HAProxy的版本信息 stats admin if TRUE 4.keepalived監控haproxy腳本: #!/bin/bash if [[ `ps -C haproxy --no-header | wc -l` -eq 0 ]]; then echo [`date`] "haproxy not running,attempt to start up." >> /usr/local/keepalived/logs/chk_haproxy.log 2>&1 haproxy -f /etc/haproxy/haproxy.cfg sleep 3 if [[ `ps -C haproxy --no-header | wc -l` -eq 0 ]]; then /etc/init.d/keepalived stop echo [`date`] "haproxy start failure,stop keepalived." >> /usr/local/keepalived/logs/chk_haproxy.log 2>&1 else echo [`date`] "haproxy started success." >> /usr/local/keepalived/logs/chk_haproxy.log 2>&1 fi fi 5.配置haproxy日誌: 1)syslog-ng的配置: # vim /etc/syslog-ng/syslog-ng.conf # 在文件最後添加以下配置 source src_haproxy { udp(ip("0.0.0.0") port(514)); }; filter f_local03 { facility(local0,local3); }; filter custom { program("haproxy"); }; destination dst_haproxy { file("/var/log/haproxy.log"); }; log { source(src_haproxy); filter(f_local03); destination(dst_haproxy); }; log { source(src_haproxy); filter(custom); destination(dst_haproxy); }; # service syslog-ng restart 2)syslog的配置: # vim /etc/syslog.d/haproxy.conf local3.* /var/log/haproxy.log local0. /var/log/haproxy.log &~ #不打印到/var/log/message中 # vim /etc/sysconfig/syslog SYSLOGD_OPTIONS="-r -m 0" # service syslog restart 3)日誌分割和清理腳本: # cat /usr/local/haproxy/sbin/cut_haproxy_log.sh #!/bin/bash # This script run at 00:00 # crontab -e # 00 00 * * * /usr/local/haproxy/sbin/cut_haproxy_log.sh >/dev/null 2>&1 # The haproxy log path LOGPATH="/data/logs/haproxy" [[ -z `ps aux | grep sbin/haproxy | grep -v grep` ]] && exit 1 mv ${LOGPATH}/haproxy.log ${LOGPATH}/haproxy_$(date -d "yesterday" +"%Y-%m-%d").log rm -f ${LOGPATH}/haproxy_$(date -d "10 days ago" +"%Y-%m-%d").log /sbin/service syslog restart # chmod +x /usr/local/haproxy/sbin/cut_haproxy_log.sh
HAproxy+Keepalived實現高可用