Май 27

VNC server Linux Mint 14 old

Итак задача: обеспечить доступ к машине через VNC даже если пользователь не зашел в систему. Использовать только один сеанс.
Решение:

1. Удаляем vino (чтобы не было проблем с занятием порта и т.п.)

sudo apt-get remove vino

2. Устанавливаем x11vnc

sudo apt-get install x11vnc

3. Делаем пароль для доступа к VNC. Тут надо быть очень внимательными вот почему. По-умолчанию VNC не использует туннель shh следовательно информация не шифруется, потому если машина для вас очень важная и критичная, надо погуглить на тему проброса VNC и его портов через туннель SSH

x11vnc -storepasswd

Пароль сохраняется в /home/ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ/.vnc/passwd (где ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ – имя пользователя, под которым вы выполнили команду). Важно выполнить эту команду не из под sudo иначе будут проблемы с правами доступа при логине.

4. Автозагрузка службы x11vnc. Очень важно (для меня) чтобы служба была уже доступна при загрузке Х т.е. пользователь еще не зашел в систему, но доступ к машине уже есть. Почему это важно? Ответ прост. В BIOS включено включение по питанию, следовательно если даже на «сервачке» пропало питание, то как только оно появится он включится сам опять и загрузится. Для этого и нужно иметь доступ уже на уровне GDM.

Редактируем файл /etc/mdm/Init/Default  (не забываем выполнить это из под root или sudo иначе не сохраните изменения)
Добавить в конец файла до exit 0 следующую строку:

/usr/bin/x11vnc -dontdisconnect -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /home/ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ/.vnc/passwd

 Из ключевых параметров стоит обратить внимание на следующие:

-dontdisconnect — не отключать при простоях, что важно если свернули окно сессии
-forever — очень важный параметр. Без него x11vnc после завершения сеанса выключается и больше вы не зайдете пока по ssh опять не запустите его, что не удобно.
-rfbport — указываем на каком порту будет работать наш VNC

Далее сохраняем файл и перегружаем машину.

В некоторых статьях попадается что эту же строку надо добавить в файл /etc/gdm/gdm.conf-custom но его в Mint нет, но все работает и так.

Вот собственно и все, но стоило это долгих поисков в инете 🙂

Записки, чтобы помнить!

P.S. Пока из не решенных вопросов осталось переключение клавиатуры. С вводом русского языка проблем нет ни каких, но вот переключатель правильно реагирует только если переключить мышкой а не комбинацией клавиш. Но для меня это не критично, возможно позже найду в чем загвоздка.

Май 27

Proxmox VE 2 cluster with DRBD (HA, Fencing)

Возникла небольшая задача по созданию бюджетного отказоустойчивого кластера виртуалок.

И так, задача:
Есть 2 двухголовых сервера, на них нужно развернуть ряд сервачков. Нагрузка по итогу не очень большая, можно было бы развернуть по отдельности поделив нагрузку, но есть второе требование: обеспечение резерва и высокой доступности, при полном отсутствии доп.финансирования
Посидев, подумав, было решено все это виртуализировать и кластеризировать.
Изучив предложения быстро понял, что единственным вариантом сделать все это является гипервизор kvm в дистрибутиве Proxmox VE, благо уже вышла версия 2.3 и основные косяки поправлены.
Поводом же написать сообщения явилось то, что полной пошаговой инструкции для развертывания такого кластера с использованием fencing нет в интернете, абзац в одном месте, кусок кода в другом месте, объяснение почему вообще на немецком.

Итак 2 сервера с 2-мя сетевыми картами. Первые из них втыкаем в свитч, вторые соединяем шнурком. Если используются raid, их нужно сконфигурировать по вкусу. Основная задача создать минимум 2 массива — один для самого proxmox, второй под общее хранилище. Параметры общего хранилища должны быть одинаковы.
Подготовка закончена.
Устанавливаем дистрибутив. Установка стандартна — лицензия, далее, ОК, выбрать часовой пояс, указать пароль root, электронную почту, выбрать диск для установки, забить настройки сетевого интерфейса.
Сеть настраивается только на статику (и это правильно для такой задачи) и только для первого интерфейса. Плюс к этому сетевое имя обязательно с указанием домена (fqdn).
Возьмем для примера:

первый узел — node01.loc
ip — 192.168.0.100
mask — 255.255.255.0
gateway — 192.168.0.1
dns — 192.168.0.1

Аналогично второй узел — node02.loc
ip — 192.168.0.200
mask — 255.255.255.0
gateway — 192.168.0.1
dns — 192.168.0.1

Все, на этом установка системы заканчивается, начинается работа.

Перво-наперво синхронизировать время. Если есть в сети сервер точного времени (контроллер домена например) указываем его и синхронизируемся. Если его нет, то вся надежда на pool.ntp.org
На обоих узлах:
echo «server ntp.company.lan» >> /etc/ntp.conf
/etc/init.d/ntp restart
ntpdc -p

# Правим /etc/hosts

для node01 добавляем строчку:
10.10.10.2 node02 node02.loc
для node02
10.10.10.1 node01 node01.loc

# Обновляемся
aptitude update && aptitude full-upgrade

Далее настраиваем сеть на вторых интерфейсах серверов. Это можно сделать как из терминала, так и из веб-интерфейса proxmox ( https://192.168.0.100:8006 для node01 и https://192.168.0.200:8006 для node02 соответственно). Заходим с логином root  и паролем, указанным при установке, слева выбираем имя ноды, в главном окне вкладку Network, выделяем интерфейс eth1, Edit. Указываем адрес 10.10.10.1, маску 255.255.255.252, ставим галку на Autostart. Для второго узла повторяем процесс с ip 10.10.10.2

Перезагружаемся. Логинимся. Проверяем, что узлы видят друг друга
# на первом узле
ping node02
# на втором
ping node01

Если возникли проблемы, проверяем настройки сети, меняем патчкорд и т.д.

Создаем кластер
На узле node01:
pvecm create cluster01 #cluster01 — имя кластера, поменять потом невозможно!
pvecm status # проверяем, что все хорошо
На узле node02:
pvecm add 10.10.10.1 # добавляем node2 в наш кластер

Кластер создан.

Беремся за drbd (к примеру наше хранилище будет располагаться на /dev/sdb:
На обоих узлах:
fdisk /dev/sdb
n -> p -> 1 -> enter -> enter
t -> 8e
w

Раздел мы создали.
Можно ставить drbd8-utils, но не тут то было. Версия drbd в ядре 8.3.10, а в репозитории drbd8-utils версии 8.2.7, что очень не хорошо. Будем компелять, благо это недолго:
cd ~
apt-get install git-core git-buildpackage fakeroot debconf-utils docbook-xml docbook-xsl dpatch xsltproc autoconf flex
mkdir drbd
cd drbd
git clone http://git.drbd.org/drbd-8.3.git
cd drbd-8.3
git checkout drbd-8.3.10
dpkg-buildpackage -rfakeroot -b -uc
cd ..
dpkg -i drbd8-utils_8.3.10-0_amd64.deb

На один установили. Можно повторить на втором, или перетащить полученный пакет и просто его установить. Решать Вам.
Разбираемся с конфигами drbd:
На обоих:
nano /etc/drbd.d/global_common.conf
Все удаляем и пишем:
global { usage-count no; }
common { syncer { rate 30M; } }

nano /etc/drbd.d/r0.res
resource r0 {
protocol C;
startup {
wfc-timeout 0; # non-zero might be dangerous
degr-wfc-timeout 60;
become-primary-on both;
}
net {
cram-hmac-alg sha1;
shared-secret «oogh2ouch0aitahNBLABLABLA»;
allow-two-primaries;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
on node01 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.10.10.1:7788;
meta-disk internal;
}
on node02 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.10.10.2:7788;
meta-disk internal;
}
}

Стартуем на обоих узлах drbd
/etc/init.d/drbd start
drbdadm create-md r0
drbdadm up r0

!!! Только на одном узле (node01):  !!!
drbdadm — —overwrite-data-of-peer primary r0

watch cat /proc/drbd #наблюдаем пока синхронизируются узлы до Primary/Primary UpToDate/UpToDate

На обоих узлах:
nano /etc/lvm/lvm.conf
# Меняем строчку filter = [ «a/.*/» ] на
filter = [ «r|^/dev/sdb1|», «a|^/dev/sd|», «a|^/dev/drbd|» ,»r/.*/» ]

!!! Только на одном узле (node01):  !!!
pvcreate /dev/drbd0
pvscan # in order to check
vgcreate drbdvg /dev/drbd0 # имя drbdvg можете поставить свое

Далее идем в интерфейс proxmox
Data Center > Storage > Add > LVM group
ID: drbd
Volume group: drbdvg
Shared: yes

ID выбираете сами, поменять невозможно.

Уже можно создавать виртуальные машинки (обязательно в закладке hdd укажите storage: drbdvg).

Можно запускать и наслаждаться миграцией.

Если Вам этого достаточно, дальше можно не читать.
Но мне необходим был HA, поэтому мучения продолжаются.

Создаем конфиг кластера (node01):
cp /etc/pve/cluster.conf /etc/pve/cluster.conf.new

я привел его к такому виду:

cat /etc/pve/cluster.conf
<?xml version=»1.0″?>
<cluster config_version=»10″ name=»cluster»>
<cman expected_votes=»1″ keyfile=»/var/lib/pve-cluster/corosync.authkey» two_node=»1″/>
<fencedevices>
<fencedevice agent=»fence_manual» name=»human»/>
</fencedevices>
<clusternodes>
<clusternode name=»node01″ nodeid=»1″ votes=»1″>
<fence>
<method name=»single»>
<device name=»human» nodename=»node01″/>
</method>
</fence>
</clusternode>
<clusternode name=»node02″ nodeid=»2″ votes=»1″>
<fence>
<method name=»single»>
<device name=»human» nodename=»node02″/>
</method>
</fence>
</clusternode>
</clusternodes>
</cluster>

# config_version=»10″ обязательно увеличиваем каждый раз, когда меняем содержимое

Что мы здесь видим:
Устройство fence — ручной переключатель (возможны другие варианты, от упса до коммутатора).
Fence — в общем это такой механизм, который гарантированно вырубит отвалившийся узел, чтобы не допустить возможности их параллельной работы (что в случае drbd однозначно приведет к поломке синхронизации дисков и ручного разгребания каши на них).
В этом примере гарантом изоляции является человек, что тоже не очень, но оставим это на будущее.

Идем в интерфейс и применяем настройки кластера: Datacenter -> HA -> Activate

Правим, удалив комментарий в последней строчке на обоих узлах:
nano /etc/default/redhat-cluster-pve
выполним на обоих узлах:
fence_tool join
Наш домен fence готов.

Если есть вирт.машинка подключаем ее к HA кнопкой add (указываем id машинки). Если нет, создаем и подключаем.
Почти все. Идем в сервер(node01) -> Services запускаем службу RGManager. Должна запуститься наша машинка. Повторяем запуск RGManager на node02.
Все. Можем гасить node01 машинка переберется на node02.

!!! Обязательно !!!
Если у вас к vm подключен инсталяционный cd, или подключена консоль, отключитесь, иначе кина не будет.

P.S.
Для ручного fencin-га:
Запускаем vn на node01
Гасим node01
Идем на node02
Говорим, что 100% уверены, что узел 1 не работает: fence_ack_manual node01
Говорим, что на 1000500% уверены введя «absolutely»
машинка заведется на node02

Вот такие пироги.

 

Май 27

Java+Chrome

Поставил себе на сервачок ProxMox, всё бы ничего но управляется он с вебморды на джаве которая…. Сама вебморда работала, пела и летала, пока дело не дошло до джавовской VNC консоли… вот она и вешала весь интерфейс… Победил я это дело так:

PPA-репозиторий поддерживает Ubuntu 12.10, 12.04, 11.10, 11.04, 10.10 и 10.04, а также соответствующие версии Linux. Чтобы добавить PPA и установить Oracle Java 8 (пакет содержит и JDK8, и JRE8), используйте следующие команды в вашем терминале:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

После установки, вы можете выполнить «java -version» в вашем терминале и получить что-то такое:

andrei@andrei-desktop:~$ java -version
java version «1.8.0-ea»
Java(TM) SE Runtime Environment (build 1.8.0-ea-b54)
Java HotSpot(TM) Server VM (build 24.0-b21, mixed mode)

Или «javac -version»:

andrei@andrei-desktop:~$ javac -version
javac 1.8.0-ea

После сих не сложных манипуляций консоль взлетело, но все равно осталось НО. поскольку я юзаю браузер Chrome — При запуске консоли выводилось сообщение что версия джава устарела и просило ткнуть кнопочку для запуска…

Поскольку мы ленивые, то добавляем к ярлыку запуска хрома параметр «—allow-outdated-plugins» и получам Щастие 🙂

Май 27

Choosing LINUX distributions …

Отойдя на несколько лет от Nix платформ, наконец то долгожданное возвращение и… куча нового ))) До этого сидел на FreeBSD, но решил разнообразить быт и пересесть на Linux.

Начал с выбора дистра для десктопа.. в качестве испытуемых были приняты FEdora, Suse и SentOS в качестве представителей шапочных, Debian, Ubuntu и Mint в качестве представителей ветки Deb 🙂 Это не все протестированные, это уже отфильтрованные… Вобще их пробовалось множество… Alt, Arh, Knoppix и т.д. на них я останавливаться не буду, мне они не подошли по тем или иным причинам…

Итак выделенные мной плюсы и минусы:

Fedora: на момент написания стабл версия — 17, текущая — 18. В 17 версии всё ооочень понравилось, полностью рекомендую к использованию!!! действительно достойный дистриб, но ввиду того что хотелось таки «свежачка» погнали дальше… 18 версия стала неплохо, танцы с бубном по железу не значительные… в целом всё понравилось пока не дошло до мелочей…. как оказалось 18 федору шапковцы решили перенавернуть 🙁 банальная задача запуска ssh сервера обернулась несколькочасовым курением манов… В итоге бела снесена к  …беням…

SentOS: очень достойный дистриб для сервов, для десктопа некоторые мелочи в корне не устроили, зацикливать внимание на них не буду, т.к. это собственные «тараканы» не боле того. + та же болезнь как и у 17 федоры- хоцца свеженького )

Suse: немецкое качество — эта фраза в целом характеризует базовый дистриб с KDE, на альтернативных столах к сожалению не так все замечательно, в виду не желания грузить комп КДЕ-хой отправлено в утиль вслед за предыдущими…

В целом отзывы по rpm ветке очень положительные… в качестве стабл дистра для юзверей в офисе где всё годами может работать без изменений самое оно!

Debian — что говориться прилёг к душе… чуть попозжа обязательно именно на него и перелезу… снесён ток ввиду того, что сразу после установки требуется много допилов напильником для комфортной работы…  а время уже поджимало…

Ubuntu — ось позиционирует себя как дружелюбная к юзверям…. всецело оправдывает своё заявление… но не понравилось упрощения в убунте связанные с безопасностью…. да и ещё один момент связывающий все вышеописанные дистрибы, о котором чуть ниже…

Итак… есть ещё один момент по всем вышеописанным дистрам…. куда катится мир? :-)) Gnom3 и Uniti прикольно но уныло… отсутствие мультиоконности убивает. KDE — (ИМХО) громоздко и наляписто… кумарит миллион виджетов вечно разбегающихся и т.д. LXDE — вроде как понравилось, но нехватка удобностей по базе… для быстрого старта не есть гуд (к примеру без вылазки в конф файлы раб стол на 2 мони не растянешь) FXCe вроде все ничего, но не лежит к нему душа хоть ты тресни! И тут на выручку пришел:

Mint — про то какой он хороший/плохой мона прогуглить от себя скажу милион плюсов за интерфейс Mate(вспомним гном2) и замечательные возможности из коробки…. именно на нём я и остановился.

С чем себя и поздравляю!