Différences entre les versions de « Lvs »
| Ligne 402 : | Ligne 402 : | ||
</pre> | </pre> | ||
===== Ipvsadm ===== | |||
Lorsque la configuration keepalived au niveau virtual server et real server et mise en place, au moment du start de keepalived, la configuration est transmise à LVS via le soft ipvsadm | Lorsque la configuration keepalived au niveau virtual server et real server et mise en place, au moment du start de keepalived, la configuration est transmise à LVS via le soft ipvsadm | ||
et c'est lui qui va gérer le loadbalancing. | et c'est lui qui va gérer le loadbalancing. | ||
| Ligne 422 : | Ligne 422 : | ||
</pre> | </pre> | ||
==== Proxy ==== | |||
===== Configuration des sites web ===== | |||
* www.virginmobile.fr | * www.virginmobile.fr | ||
<pre> | <pre> | ||
| Ligne 571 : | Ligne 571 : | ||
CustomLog ${APACHE_LOG_DIR}/access.log combined | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
</VirtualHost> | </VirtualHost> | ||
</pre> | |||
==== Serveurs Web ==== | |||
<pre> | |||
Pas de configuration particulière, ils recoivent les requetes web. | |||
Ils ont comme gateway par défaut le firewall | |||
</pre> | </pre> | ||
| Ligne 611 : | Ligne 617 : | ||
</pre> | </pre> | ||
[[Catégorie:Software]] | [[Catégorie:Software]] | ||
Version du 24 septembre 2013 à 13:52
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 cas N°1 HA
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
- keepalived et ipvsadm tournent - ont la gateway des proxy via une vip "gw" keepalived - ont les vip web privées 10.82.10.100 (correspond au domaine www.virginmobile.fr) et 10.82.10.101 (correpond au domaine enabler.virginmobile.fr) 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,66,67,68) - ont pour gateway par defaut le firewall
- Proxy
Apache installé avec proxy_module, proxy_balancer_module, proxy_http_module. 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 - vhost : www.virginmobile.fr en http et https (10.82.12.65 & 10.82.12.67) - proxy balancer vers www1.so.omeatelecom.fr:80 (web1.so) www1.lc.omeatelecom.fr:80 (web1.lc) - vhost : enabler.virginmobile.fr en http (10.82.12.66 & 10.82.12.68) - proxy balancer vers enabler1.so.omeatelecom.fr:8080 (web1.so) enabler1.lc.omeatelecom.fr:8080 (web1.lc)
- Serveurs Web
Pas de configuration particulière, ils recoivent les requetes web. Ils ont comme gateway par défaut le firewall
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"
Proxy
/etc/network/interfaces
Ce qui est important ici, c'est le "pre-up ethtool -K eth0 rx off"
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 10.82.10.129 # 10.82.10.130 sur proxy1.lc
netmask 255.255.255.192
post-up route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.82.10.190
post-up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.82.10.190
post-up route add -net 172.16.0.0 netmask 255.240.0.0 gw 10.82.10.190
pre-up ethtool -K eth0 rx off
auto eth1
iface eth1 inet static
address 10.82.12.65 # 10.82.12.67 sur proxy1.lc
netmask 255.255.255.192
gateway 10.82.12.126
pre-up ethtool -K eth1 rx off
auto eth1:1
iface eth1:1 inet static
address 10.82.12.66 # 10.82.12.68 sur proxy1.lc
netmask 255.255.255.192
/etc/hosts
A rajouter dans les 2 serveurs proxy, cela va servir dans la conf apache
10.82.11.2 enabler1.so.omeatelecom.fr 10.82.11.1 enabler1.so.omeatelecom.fr 10.82.10.193 www1.so.omeatelecom.fr 10.82.10.194 www1.lc.omeatelecom.fr
Configuration Logiciel
LVS
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. Un Sync group va permettre de definir un ensemble d'adresse qui basculeront en meme temps. Ainsi, en cas de
# perte d'une liaison, toute les vrrps peuvent basculer en meme temps. Le groupe contiendra les noms des vrrp_instance prealablement defini
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
}
}
}
keepalived.conf 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
}
}
}
Ipvsadm
Lorsque la configuration keepalived au niveau virtual server et real server et mise en place, au moment du start de keepalived, la configuration est transmise à LVS via le soft ipvsadm et c'est lui qui va gérer le loadbalancing. Pour voir la config de ipvsadm :
# ipvsadm IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.82.10.100:http wrr persistent 600 -> 10.82.12.65:http Masq 1 0 0 -> 10.82.12.67:http Masq 1 0 0 TCP 10.82.10.100:https wrr persistent 600 -> 10.82.12.65:https Masq 1 0 0 -> 10.82.12.67:https Masq 1 0 0 TCP 10.82.10.101:http wrr persistent 600 -> 10.82.12.66:http Masq 1 0 0 -> 10.82.12.68:http Masq 1 0 0
Proxy
Configuration des sites web
- www.virginmobile.fr
NameVirtualHost 10.82.12.65:80
NameVirtualHost 10.82.12.66:80
<VirtualHost 10.82.12.65:80>
ServerAdmin webmaster@localhost
ServerName www.virginmobile.fr
DocumentRoot /var/www
<IfModule mod_proxy_balancer.c>
<Proxy balancer://www.virginmobile.fr>
BalancerMember http://www1.so.omeatelecom.fr:80
BalancerMember http://www1.lc.omeatelecom.fr:80
</Proxy>
ProxyPass /test balancer://www.virginmobile.fr
</IfModule>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
#ErrorLog ${APACHE_LOG_DIR}/error.log
ErrorLog '|logger -p local2.warn -t httpd'
LogLevel warn
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- www.virginmobile.fr-ssl
<VirtualHost 10.82.10.160:443>
ServerAdmin webmaster@localhost
ServerName www.virginmobile.fr
DocumentRoot /var/www
# <IfModule mod_ssl.c>
# SSLEngine On
# SSLCertificateFile "/etc/ssl/certs/.crt"
# SSLCertificateKeyFile "/etc/ssl/private/.key"
# </IfModule>
<IfModule mod_proxy_balancer.c>
<Proxy balancer://www.virginmobile.fr>
BalancerMember http://www1.so.omeatelecom.fr:80
BalancerMember http://www1.lc.omeatelecom.fr:80
</Proxy>
ProxyPass /test balancer://www.virginmobile.fr
</IfModule>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
#ErrorLog ${APACHE_LOG_DIR}/error.log
ErrorLog '|logger -p local2.warn -t httpd'
LogLevel warn
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- enabler.virginmobile.fr
<VirtualHost 10.82.12.66:80>
ServerAdmin webmaster@localhost
ServerName enabler.virginmobile.fr
DocumentRoot /var/www
<IfModule mod_proxy_balancer.c>
<Proxy balancer://enabler.virginmobile.fr>
BalancerMember http://enabler1.so.omeatelecom.fr:8080
BalancerMember http://enabler1.lc.omeatelecom.fr:8080
</Proxy>
ProxyPass /test balancer://enabler.virginmobile.fr
</IfModule>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
#ErrorLog ${APACHE_LOG_DIR}/error.log
ErrorLog '|logger -p local2.warn -t httpd'
LogLevel warn
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Serveurs Web
Pas de configuration particulière, ils recoivent les requetes web. Ils ont comme gateway par défaut le firewall
Présentation cas N°2 sans HA
Nous allons étudier ici un cas pratique et concret avec un systeme similaire à celui du dessus (lvs, proxy, serveur web) mis à part qu'il n y a qu'un seul serveur pour le lvs et le proxy, seul les serveurs web sont encore 2. Nous n'allons plus utiliser keepalived (car si on fait une vip avec keepalived et qu'il n y a pas de 2eme serveur, il fait des segfaults). La configuration du load balancing ca donc se faire via lvs (ipvsadm uniquement)
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
- ipvsadm tourne - ont la gateway des proxy via une vip "gw" keepalived - ont les vip web privées 10.82.10.100 (correspond au domaine www.virginmobile.fr) et 10.82.10.101 (correpond au domaine enabler.virginmobile.fr) 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,66,67,68) - ont pour gateway par defaut le firewall
- Proxy
Apache installé avec proxy_module, proxy_balancer_module, proxy_http_module. 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 - vhost : www.virginmobile.fr en http et https (10.82.12.65 & 10.82.12.67) - proxy balancer vers www1.so.omeatelecom.fr:80 (web1.so) www1.lc.omeatelecom.fr:80 (web1.lc) - vhost : enabler.virginmobile.fr en http (10.82.12.66 & 10.82.12.68) - proxy balancer vers enabler1.so.omeatelecom.fr:8080 (web1.so) enabler1.lc.omeatelecom.fr:8080 (web1.lc)
