Здравейте и добре дошли в #root.bg!
Тук може да намерите статии и уроци за linux, мрежи и тяхната защита, игри и забавление, както и хобита – ролери, дронове и много други.
Ако искате да помогнете за развитието на root.bg, моля направете го от тук!
Тук може да намерите статии и уроци за linux, мрежи и тяхната защита, игри и забавление, както и хобита – ролери, дронове и много други.
Ако искате да помогнете за развитието на root.bg, моля направете го от тук!
Николай Николов Howto ens, eth, ubuntu 2 коментара
Здравейте,
След 16.04 в ubuntu, мрежовите интерфейси вече идват с ново наименование – ens. Обаче това понякога е проблем за старите linux потребители като мен, които са свикнали с eth, и за това се налага всеки път да търся как се променяше това.
Този пост служи именно за това – да покажа как бързо и лесно се оправя този проблем.
За целта е нужно да се отвори /etc/default/grub и да се промени следния ред от :
GRUB_CMDLINE_LINUX=""
на:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
След това се изпълнява и командата : update-grub
root@XRM-web-node3:~# update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.4.0-109-generic Found initrd image: /boot/initrd.img-4.4.0-109-generic Found linux image: /boot/vmlinuz-4.4.0-87-generic Found initrd image: /boot/initrd.img-4.4.0-87-generic done
Последно и много важно нещо преди да се рестартира сървъра/лаптопа е да се промени конфигурационния файл за мрежите където до сега фигурираше ens :
В /etc/network/interfaces се променя от :
auto ens18 iface ens18 inet static
на :
auto eth0 iface eth0 inet static
Следва рестартиране и всичко трябва да тръгне без проблеми!
Това е!
Николай Николов Howto myisam, myisamchk, mysql 0 comments
Здравейте,
Както вече обещах в предния си пост, чапочвам отново да пиша по-активно в блога!
Днес ще споделя за проблем с хостинг сървър на който има около 500 акаунта и на много от тях MyISAM таблиците в MySQL им бяха счупени.
По принцип най-добрия вариянт за справене с този проблем е чрез командата myisamchk :
myisamchk -r *.MYI
Така се оправят таблиците на една база, но днес ми се наложи да правя това на 500 акаунта.
За целта използвах find като преди това свалих MySQL сървъра:
find ./ -name "*.MYI" -exec myisamchk -r {} \;
Стартирах MySQL процеса след успешната поправка и всичко си тръгна нормално!
Това е!
Николай Николов Howto apple, macos, raspberry pi, timemachine 0 comments
Здравейте,
В този пост ще споделя как бързо и лесно можем да си направим Raspberry pi TimeMachine (бекъп сървър за MacOS) с помощта на raspberry pi (в моят случай версия 3) и един външен хард диск.
За целта изтегляме последната версия на rasbian stretch lite от официалният му сайт и го записваме на sd картата ни.
След като сме готови с инсталацията и сме стартирали нашият raspberry pi е време и за същинската инсталация на TimeMachine! Още..
Николай Николов Howto iphone, nagios, pushover 0 comments
Здравейте,
Едно от най-важните неща в системното администриране е мониторинга. За това използваме редица инструменти – кой от кой по-добри, за да можем да реагираме бързо и адекватно при определени критични ситуации!
В този пост ще споделя как се правят push notifications за nagios – един от най-добрите инструменти за мониторинг!
За целта използвах приложението Pushover (има го за iOS и Android) и следвах стъпките :
cd /etc/nagios3/ ; wget https://raw.githubusercontent.com/barryo/nagios-plugins/master/notify-by-pushover.php ; chmod +x /etc/nagios3/notify-by-pushover.php
echo "Test message" | /etc/nagios3/notify-by-pushover.php HOST "Nagios API Token/Key" "Your User Key" RECOVERY OK
– Ако всичко е ок, трябва да се получи нотификация : Nagios Alert – HOST – RECOVERY – OK
# 'notify-by-pushover-service' command definition define command{ command_name notify-by-pushover-service command_line /usr/bin/printf "%b" "$NOTIFICATIONTYPE$: \ $SERVICEDESC$@$HOSTNAME$: $SERVICESTATE$ \ ($SERVICEOUTPUT$)" | \ /etc/nagios3/notify-by-pushover.php \ SERVICE "Nagios API Token/Key" $CONTACTADDRESS1$ \ $NOTIFICATIONTYPE$ $SERVICESTATE$ }
# 'notify-by-pushover-host' command definition define command{ command_name notify-by-pushover-host command_line /usr/bin/printf "%b" "Host '$HOSTALIAS$' \ is $HOSTSTATE$: $HOSTOUTPUT$" | \ /etc/nagios3/notify-by-pushover.php \ HOST "Nagios API Token/Key" $CONTACTADDRESS1$ $NOTIFICATIONTYPE$ \ $HOSTSTATE$ }
define contact{ contact_name iPhone alias iPhoneApp service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-by-pushover-service host_notification_commands notify-by-pushover-host address1 "Your User Key" }
Общо взето това е!
Крайният резултат изглежда така :
Николай Николов Howto dump, mysql, sed 0 comments
Здравейте,
В продължение на поста MySQL split dump to different databases
от миналата година, днес ще споделя как бързо и лесно можем да извадим определена таблица от dump-a на MySQL базата ни. Разбира се ако базата ние малка можем да отворим този dump и да си копираме съдържанието на таблицата в текстов редактор, но когато базата ни е 100гб това няма да е възможно.
Тук идва на помощ sed и решението е :
sed -n -e '/CREATE TABLE.*`fc_company`/,/CREATE TABLE/p' 201709140001-db-CRM.sql > fc_company.sql
Тук нещата изглеждат напълно ясни, но да обесня :
Хубаво е да се прегледа след това самия fc_company.sql файл, тъй като sed понякога хваща и началото на други таблици и ги дропи 🙂 Такъв пример е ако имаме таблица fc_compay_new примерно.
Това е!
Николай Николов Howto cluster, haproxy, redis 0 comments
Привет,
Отдавна не съм писал нещо смислено в сайта… просто нямах муза :/
Днес ще споделя как бързо и лесно направих redis haproxy failover схема, а ето и цялата концепция :
За направата на redis master->slave използвах тази статия, като тук е хубаво да се уточни, че статията е написана уж за redis cluster, но реално тя представлява проста схема на репликация между master и slave сървър! Единствената разлика която е примен е , че redis-server2 не работи на режим read-only :
slave-read-only no
Важно е да се изтества всичко дали е ок.
Пример :
redis-cli -a password -h redis-server1 monitor redis-cli -a password -h redis-server2 monitor
или
redis-cli -a password -h redis-server1 info
и информацията за #Replication при нас трябва да изглежда така :
# Replication role:master connected_slaves:1 slave0:ip=221.221.221.221,port=6379,state=online,offset=44430235644,lag=0 master_repl_offset:44430235644 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:44429187069 repl_backlog_histlen:1048576
Тук нещата изглеждат доста прости. Използвам ubuntu 14.04 и версия на haproxy 1.6 stable. Повече инфо тук.
Конфигурационният файл на redis haproxy сървъра ми изглежда така :
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). This list is from: # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS ssl-default-bind-options no-sslv3 defaults REDIS mode tcp timeout connect 2s timeout server 15s timeout client 15s frontend ft_redis bind 0.0.0.0:6379 name redis default_backend bk_redis backend bk_redis # mode tcp option tcp-check tcp-check connect tcp-check send AUTH\ password\r\n tcp-check send PING\r\n tcp-check expect string +PONG # tcp-check send info\ replication\r\n # tcp-check expect string role:master tcp-check send QUIT\r\n tcp-check expect string +OK server redis-server1 123.123.123.123:6379 check inter 1s server redis-server2 221.221.221.221:6379 check inter 1s backup listen haproxy-web bind 0.0.0.0:8181 mode http stats enable stats uri / stats realm Strictly\ Private stats auth admin:adminpassword stats refresh 30s # stats admin if TRUE
Така нашият haproxy сървър слуша на всичките ни айпи адреси на порт 6379 и проверява master сървъра ни redis-server1 на принципа на ауторизацията чрез парола „password“.
Ако връзката до redis-server1 отпадне, до 15 секунди пуска трафика към redis-server2. Това се конфигурира от настройките за timeout, но по-ниските такива ще доведат до евентуални проблеми, ако има смущения по трасето. Когато връзката до redis-server1 се възтанови, трафика към него се връща по старо му.
На порт 8181 пък върви статистика, която позволява да наблюдаваме заявките към сървърите ни в реално време. Потребителското име за нея е admin, а паролата : adminpassword.
Това е!