73 lines
5.4 KiB
Markdown
73 lines
5.4 KiB
Markdown
# Ansible-HAProxy-Failover
|
|
|
|
Ansible playbook that provisions a group of servers to run HAProxy with a shared hosting IP from keepalived.
|
|
|
|
## Variables
|
|
|
|
| Variable | Required | Default | Choices | Description |
|
|
| --------------------------------- | -------- | --------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
| haproxy_bind_adapter | Yes | eth0 | | Interface to use for the Shared IP |
|
|
| haproxy_config_file | Yes | example.haproxy.cfg.j2 | | File name to use for the haproxy config file |
|
|
| haproxy_keepalived_adapter | Yes | eth0 | | Interface to use for the keepalived communication |
|
|
| haproxy_keepalived_adapter_vlan | No | | | When specified, this will setup the given vlan and use that for the keepalived communication to keep the traffic out of the primary network |
|
|
| haproxy_keepalived_ip | Yes | 172.16.10.1/24 | | IP to use for the keepalived communication |
|
|
| haproxy_keepalived_process_weight | Yes | 10 | | Weight used for tracking the haproxy process on the server |
|
|
| haproxy_listen_ports | Yes | 22/tcp, 80/tcp, 443/tcp, 9999/tcp | | The firewall ports/protocols that should be opened on the firewall |
|
|
| haproxy_shared_ip | Yes | | | Shared IP that will be used by the group |
|
|
| haproxy_shared_ip_subnet | Yes | /24 | | Subnet for the shared IP |
|
|
| haproxy_shared_password | No | | | Optional password that should be used for the keepalived authentication |
|
|
| haproxy_shared_priority | Yes | 100 | | Keepalived priority for the host - this will |
|
|
| haproxy_shared_state | Yes | MASTER | MASTER/BACKUP | What state the keepalived configuration will start with for the desired host - After config starts it will determine if other members exist and adjust based on priority |
|
|
| haproxy_shared_virtual_router_id | Yes | 25 | | Virtual Router ID for the keepalived configuration - This should be the same for the group |
|
|
|
|
## Example
|
|
|
|
Execute playbook with needed variables
|
|
|
|
`ansible-playbook -i hosts site.yml --ask-pass --ask-become-pass`
|
|
|
|
Inventory File:
|
|
|
|
```yaml
|
|
---
|
|
# file: hosts
|
|
|
|
haproxy:
|
|
hosts:
|
|
dev-ha01:
|
|
ansible_host: 10.1.1.3
|
|
haproxy_shared_state: MASTER
|
|
haproxy_shared_priority: 101
|
|
haproxy_bind_adapter: "eth0"
|
|
haproxy_keepalived_adapter: "eth0"
|
|
haproxy_keepalived_adapter_vlan: "100"
|
|
haproxy_keepalived_ip: 172.16.10.1/24
|
|
|
|
dev-ha02:
|
|
ansible_host: 10.1.1.4
|
|
haproxy_shared_state: BACKUP
|
|
haproxy_shared_priority: 100
|
|
haproxy_bind_adapter: "eth0"
|
|
haproxy_keepalived_adapter: "eth0"
|
|
haproxy_keepalived_adapter_vlan: "100"
|
|
haproxy_keepalived_ip: 172.16.10.2/24
|
|
|
|
dev-ha03:
|
|
ansible_host: 10.1.1.5
|
|
haproxy_shared_state: BACKUP
|
|
haproxy_shared_priority: 99
|
|
haproxy_bind_adapter: "eth0"
|
|
haproxy_keepalived_adapter: "eth0"
|
|
haproxy_keepalived_adapter_vlan: "100"
|
|
haproxy_keepalived_ip: 172.16.10.3/24
|
|
|
|
vars:
|
|
haproxy_shared_ip: "10.10.2.60"
|
|
haproxy_shared_ip_subnet: "/24"
|
|
haproxy_shared_virtual_router_id: 25
|
|
|
|
```
|
|
|
|
## License
|
|
|
|
See LICENSE file for full license information.
|