| Filip Pytloun | 48d3830 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 1 | ======= | 
|  | 2 | HAproxy | 
|  | 3 | ======= | 
|  | 4 |  | 
|  | 5 | The Reliable, High Performance TCP/HTTP Load Balancer. | 
|  | 6 |  | 
| Jiri Konecny | 371c6de | 2016-03-02 11:32:46 +0100 | [diff] [blame] | 7 |  | 
|  | 8 | Sample pillars | 
|  | 9 | ============== | 
|  | 10 |  | 
|  | 11 | Simple admin listener | 
|  | 12 |  | 
|  | 13 | .. code-block:: yaml | 
|  | 14 |  | 
|  | 15 | haproxy: | 
|  | 16 | proxy: | 
|  | 17 | enabled: True | 
|  | 18 | listen: | 
|  | 19 | admin_page: | 
|  | 20 | type: admin | 
|  | 21 | binds: | 
|  | 22 | - address: 0.0.0.0 | 
|  | 23 | port: 8801 | 
|  | 24 | user: fsdfdsfds | 
|  | 25 | password: dsfdsf | 
|  | 26 |  | 
| Jiri Konecny | 371c6de | 2016-03-02 11:32:46 +0100 | [diff] [blame] | 27 | Simple stats listener | 
|  | 28 |  | 
|  | 29 | .. code-block:: yaml | 
|  | 30 |  | 
|  | 31 | haproxy: | 
|  | 32 | proxy: | 
|  | 33 | enabled: True | 
|  | 34 | listen: | 
|  | 35 | admin_page: | 
|  | 36 | type: stats | 
|  | 37 | binds: | 
|  | 38 | - address: 0.0.0.0 | 
|  | 39 | port: 8801 | 
|  | 40 |  | 
|  | 41 |  | 
|  | 42 |  | 
|  | 43 | Sample pillar with admin | 
| Filip Pytloun | 48d3830 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 44 |  | 
|  | 45 | .. code-block:: yaml | 
|  | 46 |  | 
|  | 47 | haproxy: | 
|  | 48 | proxy: | 
|  | 49 | enabled: True | 
|  | 50 | mode: http/tcp | 
| Jiri Konecny | 371c6de | 2016-03-02 11:32:46 +0100 | [diff] [blame] | 51 | logging: syslog | 
| Filip Pytloun | 98f7a4f | 2016-09-19 14:07:24 +0200 | [diff] [blame] | 52 | maxconn: 1024 | 
|  | 53 | timeout: | 
|  | 54 | connect: 5000 | 
|  | 55 | client: 50000 | 
|  | 56 | server: 50000 | 
| Filip Pytloun | 48d3830 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 57 | listens: | 
|  | 58 | - name: https-in | 
|  | 59 | bind: | 
|  | 60 | address: 0.0.0.0 | 
|  | 61 | port: 443 | 
|  | 62 | servers: | 
|  | 63 | - name: server1 | 
|  | 64 | host: 10.0.0.1 | 
|  | 65 | port: 8443 | 
|  | 66 | - name: server2 | 
|  | 67 | host: 10.0.0.2 | 
|  | 68 | port: 8443 | 
|  | 69 | params: 'maxconn 256' | 
|  | 70 |  | 
| Jiri Konecny | 371c6de | 2016-03-02 11:32:46 +0100 | [diff] [blame] | 71 |  | 
| Filip Pytloun | 48d3830 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 72 | Sample pillar with custom logging | 
| Filip Pytloun | 48d3830 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 73 |  | 
|  | 74 | .. code-block:: yaml | 
|  | 75 |  | 
|  | 76 | haproxy: | 
|  | 77 | proxy: | 
|  | 78 | enabled: True | 
|  | 79 | mode: http/tcp | 
|  | 80 | logging: syslog | 
| Filip Pytloun | 98f7a4f | 2016-09-19 14:07:24 +0200 | [diff] [blame] | 81 | maxconn: 1024 | 
|  | 82 | timeout: | 
|  | 83 | connect: 5000 | 
|  | 84 | client: 50000 | 
|  | 85 | server: 50000 | 
| Filip Pytloun | 48d3830 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 86 | listens: | 
|  | 87 | - name: https-in | 
|  | 88 | bind: | 
|  | 89 | address: 0.0.0.0 | 
|  | 90 | port: 443 | 
|  | 91 | servers: | 
|  | 92 | - name: server1 | 
|  | 93 | host: 10.0.0.1 | 
|  | 94 | port: 8443 | 
|  | 95 | - name: server2 | 
|  | 96 | host: 10.0.0.2 | 
|  | 97 | port: 8443 | 
|  | 98 | params: 'maxconn 256' | 
|  | 99 |  | 
|  | 100 | .. code-block:: yaml | 
|  | 101 |  | 
|  | 102 | haproxy: | 
|  | 103 | proxy: | 
|  | 104 | enabled: true | 
|  | 105 | mode: tcp | 
|  | 106 | logging: syslog | 
|  | 107 | max_connections: 1024 | 
|  | 108 | listens: | 
|  | 109 | - name: mysql | 
|  | 110 | type: mysql | 
|  | 111 | binds: | 
|  | 112 | - address: 10.0.88.70 | 
|  | 113 | port: 3306 | 
|  | 114 | servers: | 
|  | 115 | - name: node1 | 
|  | 116 | host: 10.0.88.13 | 
|  | 117 | port: 3306 | 
|  | 118 | params: check inter 15s fastinter 2s downinter 1s rise 5 fall 3 | 
|  | 119 | - name: node2 | 
|  | 120 | host: 10.0.88.14 | 
|  | 121 | port: 3306 | 
|  | 122 | params: check inter 15s fastinter 2s downinter 1s rise 5 fall 3 backup | 
|  | 123 | - name: node3 | 
|  | 124 | host: 10.0.88.15 | 
|  | 125 | port: 3306 | 
|  | 126 | params: check inter 15s fastinter 2s downinter 1s rise 5 fall 3 backup | 
|  | 127 | - name: rabbitmq | 
|  | 128 | type: rabbitmq | 
|  | 129 | binds: | 
|  | 130 | - address: 10.0.88.70 | 
|  | 131 | port: 5672 | 
|  | 132 | servers: | 
|  | 133 | - name: node1 | 
|  | 134 | host: 10.0.88.13 | 
|  | 135 | port: 5673 | 
|  | 136 | params: check inter 5000 rise 2 fall 3 | 
|  | 137 | - name: node2 | 
|  | 138 | host: 10.0.88.14 | 
|  | 139 | port: 5673 | 
|  | 140 | params: check inter 5000 rise 2 fall 3 backup | 
|  | 141 | - name: node3 | 
|  | 142 | host: 10.0.88.15 | 
|  | 143 | port: 5673 | 
|  | 144 | params: check inter 5000 rise 2 fall 3 backup | 
|  | 145 | -name: keystone-1 | 
|  | 146 | type: general-service | 
|  | 147 | bins: | 
|  | 148 | - address: 10.0.106.170 | 
|  | 149 | port: 5000 | 
|  | 150 | servers: | 
|  | 151 | -name: node1 | 
|  | 152 | host: 10.0.88.13 | 
|  | 153 | port: 5000 | 
|  | 154 | params: check | 
|  | 155 |  | 
|  | 156 | .. code-block:: yaml | 
|  | 157 |  | 
|  | 158 | haproxy: | 
|  | 159 | proxy: | 
|  | 160 | enabled: true | 
|  | 161 | mode: tcp | 
|  | 162 | logging: syslog | 
|  | 163 | max_connections: 1024 | 
|  | 164 | listens: | 
|  | 165 | - name: mysql | 
|  | 166 | type: mysql | 
|  | 167 | binds: | 
|  | 168 | - address: 10.0.88.70 | 
|  | 169 | port: 3306 | 
|  | 170 | servers: | 
|  | 171 | - name: node1 | 
|  | 172 | host: 10.0.88.13 | 
|  | 173 | port: 3306 | 
|  | 174 | params: check inter 15s fastinter 2s downinter 1s rise 5 fall 3 | 
|  | 175 | - name: node2 | 
|  | 176 | host: 10.0.88.14 | 
|  | 177 | port: 3306 | 
|  | 178 | params: check inter 15s fastinter 2s downinter 1s rise 5 fall 3 backup | 
|  | 179 | - name: node3 | 
|  | 180 | host: 10.0.88.15 | 
|  | 181 | port: 3306 | 
|  | 182 | params: check inter 15s fastinter 2s downinter 1s rise 5 fall 3 backup | 
|  | 183 | - name: rabbitmq | 
|  | 184 | type: rabbitmq | 
|  | 185 | binds: | 
|  | 186 | - address: 10.0.88.70 | 
|  | 187 | port: 5672 | 
|  | 188 | servers: | 
|  | 189 | - name: node1 | 
|  | 190 | host: 10.0.88.13 | 
|  | 191 | port: 5673 | 
|  | 192 | params: check inter 5000 rise 2 fall 3 | 
|  | 193 | - name: node2 | 
|  | 194 | host: 10.0.88.14 | 
|  | 195 | port: 5673 | 
|  | 196 | params: check inter 5000 rise 2 fall 3 backup | 
|  | 197 | - name: node3 | 
|  | 198 | host: 10.0.88.15 | 
|  | 199 | port: 5673 | 
|  | 200 | params: check inter 5000 rise 2 fall 3 backup | 
|  | 201 | -name: keystone-1 | 
|  | 202 | type: general-service | 
|  | 203 | bins: | 
|  | 204 | - address: 10.0.106.170 | 
|  | 205 | port: 5000 | 
|  | 206 | servers: | 
|  | 207 | -name: node1 | 
|  | 208 | host: 10.0.88.13 | 
|  | 209 | port: 5000 | 
|  | 210 | params: check | 
|  | 211 |  | 
| Filip Pytloun | e1a6f06 | 2016-08-26 15:13:38 +0200 | [diff] [blame] | 212 | Custom more complex listener (for Artifactory and subdomains for docker | 
|  | 213 | registries) | 
|  | 214 |  | 
|  | 215 | .. code-block:: yaml | 
|  | 216 |  | 
|  | 217 | haproxy: | 
|  | 218 | proxy: | 
|  | 219 | listen: | 
|  | 220 | artifactory: | 
|  | 221 | mode: http | 
|  | 222 | options: | 
|  | 223 | - forwardfor | 
|  | 224 | - forwardfor header X-Real-IP | 
|  | 225 | - httpchk | 
|  | 226 | - httpclose | 
|  | 227 | - httplog | 
|  | 228 | acl: | 
|  | 229 | is_docker: "path_reg ^/v[12][/.]*" | 
|  | 230 | http_request: | 
|  | 231 | - action: "set-path /artifactory/api/docker/%[req.hdr(host),lower,field(1,'.')]%[path]" | 
|  | 232 | condition: "if is_docker" | 
|  | 233 | balance: source | 
|  | 234 | binds: | 
|  | 235 | - address: ${_param:cluster_vip_address} | 
|  | 236 | port: 8082 | 
| Filip Pytloun | 4201b38 | 2016-09-09 12:21:18 +0200 | [diff] [blame] | 237 | ssl: | 
|  | 238 | enabled: true | 
|  | 239 | # This PEM file needs to contain key, cert, CA and possibly | 
|  | 240 | # intermediate certificates | 
|  | 241 | pem_file: /etc/haproxy/ssl/server.pem | 
| Filip Pytloun | e1a6f06 | 2016-08-26 15:13:38 +0200 | [diff] [blame] | 242 | servers: | 
|  | 243 | - name: ${_param:cluster_node01_name} | 
|  | 244 | host: ${_param:cluster_node01_address} | 
|  | 245 | port: 8082 | 
|  | 246 | params: check | 
|  | 247 | - name: ${_param:cluster_node02_name} | 
|  | 248 | host: ${_param:cluster_node02_address} | 
|  | 249 | port: 8082 | 
|  | 250 | params: backup check | 
|  | 251 |  | 
| Filip Pytloun | 48d3830 | 2015-10-06 16:28:31 +0200 | [diff] [blame] | 252 | Read more | 
|  | 253 | ========= | 
|  | 254 |  | 
|  | 255 | * https://github.com/jesusaurus/hpcs-salt-state/tree/master/haproxy | 
|  | 256 | * http://www.nineproductions.com/saltstack-ossec-state-using-reactor/ - example reactor usage. | 
|  | 257 | * https://gist.github.com/tomeduarte/6340205 - example on how to use peer from within a config file (using jinja) | 
|  | 258 | * http://youtu.be/jJJ8cfDjcTc?t=8m58s - from 9:00 on, a good overview of peer vs mine | 
|  | 259 | * https://github.com/russki/cluster-agents |