{"id":103,"date":"2024-03-27T15:11:49","date_gmt":"2024-03-27T07:11:49","guid":{"rendered":"https:\/\/www.bensonmax.net\/?p=103"},"modified":"2024-03-27T15:11:54","modified_gmt":"2024-03-27T07:11:54","slug":"haproxy-1-7-9%e5%ae%89%e8%a3%9d","status":"publish","type":"post","link":"https:\/\/www.bensonmax.net\/?p=103","title":{"rendered":"haproxy-1.7.9\u5b89\u88dd"},"content":{"rendered":"\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-33ccc8b1 wp-block-group-is-layout-flex\">\n<p class=\"wp-block-paragraph\">\u5b89\u88dd\u4f9d\u8cf4\u5957\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum -y install wget openssl-devel\nyum install gcc -y<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u89e3\u58d3\u7e2e\u7de8\u8b6fhaproxy<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>wget https:\/\/www.haproxy.org\/download\/1.7\/src\/haproxy-1.7.9.tar.gz\ntar zxvf haproxy-1.7.9.tar.gz\nmake TARGET=linux26 ARCH=X86_64 PREFIX=\/usr\/local\/haproxy USE_OPENSSL=1 ADDLIB=-lz\nmake install PREFIX=\/usr\/local\/haproxy<\/code><\/pre>\n<\/div>\n\n\n\n<!--more-->\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-33ccc8b1 wp-block-group-is-layout-flex\">\n<p class=\"wp-block-paragraph\">\u5efa\u7acb\u8a2d\u5b9a\u6a94<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>mkdir \/etc\/haproxy\/\nvim \/etc\/haproxy\/haproxy.cfg\n----------------------------\nglobal\r\n        log 127.0.0.1 local5\r\n        chroot \/usr\/local\/haproxy\r\n        pidfile \/var\/run\/haproxy.pid\r\n        maxconn 5000\r\n        user haproxy\r\n        group haproxy\r\n        daemon\r\n        stats socket \/etc\/haproxy\/haproxy.sock mode 600 level admin\r\n        stats timeout 2m\r\ndefaults\r\n        mode tcp\r\n        log global\r\n        option httplog\r\n        option dontlognull\r\n        option log-health-checks\r\n        retries 3\r\n        timeout http-request 30s\r\n        timeout queue 300s\r\n        timeout connect 600s\r\n        timeout client 10m\r\n        timeout server 10m\r\n        timeout http-keep-alive 30s\r\n        timeout check 600s\r\n        maxconn 4000\r\nlisten stats\r\n        bind  192.168.1.22:8080\r\n        mode    http\r\n        log     127.0.0.1 local0 err\r\n        stats   uri     \/hastats\r\n        stats auth    admin:admin\r\n        stats refresh 10s\r\n        stats hide-version\r\n        stats admin if TRUE\r\n\r\nfrontend mysql\r\n        bind *:3306\r\n        mode tcp\r\n        option tcplog\r\n        default_backend mysqlservers\r\n\r\nbackend mysqlservers\r\n        balance leastconn\r\n        server db33 10.140.0.33:3306 check port 3306 rise 1 fall 2 maxconn 2000 weight 100\r\n        server db34 10.140.0.34:3306 check port 3306 rise 1 fall 2 maxconn 2000 weight 100\r\n        \r\n----------------------------<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5efa\u7acb\u555f\u52d5\u8173\u672c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vim \/etc\/init.d\/haproxy \n\u65b0\u589e\u4ee5\u4e0b\u5167\u5bb9\n#!\/bin\/sh\r\n#\r\n# chkconfig: - 85 15\r\n#              for high availability environments.\r\n# processname: haproxy\r\n# config: \/etc\/haproxy\/haproxy.cfg\r\n# pidfile: \/var\/run\/haproxy.pid\r\n\r\n# Script Author: Simon Matter &lt;simon.matter@invoca.ch>\r\n# Version: 2004060600\r\n\r\n# Source function library.\r\nif &#91; -f \/etc\/init.d\/functions ]; then\r\n  . \/etc\/init.d\/functions\r\nelif &#91; -f \/etc\/rc.d\/init.d\/functions ] ; then\r\n  . \/etc\/rc.d\/init.d\/functions\r\nelse\r\n  exit 0\r\nfi\r\n\r\n# Source networking configuration.\r\n. \/etc\/sysconfig\/network\r\n\r\n# Check that networking is up.\r\n&#91; ${NETWORKING} = \"no\" ] &amp;&amp; exit 0\r\n\r\n# This is our service name\r\nBASENAME=`basename $0`\r\nif &#91; -L $0 ]; then\r\n  BASENAME=`find $0 -name $BASENAME -printf %l`\r\n  BASENAME=`basename $BASENAME`\r\nfi\r\n\r\nBIN=\/usr\/sbin\/$BASENAME\r\n\r\nCFG=\/etc\/$BASENAME\/$BASENAME.cfg\r\n&#91; -f $CFG ] || exit 1\r\n\r\nPIDFILE=\/var\/run\/$BASENAME.pid\r\nLOCKFILE=\/var\/lock\/subsys\/$BASENAME\r\n\r\nRETVAL=0\r\n\r\nstart() {\r\n  quiet_check\r\n  if &#91; $? -ne 0 ]; then\r\n    echo \"Errors found in configuration file, check it with '$BASENAME check'.\"\r\n    return 1\r\n  fi\r\n\r\n  echo -n \"Starting $BASENAME: \"\r\n  daemon $BIN -D -f $CFG -p $PIDFILE\r\n  RETVAL=$?\r\n  echo\r\n  &#91; $RETVAL -eq 0 ] &amp;&amp; touch $LOCKFILE\r\n  return $RETVAL\r\n}\r\n\r\nstop() {\r\n  echo -n \"Shutting down $BASENAME: \"\r\n  killproc $BASENAME -USR1\r\n  RETVAL=$?\r\n  echo\r\n  &#91; $RETVAL -eq 0 ] &amp;&amp; rm -f $LOCKFILE\r\n  &#91; $RETVAL -eq 0 ] &amp;&amp; rm -f $PIDFILE\r\n  return $RETVAL\r\n}\r\n\r\nrestart() {\r\n  quiet_check\r\n  if &#91; $? -ne 0 ]; then\r\n    echo \"Errors found in configuration file, check it with '$BASENAME check'.\"\r\n    return 1\r\n  fi\r\n  stop\r\n  start\r\n}\r\n\r\nreload() {\r\n  if ! &#91; -s $PIDFILE ]; then\r\n    return 0\r\n  fi\r\n\r\n  quiet_check\r\n  if &#91; $? -ne 0 ]; then\r\n    echo \"Errors found in configuration file, check it with '$BASENAME check'.\"\r\n    return 1\r\n  fi\r\n  $BIN -D -f $CFG -p $PIDFILE -sf $(cat $PIDFILE)\r\n}\r\n\r\ncheck() {\r\n  $BIN -c -q -V -f $CFG\r\n}\r\n\r\nquiet_check() {\r\n  $BIN -c -q -f $CFG\r\n}\r\n\r\nrhstatus() {\r\n  status $BASENAME\r\n}\r\n\r\ncondrestart() {\r\n  &#91; -e $LOCKFILE ] &amp;&amp; restart || :\r\n}\r\n\r\n# See how we were called.\r\ncase \"$1\" in\r\n  start)\r\n    start\r\n    ;;\r\n  stop)\r\n    stop\r\n    ;;\r\n  restart)\r\n    restart\r\n    ;;\r\n  reload)\r\n    reload\r\n    ;;\r\n  condrestart)\r\n    condrestart\r\n    ;;\r\n  status)\r\n    rhstatus\r\n    ;;\r\n  check)\r\n    check\r\n    ;;\r\n  *)\r\n    echo $\"Usage: $BASENAME {start|stop|restart|reload|condrestart|status|check}\"\r\n    exit 1\r\nesac\r\n\r\nexit $?<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7d66\u4e88\u8173\u672c\u6b0a\u9650&amp;\u9023\u7d50\u74b0\u5883\u8b8a\u6578<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 755 \/etc\/init.d\/haproxy\nln -s \/usr\/local\/haproxy\/sbin\/haproxy \/usr\/sbin\/haproxy<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7248\u672c\u6aa2\u67e5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>haproxy -v<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u555f\u52d5\u670d\u52d9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>servcie haproxy start<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u5b89\u88dd\u4f9d\u8cf4\u5957\u4ef6 \u89e3\u58d3\u7e2e\u7de8\u8b6fhaproxy<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-103","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=\/wp\/v2\/posts\/103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=103"}],"version-history":[{"count":1,"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=\/wp\/v2\/posts\/103\/revisions"}],"predecessor-version":[{"id":105,"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=\/wp\/v2\/posts\/103\/revisions\/105"}],"wp:attachment":[{"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bensonmax.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}