Proporcionar unas recetas a disposición de quién desee contribuir en el universo Brqx.

G1

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 :

Xbackup de Percona

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.

G2

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".

G3

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

G4

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

G5

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'

G6

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

G7

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

G8

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/

G9

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

G10

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

G11

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.

G12

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)

G13

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

G14

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)

G15

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"

G16

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',

G1

a.- Planificación y Análisis

Planificar la arquitectura

Analizar las categorias

Analizar los Tipos de datos necesarios

Analizar la navegación

G2

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

G3

c.- Comienzo del desarrollo

Implementar tipos de datos definidos

Implementar categorias definidas

Enlazar tipos de datos con categorias

Ajustar visualización de los tipos

G4

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

G5

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

G6

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.

G7

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 )

G1

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.

Distribuir contenido