┌──[root@vms.154.liruilongs.github.io]-[~] └─$cat /etc/haproxy18/haproxy.cfg #--------------------------------------------------------------------- # Example configuration for a possible web application. See the # full configuration options online. # # https://www.haproxy.org/download/1.8/doc/configuration.txt # #---------------------------------------------------------------------
#--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global # to have these messages end up in /var/log/haproxy.log you will # need to: # # 1) configure syslog to accept network log events. This is done # by adding the '-r' option to the SYSLOGD_OPTIONS in # /etc/sysconfig/syslog # # 2) configure local2 events to go to the /var/log/haproxy.log # file. A line like the following can be added to # /etc/sysconfig/syslog # # local2.* /var/log/haproxy.log # log 127.0.0.1 local2
chroot /var/lib/haproxy18 pidfile /var/run/haproxy18.pid maxconn 4000 user haproxy group haproxy daemon
# turn on stats unix socket stats socket /var/lib/haproxy18/stats
#--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000
#--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend main bind *:5000 acl url_static path_beg -i /static /images /javascript /stylesheets acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static default_backend app
#--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- backend static balance roundrobin server static 127.0.0.1:4331 check
#--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend app balance roundrobin # 可以的负载方式 static-rr,rdp-cookie,hdr, url_param ,url, source,leastconn server app1 192.168.29.152:5001 check server app2 192.168.26.152:5002 check
┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible-galaxy init role-haproxy18 --init-path ./roles/ - Role role-haproxy18 was created successfully ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible-galaxy list | grep ha - role-haproxy18, (unknown version)
┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$cat roles/role-haproxy18/defaults/main.yml --- # defaults file for role-haproxy18 # Log-level for HAProxy logs haproxy_log_level: info
# Port exposed to clients haproxy_port: 80
# Name for the default backend haproxy_backend_name: app
# Port backend is exposed to haproxy_backend_port: 80
# The appservers variable is a list # of backend servers that provide # the web service that is proxied # haproxy. Each server must define: # name, address, port. Below is # and example structure: # haproxy_appservers: [] # - name: serverb.lab.example.com # ip_address: 1.2.3.4 # port: 5000 # - name: serverc.lab.example.com # ip_address: 1.2.3.5 # port: 5000 # The default is no defined backend servers. haproxy_appservers: []
┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$cat roles/role-haproxy18/templates/haproxy.cfg.j2 #--------------------------------------------------------------------- # Example configuration for a possible web application. See the # full configuration options online. # # https://www.haproxy.org/download/1.8/doc/configuration.txt # #---------------------------------------------------------------------
#--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global # to have these messages end up in /var/log/haproxy.log you will # need to: # # 1) configure syslog to accept network log events. This is done # by adding the '-r' option to the SYSLOGD_OPTIONS in # /etc/sysconfig/syslog # # 2) configure local2 events to go to the /var/log/haproxy.log # file. A line like the following can be added to # /etc/sysconfig/syslog # # local2.* /var/log/haproxy.log # log 127.0.0.1 local2 {{ haproxy_log_level }}
chroot /var/lib/haproxy18 pidfile /var/run/haproxy18.pid maxconn 4000 user haproxy group haproxy daemon
#--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000
#--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend main bind *:{{ haproxy_port }} # acl url_static path_beg -i /static /images /javascript /stylesheets # acl url_static path_end -i .jpg .gif .png .css .js
# use_backend static if url_static default_backend {{ haproxy_backend_name }}
#--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- #backend static # balance roundrobin # server static 127.0.0.1:4331 check
#--------------------------------------------------------------------- # round robin balancing between the various backends #---------------------------------------------------------------------
backend {{ haproxy_backend_name }} balance roundrobin {% for server in haproxy_appservers %} server {{ server.name }} {{ server.ip }}:{{ server.backend_port }} check {% endfor %}