Наш wiki-портал переехал на новый движок и доступен по адресу http://wiki.astralinux.ru

Эта версия портала обновляться больше не будет.

Cluster

Материал из AstraLinux Wiki
Перейти к: навигация, поиск

Отказоустойчивый Apache-сервер

В данном руководстве содержится описание действий по созданию отказоустойчивого Apache-сервера на базе кластера, состоящего из двух машин. В качестве операционной системы используется Astra Linux 1.5. Имя первого сервера — msk-astra-1.dev.local , имя второго — msk-astra-2.dev.local. Оба сервера должны «видеть» друг друга по имени (должен быть настроен DNS или быть соответствующие записи в файлах /etc/hosts). Так же на обоих серверах должен быть установлен пакет apache2. Настройка состоит из 4 этапов:

1. Настройка сети.
2. Установка и настройка Pacemaker и Corosync.
3. Настройка Apache с авторизацией (на примере PAM-авторизации)
4. Настройка ресурсов для обеспечения отказоустойчивости Apache-сервера.

1. Настройка сети.

Настройка сетевых интерфейсов (/etc/network/interfaces):
Первый сервер:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.4.202.105
netmask 255.255.255.0
gateway 10.4.202.1

Второй сервер:
auto lo
<code> iface lo inet loopback


auto eth0
iface eth0 inet static
address 10.4.202.106
netmask 255.255.255.0
gateway 10.4.202.1

Выполнить перезагрузку сетевых сервисов:

/etc/init.d/networking restart

2. Установка и настройка Pacemaker и Corosync.

На обоих серверах устанавливаем необходимый пакет:
aptitude install pacemaker

На обоих серверах разрешаем автозапуск corosync - в конфигурационном файле /etc/default/corosync, ставим параметр:

START=yes

На первом сервере создаем ключи и меняем на них права:

corosync-keygen
chown root:root /etc/corosync/authkey
chmod 400 /etc/corosync/authkey

Копируем ключ на второй сервер:

scp /etc/corosync/authkey root@msk-astra-2:/etc/corosync/authkey

Приводим конфигурационный файл /etc/corosync/corosync.conf на обоих серверах к следующему виду:

totem {
version: 2

# How long before declaring a token lost (ms)
token: 3000

# How many token retransmits before forming a new configuration
token_retransmits_before_loss_const: 10

# How long to wait for join messages in the membership protocol (ms)
join: 60

# How long to wait for consensus to be achieved before starting a new round of membership configuration (ms)
consensus: 3600

# Turn off the virtual synchrony filter
vsftype: none

# Number of messages that may be sent by one processor on receipt of the token
max_messages: 20

# Limit generated nodeids to 31-bits (positive signed integers)
clear_node_high_bit: yes

# Disable encryption
secauth: off

# How many threads to use for encryption/decryption
threads: 0

# Optionally assign a fixed node id (integer)
# nodeid: 1234

# This specifies the mode of redundant ring, which may be none, active, or passive.
rrp_mode: active
transport: udpu

interface {
member {
memberaddr: 10.4.202.105
}

member {
memberaddr: 10.4.202.106
}

ringnumber: 0
bindnetaddr: 10.4.202.0
mcastport: 5405
ttl: 1
}
}

amf {
mode: disabled
}

service {
# Load the Pacemaker Cluster Resource Manager
ver: 0
name: pacemaker
}

aisexec {
user: root
group: root
}

logging {
syslog_priority: warning

fileline: off
to_stderr: no
to_logfile: yes
logfile: /var/log/corosync/corosync.log
logfile_priority: notice

to_syslog: no
syslog_facility: daemon
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
tags: enter|leave|trace1|trace2|trace3|trace4|trace6
}
}

На обоих серверах стартуем сервис corosync и проверяем его статус:

/etc/init.d/corosync start
crm status

Результат проверки статуса кластера будет примерно таким:

============
Last updated: Thu Jun 16 10:21:43 2016
Last change: Wed Jun 8 12:56:36 2016 via cibadmin on astra14-2
Stack: openais
Current DC: msk-astra-1 - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
0 Resources configured.
============

Online: [ msk-astra-1 msk-astra-2 ]

Выставляем базовые настройки для кластера (учитываем, что у нас кластер состоит из двух нод):

crm configure property stonith-enabled="false"
crm configure property symmetric-cluster="false"
crm configure rsc_defaults resource-stickiness="110"
crm configure rsc_defaults migration-threshold=3
crm configure property no-quorum-policy=ignore

3. Настройка Apache с авторизацией (на примере PAM-авторизации)

Перед настройкой ресурсов кластера на обоих серверах убираем из автозагрузки скрипт старта apache, который в дальнейшем будут контролироваться corosync’ом:

update-rc.d -f apache2 remove

Веб-сервер Apache2 в ОС Astra Linux Special Edition работает только с принудительной аутентификацией. В нашем примере мы используем PAM авторизацию. Доя ее настройки следует выполнить следующие шаги:

Установить необходимый пакет

aptitude install apache2 libapache2-mod-auth-pam

Создаем (или правим) конфигурацию виртуального хоста с указанием типа авторизации (файл /etc/apache2/sites-available/default):

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName msk-astra-3
DocumentRoot /var/www/
<Directory /var/www/>
AuthPAM_Enabled on
AuthType Basic
AuthName "PAM authentication"
require valid-user
Options Indexes FollowSymLinks MultiViews
AllowOverride None
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel debug
CustomLog /var/log/apache2/access.log common
</VirtualHost>

В нашем примере, директория /var/www на обоих серверах содержат одни и те-же файлы для выдачи сервером apache. Включаем модуль pam и активируем сайт:

a2enmod auth_pam
a2ensite default
service apache2 reload

Для корректного функционирования авторизации через PAM пользователю, от которого работает веб-сервер (по-умолчанию — www-data), необходимо выдать права на чтение информации из БД пользователей и сведений о мандатных метках. Для этого выполняем следующие команды:

usermod -a -G shadow www-data
setfacl -d -m u:www-data:r /etc/parsec/macdb
setfacl -R -m u:www-data:r /etc/parsec/macdb
setfacl -m u:www-data:rx /etc/parsec/macdb

Для пользователя под которым будем авторизоваться (в нашем примере — системный пользователь user1), выполняем команду настройки (по-сути просто сбрасываем в 0) минимальный и максимальный наборы мандатных категорий:

usermac -c 0:0 user1

4. Настройка ресурсов для обеспечения отказоустойчивости Apache-сервера.

С точки зрения кластера все сущности, которые мы будем использовать — сервисы, службы, точки монтирования, тома и разделы — это ресурсы, поэтому в данной статье под словом «ресурс» мы понимаем все, что находится под управлением кластера.
Для настройки отказоустойчивости Apache-сервера, необходимо создать определенные ресурсы, объединить их в группы и определить порядок их запуска. Все действия производим на первом сервере.

Создаем ресурс отказоустойчивого ip-адреса (по нему будет использоваться Apache-сервер):

crm configure primitive failover_ip ocf:heartbeat:IPaddr2 params ip=10.4.202.107 nic=eth0

Создаем ресурс Apache:

crm configure primitive apache lsb:apache2 op monitor interval=15s

Организуем созданные ресурсы служб/сервисов в группы:

crm configure group group_main failover_ip apache

Устанавливаем предпочтение запуска ресурсов Мастер/Слейв

crm configure location prefer_group_main_ msk-astra-1 group_main 100: msk-astra-1
crm configure location prefer_group_main_ msk-astra-2 group_main 50: msk-astra-2

Проверяем состояние кластера:

crm status

Результат проверки статуса кластера будет примерно таким:

============
Last updated: Mon Sep 19 11:20:06 2016
Last change: Mon Sep 19 11:18:23 2016 via cibadmin on astra14-2
Stack: openais
Current DC: msk-astra-1 - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
2 Resources configured.
============
Online: [ msk-astra-1 msk-astra-2 ]

Resource Group: group_main
failover_ip (ocf::heartbeat:IPaddr2): Started msk-astra-1
apache (lsb:apache2): Started msk-astra-1

Для проверки работы, в браузере заходим по адресу http://10.4.202.107 и авторизовавшись, пользуемся ресурсом.

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты