На одном из интервью была поставленна задача построить тестовую лабораторию сосотоящую из Ubuntu Desktop, Ubuntu Server Router и Ubuntu WEB Server с использованием виртуальных машин в VirtualBox на одном физическом хосте.
Router имел три интерфейса (первый NAT на хост) и разделял две виртуальные подсети. В первую сеть на нем должен работать DNS server для обслуживания зоны "testzone.home", NAT и DHCP сервер.
Desktop имел два интерфейса (первый NAT на хост) получает IP динамически и получает доступ к "www.testzone.home" на WEB server. Вторым интерфейсоам Router смотрит в подсеть 2 и на WEB serevr.
На WEB server имеющем два интерфейса (первый NAT на хост) установлен NGINX, MySQL, PHP и Wordpress "www.testzone.home".
К WEB server подключен внешний диск который монтируется при старте хоста. Каждые три часа база данных Wordpress, системные файлы /etc/, /home/ и папки с файлами Wordpress архивируется в примонтированный раздел. Архивы хранятся месяц после чего удаляются.
Реализация
Скачиваем ISO имиджи Ubuntu Desktop & Server 14.04 с официального сайта. Скачиваем и устанавливаем VirtualBox с официального сайта Oracle. Создаем три виртуальные машины (два Servers и один Desktop) с Bridge interfaces на первом сетевом интерфейсе. Стартуем и инсталируем Ubuntu. UserID - ubuntu, password - ubuntu. В процессе инсталяции выбираем инсталировать только OpenSSH server. Начнем настройку тестовой лаборатории с сервера.
Server
Login на сервер с UserID/password - ubuntu/ubuntu.
Набираем:
ifconfig
получаем IP NAT интерфейса. В моем случае 192.168.0.25.
Выключаем Server.
sudo halt -p
Активируем второй интерфейс для виртуальной машины как "Internal Network" в свойствах.
Так же добавляем еще один SATA диск фиксированным размером 1GB. Стартуем Server VM.
Mount a new partition. Включаем сервер, логинимся.
sudo nano /etc/network/interfaces
auto eth1 iface eth1 inet static address 10.10.0.1 netmask 255.255.255.0и сохраняем файл.
dmesg | grep eth lshw -C network ifconfig eth1 down ifconfig eth1 up
ifconfig
Должен нам показать два активных интерфейса.
Все делаем как здесь написано. Устанавливаем NGINIX, MySQL, PHP и phpmyadmin
Подключаем (монтируем) дополнительный раздел.
sudo fdisk -l sudo cp /etc/fstab /etc/fstab.old sudo fdisk /dev/sdb then type o press enter # creates a new table then type n press enter # creates a new partition then type p press enter # makes a primary partition. then type 1 press enter # creates it as the 1st partition finally type w #this will right any changes to disk. Okay now you have a partition, now you need a filesystem. sudo mkfs.ext4 /dev/sdb1 sudo fdisk -l sudo nano /etc/fstab #device mountpoint fstype options dump fsck /dev/sdb1 /home/ubuntu/backup ext4 defaults 0 0
reboot
Архивируем базы данных и папку с системными файлами. Создаем файл /home/ubuntu/backup.sh
nano /home/ubuntu/backup.sh
копируем в файл
#!/bin/bash #START DB_BACKUP="/home/ubuntu/backup" DB_USER="root" DB_PASSWD="password" #password to SQL FILE="/etc-files-`date +%Y-%m-%d-%H-%M-%S`.gz" # Remove backups older than 30 days find $DB_BACKUP -type f -mtime +30 -exec rm -rf {} \; # Backup each database on the system and sys files mysqldump -u $DB_USER -p$DB_PASSWD --all-databases > $DB_BACKUP"/`date +%Y-%m-%d-%H-%M-%S`.sql" tar -cpzf $DB_BACKUP/$FILE -C / etc/ #END
создаем правило для cron
sudo su
crontab -e
добавляем правило. Сохроняем crontab - Ctrl+X и Y
*/30 * * * * /bin/bash /home/ubuntu/backup.sh
и делаем файл исполняемым.
chmod +x /home/ubuntu/backup.sh
Сервер готов.
Router
*/30 * * * * /bin/bash /home/ubuntu/backup.sh