Показаны сообщения с ярлыком Linux. Показать все сообщения
Показаны сообщения с ярлыком Linux. Показать все сообщения

пятница, 19 мая 2017 г.

Применение редактора sed

Набор полезных конструкций:

просмотреть некомментированные строки конфига (комментарий - #), например для файла репозитория:
sed -ne '/^#/!p' /etc/yum.repos.d/CentOS-Base.repo

заменить строки (закомментровать / раскомментировать) во всех файлах в каталоге:

sudo sed -i -- 's/^# mirrorlist/mirrorlist/g; s/^baseurl/# baseurl/g' /etc/yum.repos.d/*

удалить строку с определенным содержимым, создав файл бэкапа:
sudo sed -i.bak '/eth[0-9]/d' /etc/udev/rules.d/70-persistent-net.rules

четверг, 20 апреля 2017 г.

Мониторинг MySQL нод кластера с балансировщика Haproxy (один из вариантов)

При включении на haproxy мониторинга состояния нод MySQL методом без имени пользователя, хосты в мониторинге будут в UP'е, но не долго, так как не осуществляется корректное закрытие сессии. При этом просто добавить пользователя (без пароля!!!) сходу не получится.
Предварительно необходимо внести изменения в структуру БД.

ALTER TABLE mysql.user MODIFY COLUMN `ssl_cipher` BLOB NULL;
ALTER TABLE mysql.user MODIFY COLUMN `x509_issuer` BLOB NULL;
ALTER TABLE mysql.user MODIFY COLUMN `x509_subject` BLOB NULL;
ALTER TABLE mysql.user MODIFY COLUMN `authentication_string` TEXT NULL;

после этих операций можно добавить нужного пользователя с указанием хостов кластера (имена FQDN), который будет проверять состояние сервиса MySQL

INSERT INTO user (Host,User) values ('ru1mysqlfr01.domain.local','mysqlcheck');
INSERT INTO user (Host,User) values ('ru1mysqlfr02.domain.local','mysqlcheck');
flush privileges;

правим конфиг haproxy. В результате получаем что-то вроде такого:
sudo vi /etc/haproxy/haproxy.cfg

global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
listen ru1mysqlvip_220_3306
        bind *:3306
        mode tcp
        timeout client  10800s
        timeout server  10800s
        balance leastconn
        option mysql-check user mysqlcheck # Будет идти проверка
        default-server port 3307 inter 2s downinter 5s rise 3 fall 2 slowstart 60s maxconn 64 maxqueue 128 weight 100
        server ru1mysqlfr01 192.168.196.241:3307 check
        server ru1mysqlfr02 192.168.196.237:3307 check



Отдельно для мониторинга состояния сервисов:
listen stats :9000  # Listen on localhost:9000
mode http
stats enable  # Enable stats page
stats hide-version  # Hide HAProxy version
stats realm Haproxy\ Statistics  # Title text for popup window
stats uri /haproxy_stats  # Stats URI
stats auth login:password  # Authentication credentials

среда, 19 апреля 2017 г.

Расширение корневого раздела LVM (CentOS 7)

Для расширения LVM раздела подготовлены два партишена (расширение диска и новый диск).

пользоваться буду SSM - system storage manager
yum install system-storage-manager

проверяем текущее состояние дисков:
ssm list
-----------------------------------------------------------------------------
Device          Free      Used      Total  Pool                   Mount point
-----------------------------------------------------------------------------
/dev/fd0                          4.00 KB
/dev/loop0                      100.00 GB
/dev/loop1                        2.00 GB
/dev/sda                         16.00 GB                         PARTITIONED
/dev/sda1                       500.00 MB                         /boot
/dev/sda2    0.00 KB  15.51 GB   15.51 GB  centos_ru1linuxtest02
/dev/sdb                         24.00 GB
/dev/sdb1   36.00 MB  15.96 GB   16.00 GB  centos_ru1linuxtest02
/dev/sdb2                         8.00 GB
/dev/sdc                         16.00 GB
/dev/sdc1                         1.00 KB
-----------------------------------------------------------------------------
------------------------------------------------------------------
Pool                   Type  Devices      Free      Used     Total
------------------------------------------------------------------
centos_ru1linuxtest02  lvm   2        36.00 MB  31.47 GB  31.50 GB
------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
Volume                           Pool                   Volume size  FS     FS size       Free  Type    Mount point
-------------------------------------------------------------------------------------------------------------------
/dev/centos_ru1linuxtest02/root  centos_ru1linuxtest02     29.87 GB  xfs   29.86 GB   25.08 GB  linear  /
/dev/centos_ru1linuxtest02/swap  centos_ru1linuxtest02      1.60 GB                             linear
/dev/loop0                                                100.00 GB  xfs    9.99 GB    9.99 GB
/dev/sda1                                                 500.00 MB  xfs  496.67 MB  283.60 MB  part    /boot
-------------------------------------------------------------------------------------------------------------------
новые диски присутствуют, но не используются.

добавляем их в LVM
ssm add -p centos_ru1linuxtest02 /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
  Volume group "centos_ru1linuxtest02" successfully extended
ssm add -p centos_ru1linuxtest02 /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.
  Volume group "centos_ru1linuxtest02" successfully extended

и расширяем полезное пространство

ssm resize -s+24G /dev/centos_ru1linuxtest02/root
  Size of logical volume centos_ru1linuxtest02/root changed from 29.87 GiB (7646 extents) to 53.87 GiB (13790 extents).
  Logical volume centos_ru1linuxtest02/root successfully resized.

результат:
ssm list
-----------------------------------------------------------------------------
Device          Free      Used      Total  Pool                   Mount point
-----------------------------------------------------------------------------
/dev/fd0                          4.00 KB
/dev/loop0                      100.00 GB
/dev/loop1                        2.00 GB
/dev/sda                         16.00 GB                         PARTITIONED
/dev/sda1                       500.00 MB                         /boot
/dev/sda2    0.00 KB  15.51 GB   15.51 GB  centos_ru1linuxtest02
/dev/sdb                         24.00 GB
/dev/sdb1    0.00 KB  16.00 GB   16.00 GB  centos_ru1linuxtest02
/dev/sdb2   28.00 MB   7.97 GB    8.00 GB  centos_ru1linuxtest02
/dev/sdc                         16.00 GB
/dev/sdc1    0.00 KB  16.00 GB   16.00 GB  centos_ru1linuxtest02
-----------------------------------------------------------------------------
------------------------------------------------------------------
Pool                   Type  Devices      Free      Used     Total
------------------------------------------------------------------
centos_ru1linuxtest02  lvm   4        28.00 MB  55.47 GB  55.50 GB
------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
Volume                           Pool                   Volume size  FS     FS size       Free  Type    Mount point
-------------------------------------------------------------------------------------------------------------------
/dev/centos_ru1linuxtest02/root  centos_ru1linuxtest02     53.87 GB  xfs   29.86 GB   25.07 GB  linear  /
/dev/centos_ru1linuxtest02/swap  centos_ru1linuxtest02      1.60 GB                             linear
/dev/loop0                                                100.00 GB  xfs    9.99 GB    9.99 GB
/dev/sda1                                                 500.00 MB  xfs  496.67 MB  283.60 MB  part    /boot
-------------------------------------------------------------------------------------------------------------------

df -h
Filesystem                              Size  Used Avail Use% Mounted on
/dev/mapper/centos_ru1linuxtest02-root   54G  4.8G   50G   9% /


вторник, 18 апреля 2017 г.

Дисковые разделы с Parted (CentOS7)

В мемориззз.
после рескана дисков они появляются в разделе SCSI host:
lsscsi -s
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0        -
[2:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda   17.1GB
[2:0:1:0]    disk    VMware   Virtual disk     1.0   /dev/sdb   25.7GB
[2:0:2:0]    disk    VMware   Virtual disk     1.0   /dev/sdc   17.1GB

теперь их нужно подготовить (для последующего расширения LVM раздела).
# parted

(parted) select /dev/sdb
Using /dev/sdb

(parted) print
Disk /dev/sdb: 25.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name  Flags
 1      1049kB  17.2GB  17.2GB

Создаем раздел, так как на этом диске уже есть один раздел, нужно внимательно смотреть на стартовый номер блока - он будет "концом" предыдущего раздела (Start? 17.2GB = End 17.2GB). А конец создаваемого раздела равен максимальной емкости диска (25.8GB), если, конечно, мы хотим использовать диск полностью.
(parted) mkpart
Partition name?  []?
File system type?  [ext2]? ext4
Start? 17.2GB
End? 25.8GB

команды (parted) resizepart может и не быть!

получили 2 раздела:
Number  Start   End     Size    File system  Name  Flags
 1      1049kB  17.2GB  17.2GB
 2      17.2GB  25.8GB  8589MB

Теперь новый диск (/dev/sdc):
parted /dev/sdc
GNU Parted 3.1
Using /dev/sdc

(parted) print
Error: /dev/sdc: unrecognised disk label
Model: VMware Virtual disk (scsi)
Disk /dev/sdc: 17.2GB

у диска нет метки (label), нужно его пометить, а потом разметить:
(parted) mklabel gpt

(parted) mkpart
Partition name?  []?
File system type?  [ext2]? ext4
Start? 1
End? 17.2GB

(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdc: 17.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name  Flags
 1      1049kB  17.2GB  17.2GB

теперь есть разделы /dev/sdb2 (8Gb) и /dev/sdc1 (17Gb)

понедельник, 17 апреля 2017 г.

Linux (CentOS 7) hard disk rescan (add new disk, expand present disk)

В меморизз, как пересканировать диски при добавлении или изменении размера (под виртуализацией).
начальное состояние (два диска в LVM):
lsscsi -s
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0   -
[2:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda   17.1GB
[2:0:1:0]    disk    VMware   Virtual disk     1.0   /dev/sdb   17.1GB

ищем "системный класс" устройств SCSI
grep mpt /sys/class/scsi_host/host?/proc_name
получаем: /sys/class/scsi_host/host2/proc_name:mptspi
это host2

Для добавленного нового диска
echo "- - -" > /sys/class/scsi_host/host2/scan
 проверяем
[root@ru1linuxtest02 mik17]# lsscsi -s
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0        -
[2:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda   17.1GB
[2:0:1:0]    disk    VMware   Virtual disk     1.0   /dev/sdb   17.1GB
[2:0:2:0]    disk    VMware   Virtual disk     1.0   /dev/sdc   17.1GB

Для диска с расширенным местом (диск sdb - он же [2:0:1:0])
echo 1 > /sys/class/scsi_device/2\:0\:1\:0/device/rescan
проверяем
[root@ru1linuxtest02 mik17]# lsscsi -s
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0        -
[2:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda   17.1GB
[2:0:1:0]    disk    VMware   Virtual disk     1.0   /dev/sdb   25.7GB
[2:0:2:0]    disk    VMware   Virtual disk     1.0   /dev/sdc   17.1GB

вторник, 11 апреля 2017 г.

Удаленный вход для MySQL v.5.7.17 (в кластере v.7.5.5) (remote login MySQL)

Смотрим на прослушиваемые сервисы:
netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1054/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1054/sshd
tcp6       0      0 :::3306                 :::*                    LISTEN      1866/mysqld

при попытке зайти удаленно получаем отлуп:
mysqladmin -h _ip_or_hostname_ version
mysqladmin: connect to server at 'ip' failed
error: 'Host 'hostname' is not allowed to connect to this MySQL server'

делается "изнутри" самого сервиса:
коннектимся под правильной учеткой и добавляем пользователя с удаленным доступом
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
flush privileges;

теперь под этим суперпользователем можно залезть в базу откуда угодно. Да здравствует безопасность!

понедельник, 10 апреля 2017 г.

Сброс root пароля в MySQL v.5.7.17 (в кластере v.7.5.5) (Reset root password MySQL)

Reset root password MySQL
mysqladmin version
   Server version          5.7.17-ndb-7.5.5-cluster

Останавливаем сервис mysqld
sudo systemctl stop mysqld

проверяем его статус
systemctl status mysqld
   Active: inactive (dead)

правим файл /etc/my.cnf
в раздел
   [mysqld]
дописываем
   skip-grant-tables
сохраняемся и перезапускаем сервис mysqld
sudo systemctl start mysqld

проверяем статус, когда он будет в состоянии
   Active: active (running)
логинимся клиентом под root'ом

проверяем наличие таблицы
mysql> SELECT user,authentication_string FROM mysql.user;
+-----------+-------------------------------------------+
| user      | authentication_string                     |
+-----------+-------------------------------------------+
| root      | *ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ|
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

пишем наш новый пароль на root'а
update mysql.user set authentication_string=PASSWORD('new_password') where User='root';
флашим привилегии

перезапускаем сервис
sudo systemctl restart mysqld


четверг, 6 апреля 2017 г.

Troubleshooting Старт MariaDB 10.0.30-1.el7 (MySQL) с ошибкой

Сразу после установки на свежую систему не стартовал сервис СУБД. При ручном старте вывалилось:
/etc/init.d/mysql start
Starting MySQL. ERROR!
при проверке журнала сервисов данных о сервисе нет:
journalctl -u mariadb.service
-- No entries --
там же сообщения об ошибках:
journalctl --priority=err
Mar 30 04:42:48 ru1linuxdns01 systemd[1]: Failed to start LSB: start and stop MySQL.
хоть что-то про MySQL.
в журнале системных сообщений есть данные только про установку сервиса:
less /var/log/messages
...
Mar 30 04:27:43 ru1linuxdns01 systemd: Reloading.
Mar 30 04:27:52 ru1linuxdns01 yum[2340]: Installed: MariaDB-server-10.0.30-1.el7.centos.x86_64
Mar 30 04:27:53 ru1linuxdns01 yum[2340]: Installed: MariaDB-compat-10.0.30-1.el7.centos.x86_64
Mar 30 04:27:53 ru1linuxdns01 yum[2340]: Installed: MariaDB-shared-10.0.30-1.el7.centos.x86_64
Mar 30 04:27:54 ru1linuxdns01 yum[2340]: Installed: MariaDB-devel-10.0.30-1.el7.centos.x86_64
Mar 30 04:27:54 ru1linuxdns01 yum[2340]: Erased: 1:mariadb-libs-5.5.52-1.el7.x86_64

в статусе сервиса:
systemctl status mysql.service
● mysql.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2017-03-30 04:42:48 EDT; 19min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 955 ExecStart=/etc/rc.d/init.d/mysql start (code=exited, status=1/FAILURE)
Mar 30 04:42:46 ru1linuxdns01 systemd[1]: Starting LSB: start and stop MySQL...
Mar 30 04:42:46 ru1linuxdns01 mysql[955]: Starting MySQL170330 04:42:46 mysqld_safe Logging to '/var/lib/mysql/ru1linuxdns01.err'.
Mar 30 04:42:46 ru1linuxdns01 mysql[955]: .170330 04:42:46 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Mar 30 04:42:46 ru1linuxdns01 mysql[955]: /usr/bin/mysqld_safe_helper: Cannot change uid/gid (errno: 1)
Mar 30 04:42:48 ru1linuxdns01 mysql[955]: ERROR!
Mar 30 04:42:48 ru1linuxdns01 systemd[1]: mysql.service: control process exited, code=exited status=1
Mar 30 04:42:48 ru1linuxdns01 systemd[1]: Failed to start LSB: start and stop MySQL.
Mar 30 04:42:48 ru1linuxdns01 systemd[1]: Unit mysql.service entered failed state.
Mar 30 04:42:48 ru1linuxdns01 systemd[1]: mysql.service failed.

при этом, файл регистрации ошибок не создался:
less /var/lib/mysql/ru1linuxdns01.err
/var/lib/mysql/ru1linuxdns01.err: No such file or directory

но вот данные об ошибке:
... /usr/bin/mysqld_safe_helper: Cannot change uid/gid (errno: 1)

Поиск по данной проблеме выдал ссылку на проблему с SELinux, которую разработчики MariaDB обещали поправить в версии 10.0.30
Как видно проблему так и не закрыли (о чем есть записи в их Jira).

Решение: отключение SELinux
vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=minimum

reboot




вторник, 4 апреля 2017 г.

Troubleshooting сервер Apache в CentOS 7 не слушает соединение на 80 порту TCP IPv4

Столкнулся недавно с последствием плохо задокументированных изменений в настройках веб сервера Apache. Проявление проблемы:
netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN

на стеке IPv6 порт 80 слушается, но на IPv4 нет. По некоторым не убедительным объяснениям на форумах, говорилось, что теперь, якобы стеки объединили и прочий подобный бред. Проверить можно сразу же:
curl http://web_server_ip
curl: (7) Failed connect to web_server_ip:80; Connection refused

в соединении отказано, на файрволле разрешения есть:
firewall-cmd --list-all
public (active) 
  services: dhcpv6-client ssh
  ports: 3306/tcp 80/tcp

Сам сервис фактически запущен и работает:
sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2017-03-31 10:14:44 MSK; 4min 16s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1181 (httpd)
   Status: "Total requests: 1; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1181 /usr/sbin/httpd -DFOREGROUND
           ├─2300 /usr/sbin/httpd -DFOREGROUND
           ├─2301 /usr/sbin/httpd -DFOREGROUND
           ├─2302 /usr/sbin/httpd -DFOREGROUND
           ├─2303 /usr/sbin/httpd -DFOREGROUND
           └─2304 /usr/sbin/httpd -DFOREGROUND

Mar 31 10:14:43 HST systemd[1]: Starting The Apache HTTP Server...
Mar 31 10:14:44 HST httpd[1181]: systemd[1]: Started The Apache HTTP Server.

Причина:

если раньше в конфигурационном файле Apache достаточно было указать
Listen 80
чтобы сервер слушал порт TCP 80 на всех интерфейсах и стеках протоколов, то теперь для IPv4 необходимо явно указать:
sudo vi /etc/httpd/conf/httpd.conf
 Listen 0.0.0.0:80
sudo service httpd restart

в результате имеем работоспособный сервис:
netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN

четверг, 10 сентября 2015 г.

Просмотр аппаратных данных (для Linux - dmidecode / VMWare - smbiosdump)

Linux:
# dmidecode | less
# dmidecode > dmi.txt

VMWare:
# esxcfg-info -w | less
# smbiosdump | less (почти полный аналог dmidecode)

вторник, 27 августа 2013 г.

Применение правил UDEV без перезагрузки

Взято отсюда: http://www.opennet.ru/base/sys/udev_dynamic.txt.html

...
Каждый раз при подключении или отключении устройства ядро посылает
   событие uevent, которое информирует udev о произошедших изменениях.
   Демон udev считывает правила для своей работы из каталога
   /etc/udev/rules.d/ единожды при своем запуске и затем хранит их в
   памяти. Если правила меняются, добавляются или изменяются, существует
   возможность заставить udev перечитать все правила командой udevadm
   control --reload-rules. В SUSE это может быть также сделано командой
   /etc/init.d/boot.udev reload.
...