Глава 7. Службы Apache

В этой главе содержатся инструкции по настройке Red Hat Enterprise Linux AS для реализации Web-сервера Apache высокой степенью доступности.

Настройка службы Apache

В этом разделе рассматривается пример настройки отказоустойчивой кластерной службы Web-сервера Apache. Хотя значения параметров службы зависят от конкретной конфигурации, приведенный пример поможет вам настроить службу в вашем окружении.

Для настройки службы Apache вы должны настроить каждую кластерную систему в роли сервера Apache. Кластерное программное обеспечение гарантирует что в один момент времени Apache будет работать только в одной кластерной системе. Настройка сервера Apache включает в себя установке RPM-пакетов Apache в каждой кластерной системе и настройки общей файловой системы для размещения содержимого web-сайта.

Установив Apache в кластерных системах, отключите автоматический запуск службы Apache при загрузки системы, выполнив следующую команду: chkconfig --del httpd. Вместо системных сценариев загрузки, запускающих httpd, кластерное программное обеспечение запустит этот демон на действующем узле кластера, исполняющего службы Apache. Таким образом гарантируется, что соответствующий IP адрес и точка подключения файловой системы используется только одной кластерной системой.

При добавлении службы Apache, ей должен быть присвоен "плавающий" IP адрес. Кластерное программное обеспечение сопоставит этот IP адрес сетевому интерфейсу кластерной системы, в данный момент выполняющей службы Apache. Этот IP адреса, позволяет HTTP-клиентам не зависеть от конкретной кластерной системы, в которой работает Apache.

Файловые системы, в которых хранится Web-содержимое сервера, при загрузке кластерной системы не должны подключаться автоматически. Вместо этого, кластерное программное обеспечение самостоятельно подключает и отключает файловые системы при запуске и остановке в кластерных системах службы Apache. Это предотвращает одновременное обращение двух кластерных систем к одним и тем же данным, которое может привести к разрушению этих данных. Поэтому, ну описывайте такие файловые системы в файле /etc/fstab.

Настройка службы Apache состоит из следующих четырех этапов:

  1. Настройка для службы общей файловой системы. Эта файловая система используется для хранения содержимого web-узла.

  2. Установка программного обеспечения Apache в двух кластерных системах.

  3. Настройка программного обеспечения Apache в двух кластерных системах.

  4. Добавления службы в базу данных кластера.

Для создания общих файловых систем для службы Apache, от имени root выполните в одной кластерной системе следующие действия:

  1. На общем диске, с помощью интерактивной утилиты fdisk создайте раздел, который будет использоваться для корневого каталога документов Apache. Обратите внимание, вы можете создать несколько корневых каталогов документов на разных разделах диска. Обратитесь к разделу Разбиение дисков в главе 2 за дополнительной информацией.

  2. Воспользуйтесь командой mkfs для создания файловой системы ext2 на разделе, определенном вами на предыдущем этапе. Укажите букву диска и номер раздела. Например:

    mkfs /dev/sde3
  3. Подключите файловую систему, в которой будет находиться Web-содержимое корневого каталога документов Apache. Например:

    mount /dev/sde3 /var/www/html

    Не добавляйте информацию об этом подключении в файл /etc/fstab, так как только кластерное программное обеспечение может правильно подключить и отключить файловые системы, используемые службой.

  4. Скопируйте все требуемые файлы в корневой каталог документов.

  5. Если у вас также используются файлы CGI или файлы, которые должны располагаться в других каталогах или в разных разделах, повторите эти действия.

Apache должен быть установлен в каждой кластерной системе. Обратите внимание, чтобы перенос службы происходил корректно, основная конфигурация сервера Apache должна быть одинаковой во всех кластерных системах. В следующем примере показана базовая инсталляция Web-сервера Apache, без дополнительных модулей или оптимизации производительности. По вопросам установки модулей Apache, или оптимизации его производительности, обратитесь к документации Apache, размещенной в каталоге инсталляции Apache, или на Web-сайте Apache, http://httpd.apache.org/docs-project/.

В каждой кластерной системе установите RPM-пакеты сервера Apache. Например:

rpm -Uvh apache-1.3.20-16.i386.rpm

Для настройки кластерных систем в качестве серверов Apache, измените файл конфигурации httpd.conf, и создайте сценарий для запуска и остановки службы Apache. Затем, скопируйте эти файлы в обе кластерные системы. Эти файлы в каждой кластерной системе должны быть идентичны, чтобы служба Apache переносилась правильно.

В одной системе, выполните следующие действия:

  1. Отредактируйте файл /etc/httpd/conf/httpd.conf конфигурации Apache в соответствии с вашей конфигурацией. Например:

    • Укажите каталог, содержащий HTML-файлы. Вы укажете эту точку подключения при добавлении службы Apache в базу данных кластера. Вы должны изменить этот каталог, если точка подключения содержимого вашего web-сайта отличается от принятой по умолчанию /var/www/html. Например:

      DocumentRoot "/mnt/apacheservice/html"
    • Если каталог сценариев CGI располагается не в стандартном каталоге, укажите каталог, содержащий эти сценарии. Например:

      ScriptAlias /cgi-bin/ "/mnt/apacheservice/cgi-bin/"
    • Укажите путь, использованный на предыдущем этапе и установить разрешения по умолчанию на доступ к этому каталогу. Например:

      <Directory mnt/apacheservice/cgi-bin">                  
      AllowOverride None
      Options None 
      Order allow,deny 
      Allow from all 
      </Directory>

      Возможно также потребуется внести дополнительные изменения, для тонкой настройки Apache или добавления дополнительных модулей. За информацией о других параметрах настройки, обратитесь к документации проекта Apache на Web-сайте: http://httpd.apache.org/docs-project/.

  2. Стандартный сценарий запуска Apache, /etc/rc.d/init.d/httpd также будет использоваться в схеме кластера для запуска и остановки сервера Apache на работающем узле кластера. Поэтому, настраивая службу, укажите имя этого файла в качестве параметра User script (Сценарий пользователя).

    ЗамечаниеЗамечание
     

    В зависимости от версии Apache, стандартный сценарий службы /etc/rc.d/init.d/httpd может некорректно возвращать состояние httpd демонов в ответ на команду service httpd status. В таком случае наблюдение за этой службой не будет работать в кластере (если вы укажете интервал наблюдения при настройке службы). Обработка параметра status в этом сценарии может выглядеть следующим образом:

      status)
            status $httpd
            ;;

    В этом случае, чтобы наблюдение за работой Apache велось правильно, добавьте следующие строки в обработку параметра status:

      status)
            status $httpd
            RETVAL=$?
            ;;

Перед добавлением службы Apache в базу данных кластера, убедитесь в том, что каталоги Apache не подключены. Затем, в одной кластерной системе добавьте службу. Укажите IP адрес, который программ кластера привяжет к сетевому интерфейсу в кластерной системе, выполняющей службу Apache.

Ниже приведен пример использования утилиты cluadmin для добавления службы Apache.

cluadmin> service add apache

  The user interface will prompt you for information about the service.
  Not all information is required for all services.

  Enter a question mark (?) at a prompt to obtain help.

  Enter a colon (:) and a single-character command at a prompt to do
  one of the following:

  c - Cancel and return to the top-level cluadmin command
  r - Restart to the initial prompt while keeping previous responses
  p - Proceed with the next prompt
                                       
Preferred member [None]: devel0
Relocate when the preferred member joins the cluster (yes/no/?) \
	[no]: yes
User script (e.g., /usr/foo/script or None) [None]: \
	/etc/rc.d/init.d/httpd

Do you want to add an IP address to the service (yes/no/?): yes

        IP Address Information   

IP address: 10.1.16.150
Netmask (e.g. 255.255.255.0 or None) [None]: 255.255.255.0
Broadcast (e.g. X.Y.Z.255 or None) [None]: 10.1.16.255

Do you want to (a)dd, (m)odify, (d)elete or (s)how an IP address,
 or are you (f)inished adding IP addresses: f

Do you want to add a disk device to the service (yes/no/?): yes

        Disk Device Information

Device special file (e.g., /dev/sda1): /dev/sdb3
Filesystem type (e.g., ext2, reiserfs, ext3 or None): ext3
Mount point (e.g., /usr/mnt/service1 or None) [None]: /var/www/html
Mount options (e.g., rw, nosuid): rw
Forced unmount support (yes/no/?) [no]: yes

Do you want to (a)dd, (m)odify, (d)elete or (s)how devices, 
  or are you (f)inished adding device information: f

Disable service (yes/no/?) [no]: no

name: apache 
disabled: no 
preferred node: devel0
relocate: yes 
user script: /etc/rc.d/init/httpd 
IP address 0: 10.1.16.150 
 netmask 0: 255.255.255.0 
 broadcast 0: 10.1.16.255 
device 0: /dev/sdb3
 mount point, device 0: /var/www/html
 mount fstype, device 0: ext3
 mount options, device 0: rw,sync 
 force unmount, device 0: yes 
 owner, device 0: nobody 
 group, device 0: nobody 
Add apache service as shown? (yes/no/?) y

Added apache.                              
cluadmin>

ЗамечаниеЗамечание
 

Утилита с графическим интерфейсом Red Hat Cluster Manager не может быть использована в кластерах, где настроены службы Apache высокой степени доступности. Дополнительную информацию вы можете получить в Главе 9.