Есть тестовый zabbix cервер который стоит на дешевом VDS работающий на обычных sata дисках.
При незначительной нагрузке iowait процессора составлял порядка 20%.
Попробуем перенести сервер на такой же дешевый VDS, но на ssd дисках.
Заодно распишем процедуру бэкапа и восстановления zabbix сервера.
Процесс бэкапа не сложный, надо скопировать пару директории в которых zabbix хранит настройки и свои скрипты, а так же сделать дамп бады данных.
В базе данных zabbix хранит настройки хостов за которыми он следит и полученные с элементов данных значения.
Данных в базе может скопиться быть очень много и поговаривают что если делать дамп с помощью mysqldump, то на болшьших базах время восстановления может занять дни. В данном случае резервную копию сделаем по старинке.
Так же полезно будет скопировать настройки веб сервера и ssl сертификаты
В итоге список того, что надо забэкапить будет таким:
Простой скрипт, без учета версионности и без копирования на какой-либо третий сервер.
#!/bin/bash ROPT="-v -az --delete" #RSYNC rsync $ROPT /etc/zabbix/ /backup/zabbix_server/etc_zabbix rsync $ROPT /usr/share/zabbix/ /backup/zabbix_server/usr_share_zabbix rsync $ROPT /etc/httpd/ /backup/zabbix_server/etc_httpd rsync $ROPT /etc/letsencrypt/ /backup/zabbix_server/etc_letsencrypt #STOP ZABBIX systemctl stop zabbix-server sleep 3 #MYSQLDUMP mysqldump -u USERNAME -pPASSWORD zabbix_db > /backup/zabbix_server/zabbix_db.sql #START ZABBIX systemctl start zabbix-server #TAR tar -czvf /backup/zabbix_server.tar.gz -C /backup/ zabbix_server
Восстанавливать zabbix можно на заранее подготовленный резервный сервер или на совсем свежий сервер.
В первом, если на резервном сервере уже установлен mysql, zabbix сервер и агент, подготовлен apache и лежит актуальная версия бэкапа, то остается только из бэкапа полностью скопировать файлы в /etс/zabbix, /usr/share/zabbix и накатить базу данных.
Во втором случае, перед восстановлением, фактически надо сделать установку zabbix c нуля и только потом копировать файлы из бэкапа.
Рассмотрим второй случай подробнее, процесс восстановления будет состоять из следующий шагов:
Курсивом выделены шаги которые надо сделать если бы у нас уже был подготовлен резервный сервер.
По scp копируем бэкап с server1 на server2 и разархивируем его.
[root@server2 ~]# mkdir src [root@server ~]# cd src/ [root@server2 src]# scp root@server1.mykb.ru:/backup/zabbix_server.tar.gz ./ root@server1.mykb.ru's password: zabbix_server.tar.gz 100% 22MB 10.9MB/s 00:02 [root@server2 src]# ll root@server2 src]# ll total 22380 -rw-r--r-- 1 root root 22915028 авг 4 22:45 zabbix_server.tar.gz [root@server2 src]# tar zxvf zabbix_server.tar.gz [root@server2 src]# cd zabbix_server [root@server2 zabbix_server]# ll total 63868 drwxr-xr-x 5 root root 4096 июн 19 17:59 etc_httpd drwxr-xr-x 8 root root 4096 июн 19 18:10 etc_letsencrypt drwxr-xr-x 4 root root 4096 авг 5 01:52 etc_zabbix drwxr-xr-x 13 root root 4096 июл 22 13:21 usr_share_zabbix -rw-r--r-- 1 root root 65382565 авг 5 12:14 zabbix_db.sql
У нас есть свежий Centos7 на котором обновили все пакеты, включилт epel репозиторий и выключили selinux.
Ставим mysql.
[root@server2 ~]# yum install -y mariadb mariadb-server Loaded plugins: fastestmirror ... Dependencies Resolved ========================================================================================================================================================================================= Package Arch Version Repository Size ========================================================================================================================================================================================= Installing: mariadb x86_64 1:5.5.52-1.el7 base 8.7 M mariadb-server x86_64 1:5.5.52-1.el7 base 11 M Installing for dependencies: libaio x86_64 0.3.109-13.el7 base 24 k perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k perl-DBD-MySQL x86_64 4.023-5.el7 base 140 k perl-DBI x86_64 1.627-4.el7 base 802 k perl-Data-Dumper x86_64 2.145-3.el7 base 47 k perl-IO-Compress noarch 2.061-2.el7 base 260 k perl-Net-Daemon noarch 0.48-5.el7 base 51 k perl-PlRPC noarch 0.2020-14.el7 base 36 k Transaction Summary ========================================================================================================================================================================================= Install 2 Packages (+9 Dependent packages) Total download size: 21 M Installed size: 108 M ... Complete!
Включаем автозагрузку и запускаем mysql.
[root@server2 ~]# systemctl enable mariadb.service Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. [root@server2 ~]# systemctl start mariadb
Делаем первоначальную настройку mysql.
[root@server2 ~]# /usr/bin/mysql_secure_installation
Вывод mysql_secure_installation
Вывод mysql_secure_installation
[root@server2 ~]# /usr/bin/mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
Установка mysql завершена, теперь создадим пустую бащу zabbix_db.
[root@server2 ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 10 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database zabbix_db character set utf8 collate utf8_bin; Query OK, 1 row affected (0.03 sec) MariaDB [(none)]> grant all privileges on zabbix_db.* to zabbix_user@localhost identified by 'password'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> quit Bye
Заличаем базу.
[root@server2 zabbix_server]# date Сб авг 5 12:40:18 MSK 2017 [root@server2 zabbix_server]# mysql -u zabbix_user -p zabbix_db < zabbix_db.sql Enter password: [root@server2 zabbix_server]# date Сб авг 5 12:41:00 MSK 2017
База размером 65Мбайт залилась за 42 секунды.
Подключаем репозиторий zabbix.
[root@server2 zabbix_server]# rpm -i http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm warning: /var/tmp/rpm-tmp.bp7LnJ: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Ставим.
[root@server2 zabbix_server]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent Loaded plugins: fastestmirror ... Dependencies Resolved ========================================================================================================================================================================================= Package Arch Version Repository Size ========================================================================================================================================================================================= Installing: zabbix-agent x86_64 3.2.7-1.el7 zabbix 345 k zabbix-server-mysql x86_64 3.2.7-1.el7 zabbix 1.8 M zabbix-web-mysql noarch 3.2.7-1.el7 zabbix 5.8 k Installing for dependencies: OpenIPMI-libs x86_64 2.0.19-15.el7 base 502 k OpenIPMI-modalias x86_64 2.0.19-15.el7 base 15 k dejavu-fonts-common noarch 2.33-6.el7 base 64 k dejavu-sans-fonts noarch 2.33-6.el7 base 1.4 M fontpackages-filesystem noarch 1.44-8.el7 base 9.9 k fping x86_64 3.10-4.el7 epel 46 k iksemel x86_64 1.4-6.el7 epel 50 k libX11 x86_64 1.6.3-3.el7 base 606 k libX11-common noarch 1.6.3-3.el7 base 162 k libXau x86_64 1.0.8-2.1.el7 base 29 k libXpm x86_64 3.5.11-3.el7 base 54 k libjpeg-turbo x86_64 1.2.90-5.el7 base 134 k libpng x86_64 2:1.5.13-7.el7_2 base 213 k libtool-ltdl x86_64 2.4.2-22.el7_3 updates 49 k libxcb x86_64 1.11-4.el7 base 189 k libxslt x86_64 1.1.28-5.el7 base 242 k net-snmp-libs x86_64 1:5.7.2-24.el7_3.2 updates 747 k php-bcmath x86_64 5.4.16-42.el7 base 57 k php-gd x86_64 5.4.16-42.el7 base 127 k php-ldap x86_64 5.4.16-42.el7 base 52 k php-mbstring x86_64 5.4.16-42.el7 base 505 k php-mysql x86_64 5.4.16-42.el7 base 101 k php-pdo x86_64 5.4.16-42.el7 base 98 k php-xml x86_64 5.4.16-42.el7 base 125 k t1lib x86_64 5.1.2-14.el7 base 166 k unixODBC x86_64 2.3.1-11.el7 base 413 k zabbix-web noarch 3.2.7-1.el7 zabbix 3.7 M Transaction Summary ========================================================================================================================================================================================= Install 3 Packages (+27 Dependent packages) Total download size: 12 M Installed size: 57 M ... Complete!
Бэкапы конфигураций у нас лежат в директориях etc_zabbix и usr_share_zabbix.
[root@server2 zabbix_server]# ll total 63868 drwxr-xr-x 5 root root 4096 июн 19 17:59 etc_httpd drwxr-xr-x 8 root root 4096 июн 19 18:10 etc_letsencrypt drwxr-xr-x 4 root root 4096 авг 5 01:52 etc_zabbix drwxr-xr-x 13 root root 4096 июл 22 13:21 usr_share_zabbix -rw-r--r-- 1 root root 65382565 авг 5 12:14 zabbix_db.sql [root@server2 zabbix_server]# ll etc_zabbix/ total 68 drwxr-x--- 2 apache apache 4096 июл 22 13:21 web -rw-r--r-- 1 root root 10363 авг 5 01:52 zabbix_agentd.conf -rw-r--r-- 1 root root 10339 июн 11 20:10 zabbix_agentd.conf~ drwxr-xr-x 2 root root 4096 июл 22 13:25 zabbix_agentd.d -rw-r----- 1 root zabbix 14886 июн 11 19:41 zabbix_server.conf -rw-r----- 1 root root 14876 май 6 03:32 zabbix_server.conf~ -r-------- 1 zabbix zabbix 73 авг 5 01:52 zbxpsk
Копируем
[root@server2 zabbix_server]# cp -rp etc_zabbix/ /etc/zabbix/ [root@server2 zabbix_server]# cp -rp usr_share_zabbix/ /usr/share/zabbix/
Ставим apache c поддержкой ssl.
[root@server2 zabbix_server]# yum install httpd mod_ssl
Включаем автозагрузуку и запускаем.
[root@server2 zabbix_server]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@server2 zabbix_server]# systemctl start httpd
Ставим обвязку для работы с Letsencrypt.
[root@server2 zabbix_server]# yum install python2-certbot-apache Loaded plugins: fastestmirror ... Dependencies Resolved ========================================================================================================================================================================================= Package Arch Version Repository Size ========================================================================================================================================================================================= Installing: python2-certbot-apache noarch 0.14.1-1.el7 epel 144 k Installing for dependencies: audit-libs-python x86_64 2.6.5-3.el7_3.1 updates 70 k augeas-libs x86_64 1.4.0-2.el7 base 355 k certbot noarch 0.14.1-3.el7 epel 19 k checkpolicy x86_64 2.5-4.el7 base 290 k dialog x86_64 1.2-4.20130523.el7 base 208 k libcgroup x86_64 0.41-11.el7 base 65 k libsemanage-python x86_64 2.5-5.1.el7_3 updates 104 k policycoreutils-python x86_64 2.5-11.el7_3 updates 445 k pyOpenSSL x86_64 0.13.1-3.el7 base 133 k python-IPy noarch 0.75-6.el7 base 32 k python-augeas noarch 0.5.0-2.el7 base 25 k python-backports x86_64 1.0-8.el7 base 5.8 k python-backports-ssl_match_hostname noarch 3.4.0.2-4.el7 base 12 k python-cffi x86_64 1.6.0-5.el7 base 218 k python-enum34 noarch 1.0.4-1.el7 base 52 k python-idna noarch 2.0-1.el7 base 92 k python-ipaddress noarch 1.0.16-2.el7 base 34 k python-ndg_httpsclient noarch 0.3.2-1.el7 epel 43 k python-parsedatetime noarch 1.5-3.el7 epel 61 k python-ply noarch 3.4-10.el7 base 123 k python-psutil x86_64 2.2.1-1.el7 epel 114 k python-pycparser noarch 2.14-1.el7 base 104 k python-requests noarch 2.6.0-1.el7_1 base 94 k python-setuptools noarch 0.9.8-4.el7 base 396 k python-six noarch 1.9.0-2.el7 base 29 k python-urllib3 noarch 1.10.2-2.el7_1 base 100 k python-zope-component noarch 1:4.1.0-3.el7 epel 227 k python-zope-event noarch 4.0.3-2.el7 epel 79 k python-zope-interface x86_64 4.0.5-4.el7 base 138 k python2-acme noarch 0.14.1-1.el7 epel 170 k python2-certbot noarch 0.14.1-3.el7 epel 417 k python2-configargparse noarch 0.11.0-1.el7 epel 30 k python2-cryptography x86_64 1.3.1-3.el7 base 471 k python2-dialog noarch 3.3.0-6.el7 epel 94 k python2-future noarch 0.16.0-2.el7 epel 799 k python2-mock noarch 1.0.1-9.el7 epel 92 k python2-pyasn1 noarch 0.1.9-7.el7 base 100 k python2-pyrfc3339 noarch 1.0-2.el7 epel 13 k pytz noarch 2012d-5.el7 base 38 k setools-libs x86_64 3.3.8-1.1.el7 base 612 k Transaction Summary ========================================================================================================================================================================================= Install 1 Package (+40 Dependent packages) Total download size: 6.5 M Installed size: 27 M ... Complete!
Настройки apache для zabbix:
[root@server2 zabbix_server]# cat etc_httpd/conf.d/vhosts.conf NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> ServerName server.mykb.ru Redirect / https://server.mykb.ru/ </VirtualHost> <VirtualHost *:443> ServerName server.mykb.ru ServerAdmin someone@mykb.ru DocumentRoot /usr/share/zabbix ##### SSLEngine on SSLCertificateKeyFile /etc/letsencrypt/live/server.mykb.ru/privkey.pem SSLCertificateFile /etc/letsencrypt/live/server.mykb.ru/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/server.mykb.ru/chain.pem #### <Directory "/usr/share/zabbix"> Options FollowSymLinks AllowOverride None Require all granted <IfModule mod_php5.c> php_value max_execution_time 300 php_value memory_limit 128M php_value post_max_size 16M php_value upload_max_filesize 2M php_value max_input_time 300 php_value always_populate_raw_post_data -1 php_value date.timezone Europe/Moscow </IfModule> </Directory> <Directory "/usr/share/zabbix/conf"> Require all denied </Directory> <Directory "/usr/share/zabbix/app"> Require all denied </Directory> <Directory "/usr/share/zabbix/include"> Require all denied </Directory> <Directory "/usr/share/zabbix/local"> Require all denied </Directory> ErrorLog logs/mykb_error.log CustomLog logs/mykb_access.log common </VirtualHost>
Просто копируем файл vhosts.conf
[root@server2 zabbix_server]# cp -p etc_httpd/conf.d/vhosts.conf /etc/httpd/conf.d/vhosts.conf
Копируем файлы Letsencrypt.
[root@server2 zabbix_server]# cp -rp etc_letsencrypt/ /etc/letsencrypt/
Запускаем zabbix сервера и агента
[root@server2 zabbix_server]# systemctl enable zabbix-server Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service. [root@server2 zabbix_server]# systemctl enable zabbix-agent Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service. [root@server2 zabbix_server]# systemctl start zabbix-server [root@server2 zabbix_server]# systemctl start zabbix-agent
Переходи по ссылке прописанной в vhosts.conf и проверяем.
Если в ходе восстановления изменился ip адрес, то надо пройтись по всех хостам и его поменять.
Переход на ssd диски помог, загрузка сильно упала.
Для регулярного бэкапа скрит не подходит, надо в него добавить оповещения, проверку на запуск zabbix сервер, версионность и копирование на третий сервер.