Rédiger « OVH/VPC02/idneuf/Drupal » ici.
Installation des paquets
apt-get install haproxy apache2 php5 php5-gd php5-durl libssh2-php php5-memcache memcached
Configuration d'HAProxy
Contenu du fichier /etc/haproxy/haproxy.cfg :
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
listen mysql-cluster
bind 127.0.0.1:3306
mode tcp
option mysql-check user haproxy
balance roundrobin
server prod-db02-idneuf prod-db02-idneuf:3306 check
server prod-db03-idneuf prod-db03-idneuf:3306 check
Configuration des serveurs slaves
Sur chaque serveur slave, exécuter les commandes SQL suivante :
INSERT INTO mysql.user (Host,User) VALUES ('prod-drupal02-idneuf','haproxy');
FLUSH PRIVILEGES;Cette commande va permettre a HAProxy de pourvoir tester la disponibilité du serveur via le check définie dans la configuration d'HAProxy (option mysql-check user haproxy)
Il faut ensuite créer un utilisateur en lecture seule pour la connexion de Drupal.
Sur le master, exécuter la commande SQL suivante :
GRANT SELECT ON drupal.* TO 'haproxy_auf'@'%' IDENTIFIED BY 'xxxxxxxxxxx'; FLUSH PRIVILEGES;
Utilisation de HAProxy avec Drupal
Dans le fichier sites/default/settings.php, insérer les lignes suivantes :
$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'drupal',
'username' => 'haproxy_auf',
'password' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'host' => '127.0.0.1',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
'readonly' => TRUE ,
),
),
);
Le host ne doit pas être localhost sinon la connexion ne se fera pas.
Installation de memcache
Dans le fichier /etc/memcache.conf, configurer la quantité de RAM a allouer :
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default # Note that the daemon will grow to this size, but does not start out holding this much # memory -m 1024
Configuration de Drupal
Installer le module suivant depuis l'interface d'administration :
https://ftp.drupal.org/files/projects/memcache-7.x-1.5.tar.gz
Dans le fichier sites/default/settings.php, insérer les lignes suivantes :
// Use memcache $conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc'; $conf['cache_default_class'] = 'MemCacheDrupal'; $conf['cache_inc'] = 'sites/all/modules/contrib/memcache/memcache.inc'; // Memcache session $conf['session_inc'] = 'sites/all/modules/memcache/unstable/memcache-session.inc'; // Memcache lock $conf['lock_inc'] = 'sites/all/modules/memcache/memcache-lock.inc'; // Add in stampede protection $conf['memcache_stampede_protection'] = TRUE; // Don't bootstrap the database when serving pages from the cache. $conf['page_cache_without_database'] = TRUE; $conf['page_cache_invoke_hooks'] = FALSE;
Lien avec ORI-OAI
Fichiers a modifier afin de faire le lien vers ORI-OAI
ori-oai-search-idneuf.css
http_header/index.php
sites/default/files/xmlsitemap/Xh****************************wOM/1.xml
sites/all/themes/theme1005/templates/views-view—block₁--block.tpl.php
sites/all/themes/theme1005/css/style-header-footer.css
sites/all/themes/theme1005/css/custom.css
Utilisation de NginX comme ReverseProxy
Installation et configuration
Config pour récupérer le X-Forward-For
Modifier le fichier sites/default/settings.php :
$conf['reverse_proxy'] = TRUE;
$conf['reverse_proxy_addresses'] = array('10.242.1.194','10.242.1.195');
Activer mod_status
Dans le fichier /etc/apache2/sites-available/status.conf
<VirtualHost *:80>
Alias /status /var/www/status
<Directory /var/www/status>
Require all granted
Options FollowSymLinks SymLinksIfOwnerMatch
Options None
</Directory>
<Location /server-status>
SetHandler server-status
Require local
Require ip 10.36.0.0/16
Require ip 10.242.0.0/16
</Location>
</VirtualHost>Remarque : la creation d'un virtual host est du au fait que drupal se trouve dans la racine du serveur.
Sinon, il aurait juste fallut ajouter les lignes suivantes dans /etc/apache2/mods-available/status.conf:
Require ip 10.242.0.0/16 Require ip 10.36.0.0/16
On active alors le module et on recharge Apache2 :
a2enmod status systemctl reload apache2
Notes
Redemarrage d'Apache2 :
systemctl stop apache2 && systemctl restart memcached && systemctl start apache2