天天看點

【haproxy初始化】init_haproxy.sh

【haproxy初始化】init_haproxy.sh

<code>#!/bin/bash</code>

<code>#</code>

<code># 2015/4/29</code>

<code># init haproxy cfg/rsyslog/logrotate</code>

<code>log() {</code>

<code>  </code><code>echo</code> <code>"[-] install"</code>

<code>  </code><code>rpm -qa |</code><code>grep</code> <code>haproxy &amp;&amp; [ $? = 0 ]</code>

<code>  </code><code>[ $? = 0 ] &amp;&amp; </code><code>which</code> <code>haproxy || yum -y </code><code>install</code> <code>haproxy</code>

<code>  </code><code>echo</code> <code>"[-] configure rsyslog and logrotate"</code>

<code>  </code><code># rsyslog</code>

<code>  </code><code>cat</code> <code>&gt;</code><code>/etc/rsyslog</code><code>.d</code><code>/haproxy</code><code>.conf  &lt;&lt;_CONF</code>

<code># 啟用 UDP port 514</code>

<code>\$ModLoad imudp</code>

<code>\$UDPServerRun 514 </code>

<code>local2.=info -</code><code>/var/log/haproxy/haproxy</code><code>.log</code>

<code>local2.notice -</code><code>/var/log/haproxy/haproxy</code><code>.admin</code>

<code># 其他類型的不記錄</code>

<code>local2.* ~</code>

<code>_CONF</code>

<code>  </code><code>service rsyslog restart</code>

<code>  </code><code># logrotate</code>

<code>  </code><code>[ -f </code><code>/etc/logrotate</code><code>.d</code><code>/haproxy</code> <code>] || </code><code>cat</code> <code>&gt; </code><code>/etc/logrotate</code><code>.d</code><code>/haproxy</code> <code>&lt;&lt;_CONF</code>

<code>/var/log/haproxy/haproxy</code><code>.log {</code>

<code>    </code><code>daily</code>

<code>    </code><code>rotate 10</code>

<code>    </code><code>missingok</code>

<code>    </code><code>notifempty</code>

<code>    </code><code>compress</code>

<code>    </code><code>sharedscripts</code>

<code>    </code><code>postrotate</code>

<code>        </code><code>/bin/kill</code> <code>-HUP `</code><code>cat</code> <code>/var/run/syslogd</code><code>.pid 2&gt; </code><code>/dev/null</code><code>` 2&gt; </code><code>/dev/null</code> <code>|| </code><code>true</code>

<code>        </code><code>/bin/kill</code> <code>-HUP `</code><code>cat</code> <code>/var/run/rsyslogd</code><code>.pid 2&gt; </code><code>/dev/null</code><code>` 2&gt; </code><code>/dev/null</code> <code>|| </code><code>true</code>

<code>    </code><code>endscript</code>

<code>}</code>

<code>  </code><code>echo</code> <code>"[*] done."</code>

<code>cfg() {</code>

<code>  </code><code>echo</code> <code>"[-] initialize cfg file, saved to: /etc/haproxy/haproxy.cfg"</code>

<code>  </code><code>mv</code> <code>/etc/haproxy/haproxy</code><code>.cfg </code><code>/etc/haproxy/old</code><code>.haproxy.cfg</code>

<code>  </code><code># add haproxy example conf</code>

<code>  </code><code>cat</code> <code>&gt;</code><code>/etc/haproxy/haproxy</code><code>.cfg &lt;&lt;_CONF</code>

<code>#---------------------------------------------------------------------</code>

<code># HAProxy 配置</code>

<code># 全局設定</code>

<code>#--------------------------------------------------------------------- </code>

<code>global</code>

<code>    </code><code># # 使用系統的rsyslog記錄日志</code>

<code>   </code><code>#</code>

<code>    </code><code>log         127.0.0.1 local2</code>

<code>    </code><code>chroot      </code><code>/var/lib/haproxy</code>

<code>    </code><code>pidfile     </code><code>/var/run/haproxy</code><code>.pid</code>

<code>    </code><code>maxconn     4000</code>

<code>    </code><code>user        haproxy</code>

<code>    </code><code>group       haproxy</code>

<code>    </code><code>daemon</code>

<code>    </code><code># turn on stats unix socket</code>

<code>    </code><code>stats socket </code><code>/var/lib/haproxy/stats</code>

<code># 通用設定, 'listen' 和 'backend' 部分會用到,如果沒單獨指定的話</code>

<code>defaults</code>

<code>    </code><code>mode                    http</code>

<code>    </code><code>log                     global</code>

<code>    </code><code>option                  httplog</code>

<code>    </code><code>option                  dontlognull     </code><code># 不記錄空連接配接</code>

<code>    </code><code>option http-server-close</code>

<code>    </code><code>option forwardfor       except 127.0.0.0</code><code>/8</code>

<code>    </code><code>option                  redispatch</code>

<code>    </code><code>retries                 3</code>

<code>    </code><code>timeout http-request    1m</code>

<code>    </code><code>timeout queue           1m</code>

<code>    </code><code>timeout connect         10s</code>

<code>    </code><code>timeout client          1m</code>

<code>    </code><code>timeout server          1m</code>

<code>    </code><code>timeout http-keep-alive 10s</code>

<code>    </code><code>timeout check           10s</code>

<code>    </code><code>maxconn                 3000</code>

<code>    </code><code>balance roundrobin                      </code><code># lb算法</code>

<code> </code> 

<code># 配置  stat</code>

<code>listen admin_stat</code>

<code>    </code><code>bind    127.0.0.1:12202</code>

<code>    </code><code>mode    http</code>

<code>    </code><code>option  httplog</code>

<code>    </code><code>log     global</code>

<code>    </code><code>stats   refresh 30s                   </code><code># 統計頁面自動重新整理時間</code>

<code>    </code><code>stats   uri </code><code>/status</code>                   <code># 統計頁面URL</code>

<code>    </code><code>stats   realm Haproxy\ Statistics     </code><code># 統計頁面密碼框上提示文本</code>

<code>    </code><code>stats   auth admin:password           </code><code># 統計頁面使用者名和密碼設定</code>

<code>    </code><code>stats   hide-version                  </code><code># 隐藏統計頁面上HAProxy的版本資訊</code>

<code># 配置  TCP</code>

<code># backend</code>

<code>#   check   -- 允許對該伺服器進行健康檢查</code>

<code>#   weight  -- 設定權重</code>

<code>#   inter   -- 連續兩次健康檢查間隔,機關為毫秒(ms),預設值 2000(ms)</code>

<code>#   rise    -- 指定多少次連續成功的健康檢查後,即可認定該伺服器處于可操作狀态,預設值 2</code>

<code>#   fall    -- 指定多少次不成功的健康檢查後,認為伺服器為當掉狀态,預設值 3</code>

<code>#   server s_name s_ip:port check weight inter 2000 rise 2 fall 3</code>

<code>listen  p80</code>

<code>    </code><code>bind    *:80</code>

<code>    </code><code>mode    tcp</code>

<code>    </code><code>option  tcplog</code>

<code>    </code><code>server  app1 192.168.1.240:80 check</code>

<code># main frontend which proxys to the backends</code>

<code>frontend  main *:5000</code>

<code>    </code><code>acl url_static       path_beg       -i </code><code>/static</code> <code>/images</code> <code>/javascript</code> <code>/stylesheets</code>

<code>    </code><code>acl url_static       path_end       -i .jpg .gif .png .css .js</code>

<code>    </code><code>use_backend static          </code><code>if</code> <code>url_static</code>

<code>    </code><code>default_backend             app</code>

<code># static backend for serving up images, stylesheets and such</code>

<code>backend static</code>

<code>    </code><code>balance     roundrobin</code>

<code>    </code><code>server      static 127.0.0.1:4331 check</code>

<code># round robin balancing between the various backends</code>

<code>backend app</code>

<code>    </code><code>server  app1 127.0.0.1:5001 check</code>

<code>    </code><code>server  app2 127.0.0.1:5002 check</code>

<code>    </code><code>server  app3 127.0.0.1:5003 check</code>

<code>    </code><code>server  app4 127.0.0.1:5004 check</code>

<code>  </code><code>service haproxy check</code>

<code>usage() {</code>

<code>  </code><code>cat</code> <code>&lt;&lt;_USAGE</code>

<code>initialize haproxy log and config</code>

<code>Usage:</code>

<code>    </code><code>$0 [log|cfg]</code>

<code>_USAGE</code>

<code>##########</code>

<code>case</code> <code>$1 </code><code>in</code>

<code>  </code><code>log|cfg)</code>

<code>    </code><code>$1</code>

<code>    </code><code>;;</code>

<code>  </code><code>*)</code>

<code>    </code><code>usage</code>

<code>esac</code>

本文轉自 pcnk 51CTO部落格,原文連結:http://blog.51cto.com/nosmoking/1594657,如需轉載請自行聯系原作者

繼續閱讀