OTRS: переезд на новый сервер

В наличии архивный сервер OTRS на который раз в несколько месяцев сливаются старые тикиты с промышленного сервера. На этом сервере не хватает места под хранение файлов на жестком диске. При этом сервер относительно современный (IBM eServer BladeCenter HS21) и его можно использовать под более нагруженные задачи, чем архивная копия OTRS. А OTRS в свою очередь можно перенести на менее мощный сервер у которого более объемные жесткие диски.
Используемая версия OTRS — 2.4.9.

Задача: перенести OTRS на новый сервер.

Устанавливаем ОС

В качестве ОС выступает centos 6.2.
Тип установки — минимальный (нам лишний хлам не нужен).

Настройка ОС

Отключаем SELinux















cat









 









/









selinux









/









enforce










echo









 









0









 









>









 









/









selinux









/









enforce




В файле /etc/sysconfig/selinux прописываем параметр











SELINUX=disabled










Настройка дополнительных репозиториев











yum repolist












Loaded plugins: fastestmirror, presto, priorities












Loading mirror speeds from cached hostfile












 * base: ftp.tlk-l.net












 * epel: mirror.yandex.ru












 * extras: ftp.tlk-l.net












 * rpmforge: ftp-stud.fht-esslingen.de












 * updates: ftp.tlk-l.net












1346 packages excluded due to repository priority protections












repo id                                                 repo name                                                                                    status












base                                                    CentOS-6 - Base                                                                                  4,764












epel                                                    Extra Packages for Enterprise Linux 6 - i386                                                 4,790+969












extras                                                  CentOS-6 - Extras                                                                                    4












rpmforge                                                RHEL 6 - RPMforge.net - dag                                                                    4,287+2












updates                                                 CentOS-6 - Updates                                                                               1+375












repolist: 13,846










Устанавливаем пакет приоритетов:





















yum install





















 yum-plugin-priorities-1.1.30-















10















.el6.noarch










Выставляем приоритеты, например:





[base]






name=CentOS-$releasever - Base












mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os












#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/












gpgcheck=1












gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6












priority=1










Вот какие приоритеты стоят у меня:
[base] — 1
[extras] — 10
[centosplus] — 20
[epel] — 40
[rpmforge] — 30
[utterramblings] — 50

Создаем LVM тома и разделы

Создаем LVM тома

Раздел c вложениями тикитов (вложения на изначальном сервере весят 86 Гб):





lvcreate 















-narticle















 









-L130G









 vg00




Раздел opt (весит 2,5 Гб):





lvcreate 









-nopt









 









-L5G









 vg00




Раздел с БД (объем БД 25 Гб):





lvcreate 









-nmysql









 









-L50G









 vg00




Создаем необходимые разделы





mke2fs 









-L









 mysql 









-t









 ext4 









-O















 dir_index 















-m









 









2









 









-J









 









size









=









400









 









-b









 









4096









 









-E









 









stride









=









16









 









/









dev









/









mapper









/















vg00-mysql










Опции:
-L — метка тома
-t – тип файловой системы
-O – дополнительный опции
dir_index — ускоряет поиск в больших каталогах
-m – процент зарезервированного места под суперпользователя. Позволяет избежать фрагментиции. По умолчанию 5%.
-J – создать большой журнал
-b – размер блока в байтах. По умолчанию 4К.
-E stride=16 – параметр зависит от размера блока в файловой системе и chunk size RAID контроллера. Пример — 4k blocks, 128k RAID stripes would set stride=32. stride-калькулятор .





mke2fs 









-L









 opt 









-t









 ext4 









-O















 dir_index 















-m









 









2









 









-J









 









size









=









400









 









-b









 









4096









 









-E









 









stride









=









16









 









/









dev









/









mapper









/









vg00-opt








mke2fs 









-L









 article 









-t









 ext4 









-i









 









8192









 









-O















 dir_index 















-m









 









2









 









-J









 









size









=









400









 









-b









 









2048









 









-E









 









stride









=









32









 









/









dev









/









mapper









/















vg00-article










Опции:
-i — bytes/inode ratio – количество байт на айнод. Чем больше, тем меньше айнодов будет создано. Не должно быть меньше чем блок файловой системы. К выбору данного параметра необходимо подойти взвешенно, так как изменить количество айнодов после создания файловой системы уже не получится. Я так много создаю айнодов так как у меня очень много мелких файлов. Очень много — это действительно много:















df









 









-h









 









|



















egrep









 















'art|File'






















Filesystem            Size  Used Avail Use















%















 Mounted on
















/









dev









/









mapper









/















vg00-article












                      126G   60G   65G  















48



















%









 









/









opt









/









otrs









/









var









/









article


















cd









 









/









opt









/









otrs









/









var









/









article 















&&















 









ls









 









-R









 









-a









 









-F









 









20



















*









 









|



















egrep









 









-v









 









'/|^$'









 









|



















wc









 









-l




















4807232














То есть у меня на разделе где размещены файлы прикрепленные к тикитам количество этих файлов почти 5 млн., общий объем которых 60 Гб.

Опции:
-b 2048 — тут поставили значение в два раза меньше стандартного, так как подавляющее большинство файлов меньше 2Кб. При уменьшении блока немного падает производительность файловой системы, но при этом можно разместить больше файлов на разделе в случае если их размер менее 2Кб.

-E stride=32 — соответственно изменился и этот параметр, так как изменился параметр выше.

tmp раздел

Необходимо создать большой tmp раздел. В моем случае оказалось достаточно 20 Гб. Если этого не сделать, то большой дамп БД будет заливаться очень долго. Это связано с процессом восстановления таблиц при создании и сортировке индексов. Если места не хватает, то используется медленный тип сортировки. Если хватает, то нормальный. В первом случае можем наблюдать запрос в состоянии «Repair with keycache». При втором у запроса будет состояние «Repair by sorting». Второй в десятки раз быстрее.
Соответственно создаем LVM том и разлел:





lvcreate 









-ntmp









 









-L20G









 vg00 















&&















 mke2fs 









-L









 tmp 









-t









 ext2 









/









dev









/









mapper









/









vg00-tmp




Монтируем и выставляем права:















mount









 









/









dev









/









mapper









/









vg00-tmp 









/









tmp 















&&















 









chmod









 









1777









 









/









tmp




Помимо большого временного раздела в конфиге my.cnf необходимо указать соответствующие опции:











myisam_max_sort_file_size = 20G












myisam_max_extra_sort_file_size = 20G










Опции myisam_max_sort_file_size и myisam_max_extra_sort_file_size должны быть больше размера максимального размера индекса.

Дополнительные пакеты

Некоторые из пакетов ниже следует установить на свое усмотрение. Это те пакеты которые могут пригодиться в случае минимальной установки CentOS.





crontabs
screen
mc
htop
iotop
nload
ncdu






apachetop






exim
pwgen
pv
mytop
lsof






traceroute












e4fsprogs












bind-utils












smartmontools












procinfo (в репах не оказалось)












yum-utils (package-cleanup)












dmidecode












sysstat (iostat)










Apache

Устанавливаем:





















yum install















 httpd




Ставим в автозапуск при загрузке системы:











chkconfig httpd on










Запускам:











service httpd start










MySQL

Устанавливаем mysql:





















yum install





















 mysql-server mysql










Копируем файл под большие нагрузки















cp









 









/









usr









/









share









/









doc









/















mysql-server-5.1.52















/















my-huge.cnf 















/









etc









/









my.cnf




Выставляем количество тредов в зависимости от количества ядер





















# Try number of CPU's*2 for thread_concurrency






















thread_concurrency = 















4














Запускаем:











service mysqld start










Запускаем скрипт начальной настройки:















/









usr









/









bin









/















mysql_secure_installation










Прописываем в конфиг my.cfg:















log









=









/









var









/









log









/















mysql.log 





















# включаем журналирование






















skip-networking












bind-address=127.0.0.1 





















# разрешаем слушать только localhost




















Запускаем mysql















/















etc.init.d















/















mysqld start










Добавляем в автозапуск











chkconfig mysqld on










Переносим БД mysql на раздел LVM

Останавливаем mysql















/















etc.init.d















/















mysqld stop










Перемещаем файлы расположенные /var/lib/mysql куда-нибудь.

Монтируем раздел LVM:















mount









 









-o















 rw,noexec,nosuid,noatime 















/









dev









/









mapper









/















vg00-mysql 















/









var









/









lib









/









mysql




Перемещаем файлы обратно в каталог /var/lib/mysql.

Запускаем mysql















/















etc.init.d















/















mysqld start










OTRS

Скачиваем OTRS в rpm пакете











http://ftp.otrs.org/pub/otrs/RPMS/fedora/4/










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





rpm 









-ihv















 otrs-2.4.9-01.noarch.rpm










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

Проверяем установлены ли все необходимые модули:















/









opt









/









otrs









/









bin









/















otrs.checkModules










Доустанавливаем перловые модули:





















yum install















 perl-CGI
















yum install





















 perl-TimeDate










В итоге получаем следующуюю картину:















/









opt









/









otrs









/









bin









/















otrs.checkModules












   o CGI............................ok 















(









v3.51









)
















   o Date::Pcalc....................ok 















(









v1.2









)
















   o Date::Format...................ok 















(









v2.22









)
















   o DBI............................ok 















(









v1.609









)
















   o DBD::mysql.....................ok 















(









v4.013









)
















   o Digest::MD5....................ok 















(









v2.39









)
















   o Crypt::PasswdMD5...............ok 















(









v1.3









)
















   o LWP::UserAgent.................ok 















(









v5.833









)
















   o Encode::HanExtra...............Not installed















!









 









(















Optional - Required to handle mails with several Chinese character sets.















)
















   o IO::Scalar.....................ok 















(









v2.110









)
















   o IO::Wrap.......................ok 















(









v2.110









)
















   o MIME::Base64...................ok 















(









v3.08









)
















   o Mail::Internet.................ok 















(









v2.04









)
















   o MIME::Tools....................ok 















(









v5.427









)
















   o Net::DNS.......................ok 















(









v0.65









)
















   o Net::POP3......................ok 















(









v2.29









)
















   o Mail::POP3Client...............ok 















(









v2.18 









)
















      o IO::Socket::SSL.............ok 















(









v1.31









)
















   o Net::IMAP::Simple..............ok 















(









v1.17









)
















      o Net::IMAP::Simple::SSL......ok 















(









v1.3









)
















   o Net::SMTP......................ok 















(









v2.31









)
















      o Authen::SASL................ok 















(









v2.12









)
















      o Net::SMTP::SSL..............ok 















(









v1.01









)
















   o Net::LDAP......................Not installed















!









 









(















Optional - Required 















for















 directory authentication.















)
















   o GD.............................Not installed















!









 









(















Optional - 















for









 stats









)
















      o GD::Text....................Not installed















!









 









(















Optional - Required 















for









 stats.









)
















      o GD::Graph...................Not installed















!









 









(















Optional - Required 















for









 stats.









)
















      o GD::Graph::lines............Not installed















!









 









(















Optional - Required 















for









 stats.









)
















      o GD::Text::Align.............Not installed















!









 









(















Optional - Required 















for









 stats.









)
















   o PDF::API2......................Not installed















!









 









(















Optional - Required 















for















 PDF output.















)
















      o Compress::Zlib..............ok 















(









v2.02









)
















   o SOAP::Lite.....................Not installed















!









 









(















Optional - Required 















for















 the SOAP interface.















)
















   o XML::Parser....................ok 















(









v2.36









)














Далее заходим по ссылке:











http://server_ip/otrs/installer.pl










… и устанавливаем OTRS через web-интерферс.

После установки можем зайти под рутом:











http://server_ip/otrs/index.pl










Данные для аутентификации





root









@















localhost






root




iptables

Добавляем правило для апача















-A









 INPUT 









-p









 tcp 









-m









 tcp 









--dport









 









80









 









-j









 ACCEPT




Перезапускаем iptables















/









etc









/









init.d









/















iptables restart










Проверяем корректность установки OTRS

Запускаем в OTRS следующую оснастку:





Admin -









>









 









[















 Support Assessment 















]














Проверяем чтобы напротив всех перечисленных пунктов значение поля State было “ОК”.

Траблшутинг

Например мы получили значение параметра “Check if the configured FQDN is valid” “Failed”.
Для устранения данной ошибки достаточно в файле /opt/otrs/Kernel/Config.pm указать доменное имя.

Перенос вложений тикитов

Вложения у меня занимают очень много места:















df









 









-h









 









|



















grep









 arti






10.10.11.11:















/















otrs_data















/









article






                       99G   85G   14G  















87



















%









 









/









opt









/









otrs









/









var









/









article




По своей сути это мелкие файлы от несколькиз килобайт, до нескольких мегабайт.

Поэтому переливаем вложения следующим способом:





















# Удаленно копируем с удобным индикатором выполнения:


























dir









=















"2007"















 















&&















 









tar









 cf - 









$dir









 









|









 pv 









-s









 $









(



















du









 









-sb









 









$dir









 









|



















awk









 















'{print $1}'

























)









 









|



















ssh









 root









@















10.10.10.10 















tar









 xf - 









-C









 









/









opt









/









otrs









/









var









/









article




Изначальный размер от того какой мы получим на новом сервере может отличаться. Поэтому проверяем все ли файлы скопировались запуская на старом и новом сервере такую команду:















ls









 









-R









 









-a









 









-F









 









$dir









 









|



















egrep









 









-v









 









'/|^$'









 









|



















wc









 









-l














Перенос БД

Сохраняем дамп БД со старого сервера сразу на новый:











mysqldump 















-uroot









 









--opt









 otrs 









|



















gzip









 









|



















ssh









 root









@















10.10.10.10 





















"cat > /var/lib/mysql/dump/otrs.sql.gz"




















Заливаем дамп















zcat















 otrs.sql.gz 















|















mysql otrs 















-uotrs









 









-p














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

fstab





















# Created by anaconda on Fri Jan 13 15:06:04 2012


























#


























# Accessible filesystems, by reference, are maintained under '/dev/disk'
































# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info


























#




















UUID















=5e8d2f80-1a39-4b86-a42c-21391afd6a2a 















/















                       ext4    defaults        















1









 









1




















UUID















=a06ea5ae-d52a-49f3-8a73-babdf88552dc 















/















boot                   ext2    defaults        















1









 









2




















UUID















=103fa6fb-0519-46eb-8bd9-3f1a9810a4fd swap                    swap    defaults        















0









 









0










 










# /tmp




















UUID















=171744e0-2cdc-47e8-90fd-86efbe25c8d6 















/















tmp                    ext2    auto,noexec,rw,async,nouser,nosuid,noatime  















0









 









0










 
















# /srv/repo


























UUID















=9e7fbca5-eb71-485e-87cf-159e590ec9ce 















/









srv









/















repo               ext2    auto,noexec,ro,async,nouser,nosuid,noatime  















0









 









0










 
















# /var/lib/mysql


























UUID















=ba72179b-49b9-4be3-9e5d-4be1b994b455 















/









var









/









lib









/















mysql          ext4    auto,noexec,rw,async,nouser,nosuid,noatime  















0









 









0










 










# /opt




















UUID















=c5c6fb42-0249-42b0-9cc2-a52505036dbb 















/















opt          ext4    auto,rw,async,nouser,nosuid,noatime  















0









 









0










 
















# /opt/otrs/var/article


























UUID















=cfb0b907-72c9-















4120















-bb38-080cbd3253e7 















/









opt









/









otrs









/









var









/















article      ext4    auto,noexec,rw,async,nouser,nosuid,noatime  















0









 









0










 
 
tmpfs                   









/









dev









/















shm                tmpfs   defaults        















0









 









0










devpts                  









/









dev









/















pts                devpts  















gid









=









5









,









mode









=









620









  









0









 









0










sysfs                   









/















sys                    sysfs   defaults        















0









 









0










proc                    









/















proc                   proc    defaults        















0









 









0














iptables





















# Firewall configuration written by system-config-firewall
































# Manual customization of this file is not recommended.


























*









filter






:INPUT ACCEPT 















[



















0









:









0



















]
















:FORWARD ACCEPT 















[



















0









:









0



















]
















:OUTPUT ACCEPT 















[



















0









:









0



















]




















-A









 INPUT 









-m









 state 









--state















 ESTABLISHED,RELATED 















-j









 ACCEPT










-A









 INPUT 









-p









 icmp 









-j









 ACCEPT










-A









 INPUT 









-i









 lo 









-j









 ACCEPT
 
















# Апач


























-A









 INPUT 









-p









 tcp 









-m









 tcp 









--dport









 









80









 









-j









 ACCEPT
 
















# Лочим исходящие соединения на 110 порт, чтобы OTRS на этом сервере не забирал почту с почтового сервера pop3.example.com


























-A









 OUTPUT 









-m









 tcp 









-p









 tcp 









--dport









 









110









 









-j









 DROP
















# Лочим 25 порт на отправку, чтобы OTRS никому ничего не мог отправить (у нас не промышленый, а архивный сервер)


























-A









 OUTPUT 









-m









 tcp 









-p









 tcp 









--dport









 









25









 









-j









 DROP
 
















# Тут веб морда RAID контроллера


























-A









 INPUT 









-p









 tcp 









-m









 tcp 









--dport









 









81









 









-j









 ACCEPT










-A









 INPUT 









-p









 tcp 









-m









 tcp 









--dport









 









82









 









-j









 ACCEPT










-A









 INPUT 









-p









 tcp 









-m









 tcp 









--dport









 









83









 









-j









 ACCEPT
 










-A









 INPUT 









-m









 state 









--state









 NEW 









-m









 tcp 









-p









 tcp 









--dport









 









22









 









-j









 ACCEPT










-A









 INPUT 









-j









 REJECT 















--reject-with





















 icmp-host-prohibited
















-A









 FORWARD 









-j









 REJECT 















--reject-with





















 icmp-host-prohibited






COMMIT




my.cnf

mysql-server-5.1.52















[









client









]










port            = 









3306










socket          = 









/









var









/









lib









/









mysql









/















mysql.sock
















[









mysqld









]










port            = 









3306










socket          = 









/









var









/









lib









/









mysql









/















mysql.sock












skip-locking












key_buffer_size = 384M












max_allowed_packet = 16M












table_open_cache = 















512
















sort_buffer_size = 2M












read_buffer_size = 2M












read_rnd_buffer_size = 8M












myisam_sort_buffer_size = 64M












thread_cache_size = 















8
















query_cache_size = 48M












thread_concurrency = 















4
















myisam_max_sort_file_size = 20G












myisam_max_extra_sort_file_size = 20G
















[















mysqldump















]










quick






max_allowed_packet = 16M
















[









mysql









]
















no-auto-rehash
















[















myisamchk















]
















key_buffer_size = 256M












sort_buffer_size = 256M












read_buffer = 2M












write_buffer = 2M
















[















mysqlhotcopy















]
















interactive-timeout










Для сравнения my.cnf с промышленного сервера (mysql-server-5.0.77)





[mysqld]






init_connect='SET collation_connection = utf8_general_ci'












init_connect='SET NAMES utf8'












default-character-set = utf8












character-set-server = utf8












collation-server = utf8_general_ci












datadir=/var/lib/mysql












socket=/var/lib/mysql/mysql.sock












skip-locking












skip-innodb






skip-bdb






query_cache_size = 50M












query_cache_type=1












query_cache_limit=1M












query_cache_min_res_unit='3000'












max_connections = 500












interactive_timeout=100












wait_timeout=15












connect_timeout=10












table_cache=512












tmp_table_size=256M












max_heap_table_size=64M












thread_cache=300












key_buffer=1024M












thread_concurrency=12












log_slow_queries=/var/log/mysqld.slow.log












long_query_time=2












user=mysql












old_passwords=1












max_allowed_packet = 16M












join_buffer_size=128K












[mysqld_safe]












log-error=/var/log/mysqld.log












pid-file=/var/run/mysqld/mysqld.pid












[mysqldump]






quick






max_allowed_packet = 256M






[client]






default-character-set = utf8












[mysql.server]












user=mysql












basedir=/var/lib












[safe_mysqld]












err-log=/var/log/mysqld.log












pid-file=/var/run/mysqld/mysqld.pid












open_files_limit=8192












[isamchk]












key_buffer=512M












sort_buffer=64M












read_buffer=16M












write_buffer=16M












[myisamchk]












key_buffer=512M












sort_buffer=64M












read_buffer=16M












write_buffer=16M










Ссылки


  1. Installation of OTRS 3.0 on CentOS 5.5

  2. Полезные команды Unix систем

  3. MySQL RAID10 Dell 2960

  4. LVM

Похожие статьи:

Оставить комментарий