Différences entre les versions de « Lvs »

De BlaxWiki
Aller à la navigationAller à la recherche
Ligne 2 : Ligne 2 :


'''[https://{{SERVERNAME}}/BENPERSO/doc-manuel/system/software/Lvs-ha-installation-agarik-fr.docx Documentation de mise en place de LVS] (Doc fournie par un client à Agarik)'''
'''[https://{{SERVERNAME}}/BENPERSO/doc-manuel/system/software/Lvs-ha-installation-agarik-fr.docx Documentation de mise en place de LVS] (Doc fournie par un client à Agarik)'''
Cette documentation est totalement indépendante de l'exemple ci dessous
Cette documentation est totalement indépendante de l'exemple ci dessous, elle explique en détail la mise en place de lvs et d'un loadbalancing mysql





Version du 23 septembre 2013 à 13:47


Documentation de mise en place de LVS (Doc fournie par un client à Agarik) Cette documentation est totalement indépendante de l'exemple ci dessous, elle explique en détail la mise en place de lvs et d'un loadbalancing mysql


Présentation

Nous allons étudier ici un cas pratique et concret avec un systeme en HA.

Résumé de la plateforme :

  • Firewall
Ils portent :
 - les gateway par défaut des LVS et des serveurs web, et les routes RFC1918 des proxy
 - les ip publiques des sites web, ces ip étant redirigés vers les vip privées que portent les LVS
  • LVS
 - ont la gateway des proxy via une vip "gw" keepalived
 - ont les vip web privées 10.82.10.100 & 10.82.10.101 (via une vip "web" keepalived)
 - font la redirection des vips 10.82.10.100 & 10.82.10.101 vers les real ip des serveurs proxy (10.82.12.65 à .68)
 - ont pour gateway par defaut le firewall
  • Proxy
Ils recoivent les requetes http et https loadbalancés depuis les LVS, et font proxy balancer et proxy pass vers les serveurs web
Ils ont pour gateway par défaut la vip "gw" keepalived des LVS, et pour gateway rfc1918 le firewall
  • Serveurs Web
Pas de configuration particulière, ils recoivent les requetes web.
Ils ont comme gateway par défaut le firewall
Lvs proxy.png

Configuration Système

Lvs

/etc/sysctl.conf

Cela est nécessaire pour lvs (à faire bien sur sur les 2 serveurs lvs)

net/ipv4/ip_forward=1
net/ipv4/conf/all/send_redirects=0
net/ipv4/conf/default/send_redirects=0
net/ipv4/conf/eth0/send_redirects=0
ifcfg-eth

Ici ce qui est très important c'est le ETHTOOL_OPTS="-K eth0 rx off" pour désactiver le checksum

DEVICE="eth0"
BOOTPROTO="static"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="10.82.10.65" # 10.82.10.66 pour lvs1.lc
NETMASK="255.255.255.192"
NM_CONTROLLED="no"
ETHTOOL_OPTS="-K eth0 rx off"


DEVICE="eth1"
BOOTPROTO="static"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="10.82.12.124" # 10.82.12.125 pour lvs1.lc
NETMASK="255.255.255.192"
NM_CONTROLLED="no"
ETHTOOL_OPTS="-K eth1 rx off"

Configuration Logiciel

keepalived.conf
lvs1.so

C'est le master

! Configuration File for keepalived

global_defs {
# parametre obligatoire pour faire fonctionner lvs
   router_id LVS_OMEA
}

# ici on définit un group pour regrouper nos 2 vrrp instance pour le web, mais on pourrait très bien faire sans, je ne sais pas qu'elle est son intérer
vrrp_sync_group OMEA {
   group {
        VI_virgin
        VI_enabler
   }
}

# ici on définit la vip "gw" qui sert comme gateway par défaut aux serveurs proxy, il n y a pas de service associé à cette vip
vrrp_instance VI_GW {
    state MASTER
    interface eth1
    virtual_router_id 65
    priority 100
    advert_int 1
   lvs_sync_daemon_interface eth1
    authentication {
        auth_type PASS
        auth_pass k9LaC23
    }
    virtual_ipaddress {
         10.82.12.126/26
    }
}

# ici on définit la première vip "web"
vrrp_instance VI_virgin {
    state MASTER
    interface eth0
    virtual_router_id 66
    priority 100
    advert_int 1
   lvs_sync_daemon_interface eth0
    authentication {
        auth_type PASS
        auth_pass k9LaC23
    }
    virtual_ipaddress {
        10.82.10.100/26
    }
}

# ici on définit la deuxième vip "web"
vrrp_instance VI_enabler {
    state MASTER
    interface eth0
    virtual_router_id 67
    priority 100
    advert_int 1
   lvs_sync_daemon_interface eth0
    authentication {
        auth_type PASS
        auth_pass k9LaC23
    }
    virtual_ipaddress {
        10.82.10.101/26
    }
}


# Configuration du virtual serveur et des real associés
virtual_server 10.82.10.100 80 {
        delay_loop 5
        lb_algo wrr
        lb_kind NAT
        persistence_timeout 600
        protocol TCP
        real_server 10.82.12.65 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 80
                }
        }
        real_server 10.82.12.67 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 80
                }
        }

}

virtual_server 10.82.10.100 443 {
        delay_loop 5
        lb_algo wrr
        lb_kind NAT
        persistence_timeout 600
        protocol TCP
        real_server 10.82.12.65 443 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 443
                }
        }
        real_server 10.82.12.67 443 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 443
                }
        }

}

virtual_server 10.82.10.101 80 {
        delay_loop 5
        lb_algo wrr
        lb_kind NAT
        persistence_timeout 600
        protocol TCP
        real_server 10.82.12.66 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 80
                }
        }
        real_server 10.82.12.68 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 80
                }
        }
}
lvs1.lc
! Configuration File for keepalived

global_defs {
   router_id LVS_OMEA
}

vrrp_sync_group OMEA {
   group {
        VI_virgin
        VI_enabler
   }
}

vrrp_instance VI_GW {
    state BACKUP
    interface eth1
    virtual_router_id 65
    priority 50
    advert_int 1
   lvs_sync_daemon_interface eth1
    authentication {
        auth_type PASS
        auth_pass k9LaC23
    }
    virtual_ipaddress {
         10.82.12.126/26
    }
}


vrrp_instance VI_virgin {
    state BACKUP
    interface eth0
    virtual_router_id 66
    priority 50
    advert_int 1
   lvs_sync_daemon_interface eth0
    authentication {
        auth_type PASS
        auth_pass k9LaC23
    }
    virtual_ipaddress {
        10.82.10.100/26
    }
}


vrrp_instance VI_enabler {
    state BACKUP
    interface eth0
    virtual_router_id 67
    priority 50
    advert_int 1
   lvs_sync_daemon_interface eth0
    authentication {
        auth_type PASS
        auth_pass k9LaC23
    }
    virtual_ipaddress {
        10.82.10.101/26
    }
}


virtual_server 10.82.10.100 80 {
        delay_loop 5
        lb_algo wrr
        lb_kind NAT
        persistence_timeout 600
        protocol TCP
        real_server 10.82.12.65 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 80
                }
        }
        real_server 10.82.12.67 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 80
                }
        }

}

virtual_server 10.82.10.100 443 {
        delay_loop 5
        lb_algo wrr
        lb_kind NAT
        persistence_timeout 600
        protocol TCP
        real_server 10.82.12.65 443 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 443
                }
        }

        real_server 10.82.12.67 443 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 443
                }
        }

}


virtual_server 10.82.10.101 80 {
        delay_loop 5
        lb_algo wrr
        lb_kind NAT
        persistence_timeout 600
        protocol TCP
        real_server 10.82.12.66 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 80
                }
        }
        real_server 10.82.12.68 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        connect_port 80
                }
        }
}