| 
  
   Size: 657 
  
  Comment:  
 | 
  
   Size: 2455 
  
  Comment:  
 | 
| Deletions are marked like this. | Additions are marked like this. | 
| Line 1: | Line 1: | 
| = Corosync = We will use corosync to create a virtual IP-address which is shared by two systems. One of the systems has the virtual IP-address. If the system goes down, the other system will take over the virtual IP-address.  | 
= Corosync and HA-proxy = | 
| Line 4: | Line 3: | 
|  * 192.168.1.47 virtual IP-address * 192.168.1.50 haproxy01 * 192.168.1.51 haproxy02  | 
We will use corosync to create a virtual IP-address which is shared by two systems. One of the systems has the virtual IP-address. If the system goes down, the other system will take over the virtual IP-address. HA-proxy will be running on each of the hosts relaying incoming HTTP-requests to two webservers. * 192.168.1.47 www (virtual IP-address) * 192.168.1.48 haproxy01 * 192.168.1.49 haproxy02  | 
| Line 10: | Line 11: | 
| apt-get install corosync | apt-get install corosync haproxy crmsh | 
| Line 14: | Line 15: | 
| Before binding to the DNS name `www` make sure the DNS server knows that name. === HA-proxy === Add the following to `/etc/haproxy/haproxy.cfg` {{{ listen webfarm bind www:80 mode http balance roundrobin cookie LBN insert indirect nocache option httpclose option forwardfor server haproxy01 www01:80 cookie node1 check server haproxy02 www02:80 cookie node2 check }}} Restart HA-proxy {{{ service haproxy restart }}} === Corosync ===  | 
|
| Line 22: | Line 45: | 
| Restart corosync to load the new configuration. {{{ service corosync restart }}}  | 
|
| Line 24: | Line 52: | 
| {{{ | {{{#!highlight bash # do not kill other node crm configure property stonith-enabled=false # disable quorum due to two nodes only crm configure property no-quorum-policy=ignore # configure shared IP crm configure primitive haproxySharedIP ocf:heartbeat:IPaddr2 params ip=192.168.1.47 cidr_netmask=24 op monitor interval=5s # create heartbeat for haproxy crm configure primitive haproxyLoadBalance ocf:heartbeat:haproxy params conffile=/etc/haproxy/haproxy.cfg op monitor interval=10s # make sure the same server has both IP and service #crm configure group haproxyIPs haproxySharedIP meta ordered=false crm configure group haproxy haproxySharedIP haproxyLoadBalance # relation between IP and haproxy servers crm configure colocation haproxyWithIPs INFINITY: haproxyLoadBalance haproxySharedIP # IP should be up before haproxy starts crm configure order haproxyAfterIPs mandatory: haproxySharedIP haproxyLoadBalance #wget http://github.com/russki/cluster-agents/raw/master/haproxy #echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf  | 
Corosync and HA-proxy
We will use corosync to create a virtual IP-address which is shared by two systems. One of the systems has the virtual IP-address. If the system goes down, the other system will take over the virtual IP-address. HA-proxy will be running on each of the hosts relaying incoming HTTP-requests to two webservers.
- 192.168.1.47 www (virtual IP-address)
 - 192.168.1.48 haproxy01
 - 192.168.1.49 haproxy02
 
Software
apt-get install corosync haproxy crmsh
Configuration
Before binding to the DNS name www make sure the DNS server knows that name.
HA-proxy
Add the following to /etc/haproxy/haproxy.cfg
listen webfarm 
        bind www:80
        mode http
        balance roundrobin
        cookie LBN insert indirect nocache
        option httpclose
        option forwardfor
        server haproxy01 www01:80 cookie node1 check
        server haproxy02 www02:80 cookie node2 checkRestart HA-proxy
service haproxy restart
Corosync
Add the local network and a multicast address to /etc/corosync/corosync.conf in the interface section
interface {
        bindnetaddr: 192.168.1.0 
        mcastaddr: 239.192.1.1
}Restart corosync to load the new configuration.
service corosync restart
Commmands
Run the following on startup
   1 # do not kill other node
   2 crm configure property stonith-enabled=false
   3 # disable quorum due to two nodes only
   4 crm configure property no-quorum-policy=ignore
   5 # configure shared IP
   6 crm configure primitive haproxySharedIP  ocf:heartbeat:IPaddr2 params ip=192.168.1.47 cidr_netmask=24 op monitor interval=5s
   7 # create heartbeat for haproxy
   8 crm configure primitive haproxyLoadBalance ocf:heartbeat:haproxy params conffile=/etc/haproxy/haproxy.cfg op monitor interval=10s
   9 
  10 # make sure the same server has both IP and service
  11 #crm configure group haproxyIPs haproxySharedIP meta ordered=false
  12 crm configure group haproxy haproxySharedIP haproxyLoadBalance
  13 # relation between IP and haproxy servers
  14 crm configure colocation haproxyWithIPs INFINITY: haproxyLoadBalance haproxySharedIP
  15 # IP should be up before haproxy starts
  16 crm configure order haproxyAfterIPs mandatory: haproxySharedIP haproxyLoadBalance 
  17 #wget http://github.com/russki/cluster-agents/raw/master/haproxy
  18 #echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
  19