Последние записи.

Создание виртуальных машин только с консолью (без GUI/VNC)

virt-install \
--name <имя машины> \
--ram <объем памяти в Mb> \
--vcpus <кол-во процессоров> \
--location http://ftp.de.debian.org/debian/dists/squeeze/main/installer-amd64/ \
--os-type=linux --os-variant=debiansqueeze \
--disk /var/lib/libvirt/images/<имя машины>.img,size=<размер диска машины в Gb> \
--network bridge=br0,model=virtio \
--nographics --autostart \
--extra-args="console=tty0 console=ttyS0,115200n8"

Не требуется ISO файл, т.к. дистрибутив выкачивается непосредственно по сети. По этой причине в создаваемой машине не будет устройства CD-ROM.

После такой инсталляции, можно получить доступ к консоли гостевой машины

virsh console <имя машины>

Настройка SELinux для zabbix_agentd

Если Вам не хочется отключать SELinux и при этом сохранить работоспособность zabbix_agentd. Нужно выполнить следующее:

# yum install policycoreutils-python
# grep zabbix /var/log/audit/audit.log | audit2allow -m myzabbix > myzabbix.te
# checkmodule -M -m -o myzabbix.mod myzabbix.te
 checkmodule: loading policy configuration from myzabbix.te
 checkmodule: policy configuration loaded
 checkmodule: writing binary representation (version 10) to myzabbix.mod
# semodule_package -o myzabbix.pp -m myzabbix.mod
# semodule -i myzabbix.pp

Проверялось на CentOS 6

Установка glacier-cli

Хранение архивных копий является одной из задач, которые необходимо решать системному администратору.

Понятное дело, что архивные данные — это информация, доступ к которой необходим очень редко, но требует достаточно большое количество дискового пространства на долгий период времени измеряемый годами.

Amazon предлагает удобный и очень недорогой сервис Glacier, использование которого возможно посредством API.

В данной заметке я расскажу как быстро установить и начать использовать glacier-cli. Это инструмент для управления вашими архивами с помощью сервиса Amazon Glacier.

И так.)

Все действия производим с правами рута. Создаем каталог и скачиваем исходники с гитхаба.

# mkdir /opt/glacier
# cd /opt/glacier
# git clone -b glacier git://github.com/boto/boto.git
# git clone git://github.com/basak/glacier-cli.git
# ln -s ../boto/boto glacier-cli/boto

Для того чтобы утилита была доступна по команде glacier создаем симлинк.

# ln -s /opt/glacier/glacier-cli/glacier.py /usr/local/bin/glacier

Теперь заходим под непривилегированным пользователем и создаем конфиг ~/.boto


$ cat ~/.boto
[Credentials]
aws_access_key_id =
aws_secret_access_key =

Добавьте свои значения реквизитов доступа к Amazon Web Services.

Осталось только проверить, что мы все сделали правильно.

$ glacier job list
$ glacier vault list

P.S. Установка с помощью пакетов была бы правильней и красивей.

Конвертация сертификата SSL для IIS7

В своем блоге я стараюсь освещать преимущественно Open Source технологии администрирования и управления ИТ-инфраструктурой. Данная заметка является небольшим исключением из этого правила. И так, задача:
Необходимо сконвертировать имеющийся сертификат OpenSSL (который уже успешно используется nginx-ом) в формат .pfx и импортировать его в IIS.

1. Логинимся на сервер с сертификатом и переходим в каталог с сертификатом и закрытым ключом.

2. Запускаем команду
openssl pkcs12 -export -out example.com.pfx -inkey example.com.key -in example.com.crt -name example.com

Enter Export Password:
Verifying - Enter Export Password:

Пароли нужно оставить пустыми.

3. Получивший файл example.com.pfx загружаем на сервер с IIS

4. Заходим по RDP на сервер IIS

5. Запускаем Диспетчер служб IIS

6. Выбираем Начальная страница -> Просмотр возможностей

7. Двойной клик по «Сертификаты сервера»

8. В правой колонке жмем Импортировать

9. Выбрать файл сертификата, сгенерированный на шаге 2 и нажать ОК

RAID-1 с помощью hpacucli

OS: Ubuntu 12.04

Ниже показан пример создания массива RAID-1 из двух «свежедобавленных» дисков.

# setarch i686 —uname-2.6 hpacucli
HP Array Configuration Utility CLI 8.70-8.0
Detecting Controllers…Done.
Type «help» for a list of supported commands.
Type «exit» to close the console.

=> ctrl all show config

Smart Array P410i in Slot 0 (Embedded) (sn: 5001438009E15DB0)

array A (SAS, Unused Space: 0 MB)

logicaldrive 1 (465.7 GB, RAID 1, OK)

physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SAS, 500 GB, OK)
physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SAS, 500 GB, OK)
physicaldrive 2I:1:3 (port 2I:box 1:bay 3, SAS, 500 GB, OK, spare)

unassigned

physicaldrive 1I:1:5 (port 1I:box 1:bay 5, SAS, 1 TB, OK)
physicaldrive 2I:1:4 (port 2I:box 1:bay 4, SAS, 1 TB, OK)

SEP (Vendor ID PMCSIERA, Model SRC 8x6G) 250 (WWID: 5001438009E15DBF)

=> ctrl slot=0 create type=ld drives=1I:1:5,2I:1:4 raid=1

=> ctrl slot=0 show config

Smart Array P410i in Slot 0 (Embedded) (sn: 5001438009E15DB0)

array A (SAS, Unused Space: 0 MB)

logicaldrive 1 (465.7 GB, RAID 1, OK)

physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SAS, 500 GB, OK)
physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SAS, 500 GB, OK)
physicaldrive 2I:1:3 (port 2I:box 1:bay 3, SAS, 500 GB, OK, spare)

array B (SAS, Unused Space: 0 MB)

logicaldrive 2 (931.5 GB, RAID 1, OK)

physicaldrive 1I:1:5 (port 1I:box 1:bay 5, SAS, 1 TB, OK)
physicaldrive 2I:1:4 (port 2I:box 1:bay 4, SAS, 1 TB, OK)

SEP (Vendor ID PMCSIERA, Model SRC 8x6G) 250 (WWID: 5001438009E15DBF)

=> quit

Как разделить архив tar

Иногда требуется заархивировать много данных на носители ограниченного размера.
Эта задача решается достаточно просто двумя утилитами tar и split.
Например, если Вы хотите, чтобы Ваш архив хранился в файлах размером 700Мбайт, можно использовать следующую команду:

$tar -cvf - /dir/ | split --bytes=700m --suffix-length=4 --numeric-suffix - myarchive.tar.

Для «распаковки» используется команда:

$cat myarchive.tar.* | tar xvf -

Как установить hpacucli на Ubuntu 12.04 LTS

Кратко по шагам:

Скачиваем скрипт

wget http://downloads.linux.hp.com/SDR/downloads/bootstrap.sh

Делаем его исполняемым

chmod +x bootstrap.sh

Немного правим скрипт

sed -i ‘s/blofly.usa.hp.com/downloads.linux.hp.com/g’ bootstrap.sh

Запускаем

./bootstrap.sh -v -r stable ProLiantSupportPack

Скачиваем ключ для apt

wget http://downloads.linux.hp.com/SDR/downloads/ProLiantSupportPack/GPG-KEY-ProLiantSupportPack
apt-key add GPG-KEY-ProLiantSupportPack

Устанавливам hpacucli

apt-get update
apt-get install hpacucli

К сожалению данный софт HP не поддерживает ядро 3.X, поэтому нужно запускать так:

setarch i686 —uname-2.6 hpacucli controller all show config

Определяем IP и MAC не подходя к пользователю.

Этот простой скрипт может помочь в сборе данных о «живых» IP и mac.

Очень актуально для рабочих станций с разными операционными системами.

Идея заключается в создании странички на сервере приложений (например Apache), переходя на которую, пользователь видит нужные сетевые параметры.

Поэтому пользователю предлагается перейти по ссылке и отправить вывод системному администратору. Все!

Ниже представлен сам скрипт:

#!/usr/bin/perl -w

use strict;
$|++;
use CGI;
my $cgi = CGI->new;
my $ip = $ENV{‘REMOTE_ADDR’};
my $stringcmd = «grep $ip /proc/net/arp | awk {‘print «.’$4;’.»‘}»;
my $mac = `$stringcmd`;
print $cgi->header,
$cgi->start_html;
print «IP:».$cgi->pre($ip);
print «MAC:».$cgi->pre($mac);
print      $cgi->end_html;

Кластеризация и балансировка нагрузки Tomcat

Введение

Tomcat — является продвинутым и мощным контейнером сервлетов Java, способным выступать в роли сервера
приложений. В силу своей реализации Tomcat потребляет достаточно много ресурсов, поэтому не способен эффективно обслуживать большое количество пользователей.

Постановка задачи

Создать систему отвечающую следующим требованиям:

  • Эффективная обработка большого количества запросов (производительность)
  • Возможность увеличения производительности системы (масшабирование)
  • Минимальное время простоя системы при сбоях (отказоустойчивость)

Решение

Высокодоступный кластер, умеющий распределять нагрузку между вычислительными узлами обеспечивает выполнение требований производительности и отказоустойчивости.
Масштабирование реализуется дополнительными средствами которые выходят за рамки данной статьи.

Компоненты системы

Сервера приложений — представляют собой экземпляры контейнеров сервлетов Tomcat.
Балансер — служба занимающаяся распределением нагрузки между серверами приложений.

Используемые технологии

В качестве балансера используется сервер приложений Apache с установленным модулем mod_jk.
Это так называемый «коннектор» для экземпляра Tomcat, позволяющий взаимодействовать по протоколу AJPv13 (Apache JServ Protocol). Для обеспечения функции балансинга необходимо исправить конфигурационный файл Apache.

Для серверов приложений (Tomcat)требуется обычная правка конфигурационных файлов.

Step by step

Для запуска репликации сессий в контейнере Tomcat 6.0 необходимо выполнение следующих шагов:

  • Все атрибуты сессии должны выполняться java.io.Serializable
  • Раcкоментировать элемент Cluster в server.xml
  • Если определены клапаны кластера (cluster valves), необходимо убедиться, что ReplicationValve определена в секции Cluster файла конфигурации server.xml
  • Если экземпляры Tomcat запущены на одной машине, необходимо убедиться в уникальности атрибута tcpListenPort для каждого экземпляра. В большестве случаев Tomcat-у решает эту проблему самостоятельно обнаружением доступных портов в диапазоне 4000-4100
  • Файл web.xml должен иметь элемент <distributable/> или <Context distributable=»true» /> должен быть установлен.
  • Если используется mod_jk, необходимо удебиться что атрибут jvmRoute установлен в движке <Engine name=»Catalina» jvmRoute=»node01″ > и значение jvmRoute совпадает с именеь worker в файле workers.properties
  • Время на всех узлах должно быть синхронизировано через сервис NTP
  • Балансировщик настроен для работы в режиме sticky session

О версиях системы и пакетов

В качестве операционной системы на всех узлах кластера используется AltLinux 5.9.9 с подключенным репозитарием Sisyphus.

Tomcat имеет следующие характеристики:

Server version: Apache Tomcat/6.0.26
Server built:   March 9 2010 1805
Server number:  6.0.26.0
OS Name:        Linux
OS Version:     2.6.32-el-smp-alt9
Architecture:   amd64
JVM Version:    1.6.0_18-b07
JVM Vendor:     Sun Microsystems Inc.

Apache с модулем mod_jk:

Server version: Apache/2.2.16 (Unix)
Server built:   Sep 17 2010 02:16:15
Loaded Modules:
 core_module (static)
 mpm_worker_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 authz_host_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 include_module (shared)
 jk_module (shared)
 log_config_module (shared)
 logio_module (shared)
 mime_module (shared)
 negotiation_module (shared)

Конфигурационные файлы

/etc/httpd2/conf/httpd2.conf

##########################  jk settings ###################3

##  Load mod_jk module
# Update this path to match your modules location
##LoadModule    jk_module  libexec/mod_jk.so
# Declare the module for <IfModule directive> (remove this line on Apache 2.x)
##AddModule     mod_jk.c
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
JkWorkersFile /etc/httpd2/conf/workers.properties
# Where to put jk shared memory
# Update this path to match your local state directory or logs directory
JkShmFile     /var/log/httpd2/mod_jk.shm
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
JkLogFile     /var/log/httpd2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel   debug
# Select the timestamp log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 
## Send everything for context /examples to worker named worker1 (ajp13)
JkMountCopy On
JkMount  /share/* loadbalancer
JkMount  /share loadbalancer
JkMount  /alfresco/* loadbalancer
JkMount  /alfresco loadbalancer

JkMountCopy All

/etc/httpd2/conf/workers.properties

# Worker list
worker.list=loadbalancer
# Define Node1
worker.node1.port=8009
worker.node1.host=10.32.0.176
worker.node1.type=ajp13
worker.node1.lbfactor=1
#worker.node1.local_worker=1 (1)
worker.node1.cachesize=10
# Define Node2
worker.node2.port=8009
worker.node2.host=10.32.0.177
worker.node2.type=ajp13
worker.node2.lbfactor=1
#worker.node2.local_worker=1 (1)
worker.node2.cachesize=10
## Load-balancer
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=node1, node2
worker.loadbalancer.sticky_session=1
worker.loadbalancer.local_worker_only=1

В файле context.xml необходимо изменить строку

<Context distributable="true">

Файл server.xml:

Модифицируем тэг Engine следующим образом:

 <Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">

Секция Cluster:

      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->

      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
                <!--

                <Manager className="org.apache.catalina.ha.session.BackupManager" 
                        expireSessionsOnShutdown="false" 
                        notifyListenersOnReplication="true" 
                mapSendOptions="6"/>
                -->
                <Manager className="org.apache.catalina.ha.session.DeltaManager" 
                        expireSessionsOnShutdown="false" 
                notifyListenersOnReplication="true"/>

                <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                        <Membership className="org.apache.catalina.tribes.membership.McastService" 
                                address="228.0.0.4" 
                                port="45564" 
                                frequency="500" 
                        dropTime="3000"/>
                        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
                                address="auto" 
                                port="5000" 
                                selectorTimeout="100" 
                        maxThreads="6"/>
                        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                                <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
                        </Sender>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
                        <!--
                        <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
                        -->
                </Channel>

                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
                filter=""/>
                <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
                <!--
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
                filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
                -->
                <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 
                        tempDir="/tmp/war-temp/" 
                        deployDir="/tmp/war-deploy/" 
                        watchDir="/tmp/war-listen/" 
                watchEnabled="false"/>

                <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>

Ссылки

The Apache Tomcat Connector — Generic HowTo
LoadBalancer HowTo
http://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html

Load Balancing with Apache mod_jk (httpd/Tomcat)
http://www.wellho.net/mouth/1377_Load-Balancing-with-Apache-mod-jk-httpd-Tomcat-.html

Apache, Tomcat cluster, load balancing using mod_jk
http://www.kandysoftwareinc.com/tech-articles/apache-tomcat-cluster-load-balancing-using-mod_jk

Нет доступа к сканеру в Ubuntu

Проблема проявляется при использовании системы sane в Ubuntu 10.04

Выглядит это следующим образом:

test@user-desktop:~$ scanimage >1.pnm
scanimage: open of device hp2400:libusb:003:002 failed: Access to resource has been denied

test@user-desktop:~$ scanimage -T
scanimage: open of device hp2400:libusb:003:002 failed: Access to resource has been denied

Схожее по смыслу сообщение появлется проявляется при использовании xsane

И так приступим:

Добавляем нашего пользователя test в группу saned

sudo usermod -a -G saned test

Смотрим идентификаторы производителя и продукта для своего сканера командой:

sane-find-scanner

У меня получился такой вывод:

# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.

# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a kernel SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x03f0 [Hewlett-Packard], product=0x0a01 [hp scanjet scanner], chip=GL646_HP) at libusb:003:002
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend’s manpage.

# Not checking for parallel port scanners.

# Most Scanners connected to the parallel port or other proprietary ports
# can’t be detected by this program.

# You may want to run this program as root to find all devices. Once you
# found the scanner devices, be sure to adjust access permissions as
# necessary.

Нас интересуют значения vendor=0x03f0 product=0x0a01

Далее создаем файл /etc/udev/rules.d/45-scanner.rules

sudo vim /etc/udev/rules.d/45-scanner.rules

Со следующим содержанием:

SYSFS{idVendor}==»03f0«, SYSFS{idProduct}==»0a01«, MODE=»664″, GROUP=»saned»

Перезагружаем, должно работать.

 
Яндекс.Метрика