Ajout du support OpenNebula HA dans Hâpy

Ajouter la possibilité de créer une grappe haute disponibilité entre
plusieurs Hâpy (https://docs.opennebula.org/5.6/advanced_components/ha/index.html)

Pré-requis : Les datastores doivent être partagés entre tous les Hâpy
via NFS ou tout autre système de fichiers accécibles de manière
concurrente entre les serveurs (Glusterfs, Ceph, DRBD).

Pour faire ce développement nous nous sommes basés sur eole-glusterfs
qui permet de créer une grappe glusterfs (https://dev-eole.ac-dijon.fr/projects/eole-glusterfs)
This commit is contained in:
2019-02-06 14:14:03 +01:00
parent 850585af21
commit 78a27b4fdd
13 changed files with 548 additions and 104 deletions

View File

@ -6,44 +6,79 @@
#
. /usr/lib/eole/ihm.sh
script="$1"
function clean_backups()
{
file=${1}
bcks=($(ls ${file}_*))
nbbck=$(expr ${#bcks[@]} - 2)
file=${1}
ls ${file}_* > /dev/null 2>&1
if [ $? = 0 ]; then
bcks=($(ls ${file}_*))
nbbck=$(expr ${#bcks[@]} - 2)
if [[ ${nbbck} -gt 1 ]]
then
EchoGras "Cleaning up old backups !"
for idx in `seq 0 ${nbbck}`
do
rm -f ${bcks[${idx}]}
done
fi
if [[ ${nbbck} -gt 1 ]]
then
EchoGras "Cleaning up old backups !"
for idx in `seq 0 ${nbbck}`
do
rm -f ${bcks[${idx}]}
done
fi
fi
}
function updateDB()
{
local dbfile='/var/lib/one/one.db'
local cmd="onedb"
local res=0
local dbfile='/var/lib/one/one.db'
local cmd="onedb"
local res=0
if [[ -f ${dbfile} ]]
then
$cmd upgrade -f -s ${dbfile}
res=${?}
clean_backups ${dbfile}
return ${res}
else
return 0
fi
if [[ -f ${dbfile} ]]
then
if [ $(CreoleGet one_database_type) = "mysql" ]; then
if [ $(CreoleGet one_ha_server_index 0) = "0" ]; then
HOST=$(CreoleGet one_database_host)
DB=$(CreoleGet one_database_name)
USER=$(CreoleGet one_database_user)
PASS=$(CreoleGet one_database_pass)
$cmd upgrade -f -u $USER -p $PASS -d $DB -S $HOST
fi
else
$cmd upgrade -f -s ${dbfile}
fi
res=${?}
clean_backups ${dbfile}
return ${res}
else
return 0
fi
}
function to_mysql() {
if [ "$script" = 'instance' ] && [ $(CreoleGet one_database_type) = "mysql" ] && [ $(CreoleGet one_ha_server_index 0) = "0" ]; then
Question_ouinon "Voulez-vous migrer de SQLite à Mysql ?" "True" "oui" "warn"
rep=$(echo "$?")
if [ "$rep" == "0" ]; then
# do not recover db on follower
HOST=$(CreoleGet one_database_host)
DB=$(CreoleGet one_database_name)
USER=$(CreoleGet one_database_user)
PASS=$(CreoleGet one_database_pass)
cp -a /etc/one/oned.conf /etc/one/oned.conf.ori
# HA ne doit pas être activer pour la migration
CreoleCat -s /usr/share/eole/creole/distrib/oned-ha-mysql.conf -o /etc/one/oned.conf
oned -i
onedb sqlite2mysql -s /var/lib/one/one.db -u $USER -p $PASS -d $DB -S $HOST
cp -a /etc/one/oned.conf.ori /etc/one/oned.conf
fi
fi
}
echo
to_mysql
echo
EchoGras "Mise à jour de la base de données ONE"
echo
updateDB
echo
exit ${?}