Здравейте и добре дошли в #root.bg!
Тук може да намерите статии и уроци за linux, мрежи и тяхната защита, игри и забавление, както и хобита – ролери, дронове и много други.
Тук може да намерите статии и уроци за linux, мрежи и тяхната защита, игри и забавление, както и хобита – ролери, дронове и много други.
Николай Николов Работа cachet, cloudflare, github, laravel, status 0
Привет,
В работата ми като системен администратор, често се налага при проблем с даден сървър или система да пиша мейли към всички засегнати, за да ги информирам за ситуацията. Това в повечето случаи е доста досадно :/
Големите компании като cloudflare, github и много други, имат така наречените „status page“-ове, в които те пишат за евентуални техни проблеми.
До колкото ми е известно, използват платените услуги на statuspage.io.
Днес обаче аз ще пиша за безплатна алтернатива на statuspage.io – наречена Cachet – open source status page.
Ето и малко инфо за тази система :
Cachet is software that improves downtime
Great companies all over the world use Cachet to communicate their downtime and system outages to their customers, teams and shareholders.
Too many companies don’t inform their customers when something is awry. Let us help you.
Cachet е писан на Laravel 5.2, което го прави изключително гъвкав и дава големи възможности за преработване и оптимизиране спрямо всяка наша система. Също така в github може да се намери и плъгин за nagios който да въвежда автоматично всеки ивент ( за отпадане на услуга и нейното възтановяване ).
Всичко това ми се струва страхотно и затова и инсталирах Cachet!
Считам че този „app“ би бил много полезен за много IT копмании, които имат много сървъри и приложения!
Инсталацията на Cachet става много лесно! Повече за нея тук, а работещо демо може да се види тук.
Съвет от мен! – Задължително тази система трябва да се инсталира на отделен сървър, при възможност на различно място от главната локация на сървърите на компанията ви. Така ще има и смисъл от нея!
Линк към status page-a на root.bg тук който се намира в Amazon AWS.
Николай Николов Howto corrupt, innodb, mysql, recover, table 0
Привет,
Наскоро един наш MySQL сървър крашна (заради спиране на тока) и след като запали, наблюдавахме много проблеми с InnoDB таблици от типа:
11:43:59 mentos mysqld: 160607 11:43:59 [Warning] InnoDB: Cannot open table finance/users from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
Стигне ли се до тук, най-лесното възтановяване става от dump на базата и restore. Обаче ако нямаме такъв става весело!
В този пост ще споделя как оправих подобен проблем с бази които нямаха бекъп, чрез mysql-utilities.
В моят случай базата finance беше счупена – нито една нейна таблица не работеше. За възтановяването беше нужно да изкарам структурата на всяка една от тези таблици. Това става по следния начин:
root@mysql-niki-test:/var/lib/mysql/finance# mysqlfrm --basedir /usr --port 3316 --user=root --verbose /root/mysql/finance/users.frm # Spawning server with --user=root. # Starting the spawned server on port 3316 ... done. # Reading .frm files # # Reading the users.frm file. # # CREATE statement for /root/mysql/finance/users.frm: # CREATE TABLE `finance`.`users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `names` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL, `is_admin` tinyint(4) NOT NULL DEFAULT '0', `department_id` int(11) NOT NULL, `active` tinyint(4) NOT NULL, `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `users_email_unique` (`email`), KEY `department_id` (`department_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Николай Николов Howto debian, files, limit, mysql, open 0
Привет,
В компанията в която работя често се налага да правя нови MySQL сървъри и да ги включвам в работещия ни cluster. Поради факта, че базите които имаме са изключително големи и натоварването към тях също, може да се стигне до проблема с open_files_limit, който при MySQL по подразбиране не 1024.
mysql> show global variables like 'open%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 1024 | +------------------+-------+
Пробвал съм много начини за решаване на този проблем. Добавяне на лимити в /etc/security/limits.conf , добавяне на лимити в /etc/mysql/my.cnf , но никои от тях не ми свърши работа. За това и пиша този пост, с моят начин за решаване на този проблем.
За да избегнем съобщението за грешка : mysql> too many open files, е нужен лек тунинг на самият mysql.service.
Линукса на който живеят MySQL сървърите е debian 8, а при него е известно, че системният мениджър е сменен, и е вече systemd. Заради това е нужно да се направи промяна в /lib/systemd/system/mysql.service както следва:
echo "LimitNOFILE=65535" >> /lib/systemd/system/mysql.service echo "LimitNPROC=65535" >> /lib/systemd/system/mysql.service
Следва презареждане на systemd демона :
systemctl daemon-reload
и рестартиране на MySQL процеса :
systemctl restart mysql.service
И резултата е на лице:
MySQL-Cluster-1:˜# mysql Welcome to the MySQL monitor. Commands end with ; or \g. ................ Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show global variables like 'open%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 65535 | +------------------+-------+ 1 row in set (0.01 sec) mysql> ^DBye
Общо взето е това!
Николай Николов Howto letsencrypt, monit, nginx, root.bg, ssl 0
Привет,
Искам да съобщя, че от днес root.bg (и няколко под домейна ) използват валиден сертификат от Let’s Encrypt!! Welcome LetsEncrypt!
Накратко – LetsEncrypt предоставят напълно безплатно възможността, да имаме валиден SSL сертификат.
Инсталацията на letsencrypt става супер лесно :
beta:~# git clone https://github.com/letsencrypt/letsencrypt beta:~# cd letsencrypt/ beta:~/letsencrypt# ./letsencrypt-auto --help
А след това следва и инсталацията на самите сертификати :
/root/.local/share/letsencrypt/bin/letsencrypt certonly --standalone -w /var/www/root.bg/ -d root.bg -d www.root.bg -d sky.root.bg -d music.root.bg -w /var/www/cdn.root.bg/ -d cdn.root.bg
За целта първо трябва да се спре уеб сървъра, докато трае самото инсталиране на сертификатите ( осъществява се обратна връзка от сървърите на letsencrypt.org към моите домейни ) – отнема около 20~30 секунди.
Ако всичко е ОК трябва да видим и следното съобщение :
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/root.bg/fullchain.pem. Your cert will expire on 2016-07-25. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. - If you like Let's Encrypt, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le