Création d'un Load Balancing sur des serveurs FTPd.

1. Avant-propos
1.1. Présentation
1.2. Introduction
2. Installation du serveur VsFTPd
2.1. Installation des binaires du VsFTPd
2.2. Configuration du VsFTPd
3. Installation du HaProxy
3.1. Configuration du HaProxy
3.2. Démarrage du service HaProxy

1. Avant-propos


1.1 - Présentation.



+------------------------------+                                               +--------------------------------------+ 
| Client FileZilla             |                                               | Serveur HaProxy                      | 
| Hostname : windaube          |                                               | Version : 1.5.2                      | 
| Os : Windows 7               |                                               | Hostname : arecibo                   | 
|                              |                                               |                                      | 
| IP : 10.25.85.125            |                                               | IP : 10.25.85.56                     | 
|                              |                                               |                                      | 
| +--------------------------+ |                                               | +---------------------------------+  | 
| | FileZilla                |-|-----------------------------------------------|-|---> Proxy                       |  | 
| +--------------------------+ |                                               | |                                 |  |
|                              |                                               | |  Load Balancing                 |  |
|                              |                                               | |                                 |  |
|                              |                                               | +---------------------------------+  | 
+------------------------------+                                               +--------------------------------------+ 
                                                                              /                      |
                                                                             /                       |
                                                                     +----------------+      +----------------+ 
                                                                     |Port 21         |      | Port 21        |
                                                                     |Port 9001-9250  |      | Port 9251-9500 |
                                                                     +----------------+      +----------------+
                                                                         /                           |
                                                                        /                            |
                                                                       V                             V
                                                +---------------------------+             +--------------------------+
                                                |  Serveur : VsFTPd         |             | Serveur : VsFTPd         |
                                                |  Version : 2.2.2          |             | Version : 2.2.2          |
                                                |  Hostname : Jupiter       |             | Hostname : Saturne       |
                                                |                           |             |                          |
                                                |  I.P : 168.2.15.23        |             | I.P : 168.2.15.24        |
                                                |  Port : 9000-9250         |             | Port : 9250-9500         |
                                                +---------------------------+             +--------------------------+



1.2 - Introduction


Nous allons réaliser l'installation d'un Serveur FTP (vsftp) sur deux serveurs avec de la répartission de charge (Loadbalancing) au moyen d'un serveur HaProxy.

2. Installation du serveur VsFTPd


Pour installer les binaires du serveur vsftpd, nous allons utiliser les bianaires déjà présent sur notre repository.
Toutes les actions d'écrite dans ce chapitre on lieu sur le serveur Jupiter.
Il faudra répèter les mêmes actions sur le serveur saturne en modifiant dans la configuration l'adresse ip et les ports.

2.1 - Installation des binaires du VsFTPd


Pour installer les binaires du serveur VsFTPd, lancer la commande suivante :
[root@jupiter] # yum install vsftpd
Cependant, il est tout à fait possible de télécharger le fichier rpm adéquat (vsftpd-2.2.2-11.el6_4.1.x86_64.rpm).
[root@jupiter] # rpm -i vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.2.2-11.el6_4.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================
 Package                  Arch         Version                      Repository                                 Size
====================================================================================================================================
Installing:
 vsftpd                   x86_64       2.2.2-11.el6_4.1             socle-linux-1974-08-11_x86_64              151 k

Transaction Summary
====================================================================================================================================
Install       1 Package(s)

Total download size: 151 k
Installed size: 331 k
Is this ok [y/N]: y
Downloading Packages:
vsftpd-2.2.2-11.el6_4.1.x86_64.rpm                             | 151 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : vsftpd-2.2.2-11.6_4.1.86_64                     1/1 
  Verifying  : vsftpd-2.2.2-11.6_4.1.86_64                     1/1 

Installed:
  vsftpd.x86_64 0:2.2.2-11.el6_4.1                                                                                                                                                                              

Complete!
[root@jupiter] # 



2.2 - Configuration du VsFTPd


Afin de configurer le serveur VsFTPd allez dans le répertoire où se trouve les fichiers de configuration "/etc/vsftpd/".
[root@jupiter] # cd /etc/vsftpd/
[root@jupiter] # cd /etc/vsftpd/
[root@jupiter] # ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@jupiter] # 

Puis faite une copie du fichier de configuration existant.
[root@jupiter] # cp vsftpd.conf vsftpd.conf.origine
[root@jupiter] # cp vsftpd.conf vsftpd.conf.origine
[root@jupiter] # ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.conf.origine
[root@jupiter] # 


Puis modifier le fichier de configuration comme dans l'exemple ci-dessous.
Pour se faire taper la commande suivante :
[root@jupiter] # vi vsftpd.conf

listen=YES
listen_address=168.2.15.23
anonymous_enable=NO
local_enable=YES
write_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_enable=YES
userlist_deny=YES
max_clients=30
max_per_ip=4
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner="Bienvenue sur le serveur Jupiter FTP service."
chroot_local_user=YES
local_root=/mnt/glustervolume/depot_fichiers
pam_service_name=vsftpd

### Pour le HAProxy
tcp_wrappers=YES
pasv_enable=YES
## Pour le bad ip address.
pasv_promiscuous=YES
#port_enable=YES
pasv_min_port=9000
pasv_max_port=9250
pasv_address=10.25.85.56



Nous pouvons maintenant démarrer le serveur VsFTPd en lancant la commande suivante :
[root@jupiter] # service vsftpd start
[root@jupiter] # service vsftpd start
Démarrage de vsftpd pour vsftpd :                          [  OK  ]
[root@jupiter] # 

3. Installation du HaProxy


Dans l'exemple suivant nous allons configurer le HaProxy pour qu'il distribut le traffic sur nos deux serveur VsFTPd.

3.1 - Configuration du HaProxy


Dans le répertoire /etc/haproxy du serveur arecibo modifier le fichier haproxy.cfg
[root@saturne] # vi haproxy.cfg

global
    log 127.0.0.1 local0 info
    chroot /var/lib/haproxy
    user haproxy
    group haproxy
    maxconn 2000

defaults
    log global
    mode tcp
    option tcplog
    retries 3

###################################################################################
######                                  FTP                                 #######
###################################################################################
frontend ftp_service_front
    mode                  tcp
    bind *:21
    option tcplog
    default_backend ftp_server_pool

# Serveur ftp jupiter dans le fichier vsftpd.conf PASV ports defini
frontend ftp_jupiter_front
    mode                tcp
    bind                *:9001-9250
    default_backend ftp_jupiter_back

frontend ftp_saturne_front
    mode                tcp
    bind                *:9251-9500
    default_backend ftp_saturne_back

# Pool de serveur FTP
backend ftp_server_pool
    mode                  tcp
    server ftp_server_jupiter 168.2.15.23 check port 21 inter 10s rise 1 fall 2
    server ftp_server_saturne 168.2.15.24 check port 21 inter 10s rise 1 fall 2

# Serveur ftp jupiter
backend ftp_jupiter_back
    mode                  tcp
    server ftp_jupiter_front 168.2.15.23 check port 21 inter 10s rise 1 fall 2

# Serveur ftp saturne
backend ftp_saturne_back
    mode                  tcp
    server ftp_saturne_front 168.2.15.24 check port 21 inter 10s rise 1 fall 2



3.2 - Démarrage du service HaProxy


Afin de démarrer notre serveur HaProxy nous allons lancer la commande suivante.
[root@saturne] # /etc/init.d/haproxy start

[root@saturne] # /etc/init.d/haproxy start
Démarrage de haproxy :                                     [  OK  ]
[root@saturne] #