a.- Mysql Backup - XtraBackup de Percona
Presentamos una manera fácil de realizar copias de seguridad cada noche de base de datos. Esta técnica es segura tanto para InnoDB y MyISAM, aunque es un completamente fluida sólo si está utilizando tablas InnoDB.
Agradecer a Rails Machine Wiki y a los foros de drupal de rendimiento y estabilidad que son la base de éste artículo.
NightlyDatabaseBackupsWithXtrabackup
Nos basaremos en la herramienta XtraBackup. Se puede descartar el XtraBackup de la siguiente URL :
En primer lugar, tendrás que instalar XtraBackup de Percona.
Ahora usted puede crear sellos de tiempo comprimidos de su BD. Sería una medida paralela recomendable junto con Live Backups ya promocionada en la arquitectura Brqx. Veamos el formato :
innobackupex --user=root \
--password=sekrit \
--stream=tar ./| \
gzip - > backup. `date +% m% d% Y% H% M% S`. tar.gz
Si su contraseña de root está en blanco, omitir la opción de contraseña.
Si usas Ubuntu u otro sistema donde la configuración de MySQL no se encuentra en/etc/my.cnf, entonces usted tendrá que especificar la ruta de acceso al archivo por defecto, indicándolo en la opción: - defaults-file =/etc/mysql/my.cnf
Tenga en cuenta que esto desencadena un momentáneo bloqueo de lectura global (read lock) para capturar una posición coherente registro binario para la copia de seguridad, necesarias para restaurar los datos de forma consistente si usted está utilizando tablas MyISAM.
Si está utilizando exclusivamente las tablas InnoDB, puede incluir opción de no bloqueo : --no-lock para innobackupex de una verdadera copia de seguridad viva (exacta).
Si en algún momento necesita restaurar una copia de seguridad, pare MySQL, mueva el actual directorio a una carpeta temporal y descomprimima el archivo tar en su lugar. Veamos los pasos.
service mysql stop
mv /var/lib/mysql/ var/lib/mysql.old
mkdir /var/lib/mysql
mv /ruta/a/backup.tar.gz/ var/lib/mysql
cd /var/lib/mysql
tar xzfi backup.tar.gz
innobackupex - aplicar-log
chown-R mysql.mysql/var/lib/mysql
service mysql start
Tenga en cuenta que debe incluir la opción i para el tar!
Si su objetivo es tener un respaldo ininterrumpido con tablas MyISAM, debe utilizar una base de datos de configuración maestro-esclavo y el uso de la técnica anterior en el sistema esclavo.
La ventaja de Xtra de copia de seguridad sobre el uso de mysqldump es la velocidad de restauración del directorio de datos de MySQL.
Estrategia hace que la restauración mucho más ágil que con un volcado SQL, y mucho más simple para configuraciones maestro-esclavo.
b. Configuración de las fuentes de APT
Vamos a indicar las sentencias que se deben lanzar para configurar adecuádamente apt-get y apt-cache. Para otras distribuciones de linux se usaria zypper u otros.
echo 'APT::Install-Recommends "0"; "| tee sudo /etc/apt/apt.conf
sudo wget http://pantheon-storage.chapterthree.com/mercury.list-O /etc/apt/sources.list.d/mercury.list
sudo wget http://pantheon-storage.chapterthree.com/aws.list-O /etc/apt/sources.list.d/aws.list
sudo wget http://pantheon-storage.chapterthree.com/php-O /etc/apt/preferences.d/php
wget-O http://pantheon-storage.chapterthree.com/gpgkeys.txt/tmp/keys.txt
sudo apt-key add /tmp/keys.txt
sudo apt-get update; sudo apt-get upgrade-y, sudo apt-get-y dist-upgrade
Se le puede pedir para configurar grub-pc (AWS solamente) - salir de la línea en blanco. A continuación, se le preguntará si puedes "Continuar sin necesidad de instalar GRUB".
Diga "Yes".
c. Instalar y configurar BCFG2
sudo apt-get-y bcfg2 instalar bzr-servidor gamin python-gamin python-Genshi
sudo bcfg2 admin-init
# Presione enter para aceptar el valor predeterminado de "la tienda de configuración en bcfg2 [/ etc/bcfg2.conf]:"
# Presione enter para aceptar el valor predeterminado para la "Ubicación de bcfg2 repositorio [/ var/lib/bcfg2]:"
Ingrese "y" aquí:
# Directorio / var/lib/bcfg2 existe. Sobreescribir? [s / N]:
# Pulse Intro para aceptar por defecto para "Entrada contraseña utilizada para la verificación de la comunicación (sin eco; dejar en blanco para una al azar):"
# Presione enter para aceptar el valor predeterminado para "¿Cuál es el nombre del servidor: [su servidor AWS] por defecto:"
# Presione enter para aceptar el valor predeterminado para "la ubicación del servidor de entrada [su servidor AWS] por defecto:"
introducir "5" aquí:
# Ingrese el número correspondiente a su sistema operativo base
# Entrada de la base del sistema operativo para los clientes:
# 1: Red Hat / Fedora / RHEL / ARS / Centos
# 2: SUSE / SLES # 3: Mandrake
# 4: Debian
# 5: Ubuntu
# 6: Gentoo
# 7: FreeBSD
Ingrese "y" aquí:
# Advertencia: / etc/bcfg2.conf ya existe. Sobreescribir? [s / N]: # sistema genera una clave privada
# Generar una resolución de 1024 bits de clave privada RSA
# ....++++++
# ...........++++++
# Escrito duplicado de la llave privada a '/ etc/bcfg2.key'
# -----
Firma # ok
# Subject
# Obtener la clave privada
# UAB creado con exito en / var/lib/bcfg2
sudo rm-rf / var/lib/bcfg2 /
sudo bzr lp rama: pantheon/1.1 / var/lib/bcfg2
sudo sed-i "s / ^ .* $ = plugins / plugins = Bundler, CFG, los metadatos, los bultos, las puntas de prueba, normas, TGenshi nfilemonitor \ = gamin /" / etc/bcfg2.conf
d. Inicio del servidor BCFG2
Espere hasta que el bcfg2-servidor empiece a girar - sabrá que el servidor está listo cuando vea "serve_forever ()] [start".
sudo / etc/init.d/bcfg2-server principio; tail-f / var / log / syslog
e. Inicio del cliente BCFG2
sudo bcfg2-admin XCMD Packages.Refresh # Para servidores que no son AWS, reemplace el texto siguiente con sudo-bcfg2 vqed sudo-bcfg2 vqed-p 'mercury aws'
# Para servidores que no son AWS, reemplace el texto siguiente con sudo-bcfg2 vqed
sudo-bcfg2 vqed-p 'mercury aws'
f.-Instalar Drush
wget http://ftp.drupal.org/files/projects/drush-All-versions-3.0.tar.gz
tar xvzf drush-All-versions-3.0.tar.gz
sudo chmod 555 drush/drush
sudo chown -R root:root drush
sudo mv drush /usr/local/
sudo ln -s /usr/local/drush/drush /usr/local/bin/drush
sudo drush dl drush_make
g. Instalar Mercury
sudo rm-rf /var/www
sudo lp rama bzr: PRESSFLOW/var/www
sudo mkdir/var/www/profiles/mercury
sudo wget -P /var/www/profiles/mercury http://pantheon-storage.chapterthree.com/mercury.profile
sudo drush dl -target=/var/www/sites/all/modules/barniz
sudo drush dl -target=/var/www/sites/all/apachesolr modules
sudo drush dl -target =/var/www/sites/all/modules memcache-6.x-1.5-rc1
sudo wget -P /var/www/profiles/mercury http://pantheon-storage.chapterthree.com/mercury.profile
sudo drush dl -target=/var/www/sites/all/modules/barniz
sudo drush dl -target=/var/www/sites/all/apachesolr modules
sudo drush dl -target=/var/www/sites/all/modules memcache-6.x-1.5-rc1
h. Instalar Apache Solr
wget http://apache.osuosl.org/lucene/solr/1.4.0/apache-solr-1.4.0.tgz
tar xvzf apache-SOLR-1.4.0.tgz
apache-solr-1.4.0/example/solr sudo mv/var/
apache-solr-1.4.0/dist/apache-solr-1.4.0.war sudo mv/var/SOLR/solr.war
sudo chown-R tomcat6: root/var/SOLR/
sudo svn checkout-r22 http://solr-php-client.googlecode.com/svn/trunk//var/www/sites/all/modules/apachesolr/SolrPhpClient
sudo mv/var/www/sites/all/modules/apachesolr/schema.xml/var/SOLR/conf/
sudo mv/var/www/sites/all/modules/apachesolr/solrconfig.xml/var/SOLR/conf/
i.Preparar los archivos y directorios PRESSFLOW
sudo mkdir/var/www/sites/default/archivos
sudo cp/var/www/sites/default/default.settings.php/var/www/sites/default/settings.php
sudo chown raíz-R: Los datos de www-/var/www/*
sudo chmod 664/var/www/sites/default/settings.php
j. Ejecute el archivo/etc/mercury/init.sh
Este es el punto donde tenemos que la AMIS./Etc/mercury/init.sh está diseñado para ejecutarse en el arranque y la primera:
a) mysql instalación, tomcat y barniz para usar/mnt para ahorrar espacio en/(que está a sólo 10 GB en una pequeña EC2 ejemplo).
b) configurar postfix con un nombre de host utilizables y comprobar (y descargar) actualizaciones de mercurio y PRESSFLOW (y aplicar las actualizaciones de mercurio a través de BCFG2).
c) configurar APC, barnices, Tomcat y el uso de memoria basado en PHP en la memoria del sistema que utiliza el archivo/etc/mercury/script config_mem.sh
d) enviar un hash único, pero que no identifica a nosotros para que podamos tener una idea de cuántos usuarios existen Mercurio.
Si opta por no reiniciar el sistema, simplemente escriba:
sudo/etc/mercury/init.sh
Un archivo se coloca en/etc/mercury/bootlog
k. Configurar PRESSFLOW
a) Ir a su sitio en tu navegador web
b) Elegir el perfil de Mercury (Esta configuración de los módulos correspondientes y los ajustes.)
c) nombre de base de datos = "PRESSFLOW"
d) nombre de usuario Datebase = "root" (sin contraseña con todo - lo ponemos a continuación)
Después de PRESSFLOW se configura:
e) establecer la contraseña de root de mysql y crear una cuenta sin privilegios (cambiar new_user new_password y en los valores adecuados):
# Sesión para MySQL como root
mysql -u root
# Establezca la contraseña de root de usuario
Mysql> establecer una contraseña para root @ localhost = PASSWORD ('new_password');
# Crear un nuevo usuario y asigne una contraseña
Mysql> crear usuario new_user '@' localhost 'identificados por' new_password;
# Establezca privilegios para el nuevo usuario
Mysql> GRANT ALL ON PRESSFLOW .* para new_user @ localhost identificados por 'new_password;
mysql flush privileges>;
mysql> \ q
f) actualizar su PRESSFLOW instalar con la información de la cuenta nueva mysql editando
/var/www/PRESSFLOW/sites/default/settings.php (de nuevo utilizando el new_user y valores apropiados new_password):
nano -w /var/www/sites/default/settings.php
y el cambio:
db_url $ = 'mysqli://usuario: contraseña @ localhost/DatabaseName';
sobre lo que ha configurado para el nuevo usuario de arriba. Asegúrese de editar el 'mysqli:' y no 'mysql: «porción.
db_url $ = 'mysqli://new_user: new_password @ localhost/PRESSFLOW;
g) cambiar los permisos en/var/www/PRESSFLOW/sites/default/settings.php para no tener permisos de escritura
chmod 755/var/www/sites/default/settings.php
h) cambiar los permisos de sites/default a no tener permiso de escritura
chmod 755/var/www/sites/default/
Es la hora de llenar de contenidos el servidor. Mucha suerte.
Gracias Gregg. Brqx.
l.Tuning Mercury
Indicamos a continuación una serie de parámetros que se debe considerar estudiar en razón de los recursos del sistema donde se desea implantar Mercury 1.1.
Esta información tiene su base en el siguiente archivo de Mercury : /etc/mercury/server_tuneables.
Indicamos una tupla de 4 valores en razón de la memoria de la que se disponga ( >512MB , >1024MB , > 2048MB , > 4096MB , > 8192MB , falta indicar > 16GB)
#/etc/apache2/apache2.conf
APACHE_MAXCLIENTS (10 , 18 , 37 , 75 , 150)
#/etc/default/tomcat6
TOMCAT_MEMORY (64 , 128 , 256 , 512 , 1024 )
#/etc/default/varnish
VARNISH_MEMORY (32 , 128 , 256 , 512 , 1024 )
#/etc/memcached.conf
MEMCACHED_MEMORY (32 , 128 , 256 , 512 , 1024 )
#/etc/mysql/my.cnf
INNODB_BUFFER_POOL_SIZE (128 , 256 , 512 , 1024 , 2048 )
KEY_BUFFER_SIZE (4 , 8 , 16 , 32)
MYSQL_MAX_CONNECTIONS (15 , 23 , 42 , 80 , 155)
#/etc/php5/apache2/php.ini
PHP_MEMORY (128 , 256 , 512,...)
#/etc/php5/conf.d/apc.ini
APC_MEMORY (64 , 96 , 128, ... )
#/etc/tomcat6/server.xml
TOMCAT_MAX_THREADS (50 , 100 , 200, ... )
Los siguientes parámetros ya no dependen de la memoria que disponga el sistema.
#/etc/apparmor.d/usr.sbin.mysqld
APPARMOR_MYSQLD /mnt/mysql/** rwkl,
#/etc/mysql/my.cnf
INNODB_LOG_FILE_SIZE 1073741824
#/etc/varnish/default.vcl
VARNISH_VCL_ERROR (en blanco)
VARNISH_VCL_FETCH (en blanco)
VARNISH_VCL_HASH (en blanco)
VARNISH_VCL_RECV (en blanco)
l.Probando Mercury. Apache Bench , Funkload y JMeter
Vamos a reflejar en esta sección los resultados y la forma de comprobar el rendimiento y estabilidad de nuestro Servidor Mercury.
De momento mantenemos las órdenes y resultados obtenidos del foro de Drupal. Pero en un futuro lo actualizaremos con resutados reales de nuestros servidores.
En el abanico de pruebas a realizar se pueden considerar herramientas de servidor y herramientas más realistas que simulan virtuales clientes.
Entre las primeras, la propia suite de Apache incorpora Apache Bench (ab ) que permite lanzar una carga directa contra el sistema eliminando factores intermedios.
Esta carga no es real, pues las aplicaciones que interactuan contra nuestro servidor tienen factores objetivos que delimitan esos accesos. Es por ello que se recomienda usar herramientas como JMeter o Funkload.
Dejemos por el momento ejemplos del foro que ya actualizaremos.
Lanzamos ab de 200 peticiones con una concurrencia de 40 hilos.
ab -n200 -c40 http://www.postpeakliving.com/
min mean[+/-sd] median max 458 1094 206.3 1163 1640 Indicaremos estos valores.
ab -n500 -c100 http://www.postpeakliving.com/
MEMCACHED_MEMORY (32 , 128 , 256 , 512 , 1024 )
#/etc/mysql/my.cnf
INNODB_BUFFER_POOL_SIZE (128 , 256 , 512 , 1024 , 2048 )
KEY_BUFFER_SIZE (4 , 8 , 16 , 32)
MYSQL_MAX_CONNECTIONS (15 , 23 , 42 , 80 , 155)
#/etc/php5/apache2/php.ini
PHP_MEMORY (128 , 256 , 512,...)
#/etc/php5/conf.d/apc.ini
k. Despliegue multiservidor
Proponemos a continuación una estructura multiservidor proporcionada por un colaborador del foro de Drupal. Se indica que está sirviendo 15 millones de páginas por mes.
Tres servidores Web con Varnish gestionados con un balanceador Round Robin. : Máquina A , Máquina B y Máquina C.
Do máquinas con instancias Memcached : Máquina D y Máquina E
Y otra máquina con Mysql y enlaces NFS : Máquinas F y G
Todas las máquinas funcionan con hardware similar (2,5 GHz Intel Dual Quadcores con 8.16 GB de RAM). Usamos PRESSFLOW 5 con APC y Cloudfront Amazonas como CDN con el fin de reducir la carga de contenido estático (principalmente archivos JPG, MP3), así como para reducir la latencia para los usuarios de todo el mundo. Las sesiones se realiza a través de memcache. / Archivos se sirve a través de NFS de F Machine (máquina DB) a través de los servidores web 3 (A, B, C). Código actualizaciones se replican a través de SVN y rsync.
Hasta ahora, el sistema sirve bien alrededor de 15 millones. páginas vistas por mes.
Indico las dudas que mantienen los responsables de esta estructura
¿Tendría sentido tener 3 servidores Web idéntica ejecutando httpd y barniz, tanto en la misma máquina y el equilibrio de carga usando DNS Round Robin?
¿Se imagina una estructura diferente, más escalable y tolerante a fallas con este tipo de hardware?
MAX_CONNECTIONS (15 , 23 , 42 , 80 , 155)
l. Perfil de instalación para Mercury
Indicamos a continuación la configuración de un perfil que instale los componentes de Mercury en Drupal. Esta parte falta probarla, pero lo dejamos como reseña.
core = "6.x"
projects[pressflow][type] = "core"
projects[pressflow][download][type] = "get"
projects[pressflow][download][url] = "http://launchpad.net/pressflow/6.x/6.16.77/+download/pressflow-6.16.77.tar.gz"
projects[mercury][type] = "profile"
projects[mercury][download][type] = "bzr"
projects[mercury][download][url] = "lp:pantheon/1.1/Cfg/var/www/profiles/mercury"
projects[apachesolr][type] = "module"
projects[memcache][type] = "module"
projects[memcache][version] = "1.4"
projects[varnish][type] = "module"
m. Configuración de un site con memcached
Indicamos a continuación la configuración por defecto de un site usando Memcached y la engine Mercury. Sería la configuración por defecto del setting.php de Drupal.
$db_url = 'mysqli://pressflow:fbrqx@localhost/pressflow';
$db_prefix = '';
$update_free_access = FALSE;
ini_set('arg_separator.output', '&');
ini_set('magic_quotes_runtime', 0);
ini_set('magic_quotes_sybase', 0);
ini_set('session.cache_expire', 200000);
ini_set('session.cache_limiter', 'none');
ini_set('session.cookie_lifetime', 2000000);
ini_set('session.gc_maxlifetime', 200000);
ini_set('session.save_handler', 'user');
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid', 0);
ini_set('url_rewriter.tags', '');
$GLOBALS['simpletest_installed'] = TRUE;
if (preg_match("/^simpletest\d+$/", $_SERVER['HTTP_USER_AGENT'])) {
$db_prefix = $_SERVER['HTTP_USER_AGENT']; }
$conf['reverse_proxy'] = TRUE;
$conf['reverse_proxy_addresses'] = array('127.0.0.1');
$conf['cache_inc'] = './sites/all/modules/memcache/memcache.inc';
$conf['memcache_servers'] = array(
'127.0.0.1:11211' => 'default',
'127.0.0.1:11212' => 'menu',
'127.0.0.1:11213' => 'filter',
'127.0.0.1:11214' => 'form',
'127.0.0.1:11215' => 'block',
'127.0.0.1:11216' => 'update',
'127.0.0.1:11217' => 'views',
'127.0.0.1:11218' => 'content',
'127.0.0.1:11219' => 'apachesolr', );
$conf['memcache_bins'] = array(
'cache' => 'default',
'cache_menu' => 'menu',
'cache_filter' => 'filter',
'cache_form' => 'form',
'cache_block' => 'block',
'cache_update' => 'update',
'cache_views_data' => 'views',
);
'cache_apachesolr' => 'apachesolr',
'cache_content' => 'content',
'cache_views' => 'views',
a.- Planificación y Análisis
Planificar la arquitectura
Analizar las categorias
Analizar los Tipos de datos necesarios
Analizar la navegación
b.- Preparación del sistema
Analizar servidores y nombres de dominio
Reservar nombre de dominio y preparar servidor de desarrollo
Preparar roles y usuarios
Preparar opciones de contacto
c.- Comienzo del desarrollo
Implementar tipos de datos definidos
Implementar categorias definidas
Enlazar tipos de datos con categorias
Ajustar visualización de los tipos
d.- Intervención del usuario o cliente
Entrada y salida al sistema
Familiarización con conceptos de entidades y categorias
Creación de tipos y categorias de ejemplo ( perdiéndo el miedo )
Colaboración en composición de tipos y categorías
e.- Planning gráfico
Creación e implementación de logos e iconos
Adaptación de plantillas a los tipos definidos
Adaptación de las vistas a los tipos definidos
Propuesta continua de menús y vistas al cliente y viceversa
f.- Remate Documental
Preparación de contenidos ( o bien creando o bien editando ) con finalidad de que sean ya válidos en el portal
Análisis de posibles nuevas vistas y menús en razón de los contenidos introducidos.
Recomendaciones y estudio mutuo de necesidades y carencias. Estudio de viabilidad de requisitos.
g.- Despliegue del portal
Despliegue del entorno de testing al entorno de produccion especifico para el portal
Duplicidad N2 N2 del portal y definición de etapas de clonación
Ajuste Control Brqx ( Portal de Control y Servidores de desarollo)
Generación de Backups B y C1 y definición de políticas de backup (Live Backups )
a.- Horizonte Ayuda Brqx
Presentamos nuestro recetario. Donde indicamos para nosotros y para cualquier colaborador la forma en la que se debe proceder para crear contenidos en nuestros portales.
Deseamos su colaboración. Como ha podido ver, intentamos luchar por un ideal de Calidad. Éste ideal es totalmente opuesto a prácticas publicitarias. No verá nunca ningún anuncio en nuestros portales.
Ese mismo ideal primará la CALIDAD a la CANTIDAD siempre. El objetivo es ver un reflejo de una buena organización en cualquier proyecto que nos involucre.
Si desea colaborar, debe conocernos. Empápese de nuestras págiinas y de las consecuentes recetas que se incluirán en este modelo que está leyendo.
Una vez nos haya conocido, si desea intervenir en el proyecto y seguir haciendo leyenda de "Brqx", puede contactar (eliminando _sin_spam_ ) en contacto_sinspam_@jrcolecciones.com.
Si desea opinar y ayudarnos en otros temas , también tenemos disponible : colaboracion_y_opiniones_sin_spam_@brqx.es
Un saludo y muchas gracias por leernos.