global daemon nbproc 6 pidfile /var/run/haproxy.pid ulimit-n 65535 defaults mode tcp #mode { tcp|http|health },tcp 表示4層,http表示7層,health僅做爲健康檢查使用 retries 2 #嘗試2次失敗則從集羣摘除 option redispatch #若是失效則強制轉換其餘服務器 option abortonclose #鏈接數過大自動關閉 maxconn 8092 #最大鏈接數 timeout connect 1d #鏈接超時時間,重要,hive查詢數據能返回結果的保證 timeout client 1d #同上 timeout server 1d #同上 timeout check 2000 #健康檢查時間 log 127.0.0.1 local0 #[err warning info debug] listen admin_stats #定義管理界面 bind 0.0.0.0:11000 #管理界面訪問IP和端口 mode http #管理界面所使用的協議 maxconn 10 #最大鏈接數 stats refresh 30s #30秒自動刷新 stats uri /lb #訪問url stats realm duobao\ Haproxy #驗證窗口提示 stats auth admin:123456 #401驗證用戶名密碼 listen redis-cluster-app-6379 #impala後端定義 bind 0.0.0.0:6379 #ha做爲proxy所綁定的IP和端口 mode tcp #以4層方式代理,重要 balance roundrobin #調度算法 'leastconn' 最少鏈接數分配,或者 'roundrobin',輪詢分配 maxconn 8092 #最大鏈接數 # server bj01-pro-redis-621 10.168.6.21:6380 check inter 180000 rise 1 fall 2 server bj01-pro-redis-620 10.168.6.20:6379 check inter 180000 rise 1 fall 2 # server bj01-pro-redis-619 10.168.6.19:6380 check inter 180000 rise 1 fall 2 listen zoo-app-2181 bind 0.0.0.0:2181 mode tcp balance roundrobin maxconn 8092 server 10.168.30.13 10.168.30.13:2181 check inter 180000 rise 1 fall 2 server 10.168.30.14 10.168.30.14:2181 check inter 180000 rise 1 fall 2 server 10.168.30.15 10.168.30.15:2181 check inter 180000 rise 1 fall 2 listen duobao-interface-8080 bind 0.0.0.0:8080 mode tcp balance roundrobin maxconn 8092 server 10.168.6.13 10.168.6.13:8153 check inter 180000 rise 1 fall 2 server 10.168.6.14 10.168.6.14:8153 check inter 180000 rise 1 fall 2 server 10.168.6.15 10.168.6.15:8153 check inter 180000 rise 1 fall 2 server 10.168.6.16 10.168.6.16:8153 check inter 180000 rise 1 fall 2 server 10.168.6.17 10.168.6.17:8153 check inter 180000 rise 1 fall 2 server 10.168.6.18 10.168.6.18:8153 check inter 180000 rise 1 fall 2 listen ops-es-9200 bind 0.0.0.0:9200 mode tcp balance roundrobin maxconn 8092 server 10.168.2.100 10.168.2.100:9200 check inter 180000 rise 1 fall 2 server 10.168.2.101 10.168.2.101:9200 check inter 180000 rise 1 fall 2 server 10.168.2.102 10.168.2.102:9200 check inter 180000 rise 1 fall 2 listen ops-es-9300 bind 0.0.0.0:9300 mode tcp balance roundrobin maxconn 8092 server 10.168.2.100 10.168.2.100:9300 check inter 180000 rise 1 fall 2 server 10.168.2.101 10.168.2.101:9300 check inter 180000 rise 1 fall 2 server 10.168.2.102 10.168.2.102:9300 check inter 180000 rise 1 fall 2
keepalivedredis
global_defs { notification_email { user@example.com } notification_email_from wangqiankun@lashou-inc.com smtp_server wangqiankun@lashou-inc.com smtp_connect_timeout 30 router_id LVS_DEVEL } #監測haproxy進程狀態,每2秒執行一次 vrrp_script chk_haproxy { script "/usr/local/keepalived/chk_haproxy.sh" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface em1 virtual_router_id 52 priority 101 #MASTER權重要高於BACKUP advert_int 1 mcast_src_ip 10.168.5.37 #Master服務器IP authentication { auth_type PASS #主從服務器驗證方式 auth_pass lashouroot } track_script { chk_haproxy #監測haproxy進程狀態 } #VIP virtual_ipaddress { 10.168.5.116 10.168.5.117 10.168.5.118 ####此處的虛ip均可以用,設置多個是爲了區分業務 10.168.5.119 } }
chk_haproxy.sh算法
#!/bin/bash # # author: weizhifeng # description: # 定時查看haproxy是否存在,若是不存在則啓動haproxy, # 若是啓動失敗,則中止keepalived # status=`ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l` if [ ${status} = "0" ]; then /etc/init.d/haproxy start status2=`ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l` if [ ${status2} = "0" ]; then /etc/init.d/keepalived stop fi fi