Tableau: очистка места с tabadmin cleanup и обновление версии 10.2 до 10.5

Автор: | 14/01/2018
 

Итак – воскресенье, тот единственный день в неделю, когда можно остановить наш production Tableau сервер.

Задач на сегодня целых две:

  1. сейчас Tableau установлен на раздел с 128 ГБ места, из которых свободных осталось 3.9 (уже 13 – проекты почистили свои данные немного) – надо решить проблему с местом, используем tabadmin cleanup
  2. и вторая задача – обновить версию Tableau с 10.2 на 10.5

Сервер не перезапускался больше года, потому первый stop-start будет самым… волнительным 🙂 (забегая наперёд, таки да – небольшой повод был).

Сам Tableau запущен на AWS EC2 с Windows Server 2012, который находится за AWS Load Balancer. Никаких стеков CloudFormation, никакого мониторинга, никакой автоматизации, никаких бекапов. Но это временно – проект только недавно ко мне пришёл.

Кстати – начиная с версии Tableau 10.5 его можно запускать на Linux, так что скоро будет и миграция, и сразу уже и автоматизация, и стеки с бекапами и дамами лёгкого поведения.

План на сегодня следующий.

tabadmin cleanup

  1. бекапим Tableau
  2. стопаем Tableau
  3. момент истины – запускаем Tableau (тут хочется именно выполнить stop-start, а не restart, хотя разницы вроде и никакой)
  4. если всё ОК – стопаем снова
  5. выполняем cleanup (при необходимости сохранить старые логи – сначала сделайте ziplogs на отдельный диск) для удаления временных файлов и логов
  6. запускаем
  7. выполняем cleanup ещё раз для очистки базы данных

Обновление версии

  1. стопаем Tableau
  2. делаем ещё один бекап
  3. стопаем EC2 – создаём AWS AMI
  4. запускаем старый EC2, он пока остаётся за Load Balancer и обслуживает пользователей
  5. запускаем новый EC2 из созданного AMI
  6. проверяем Tableau на новом интансе через localhost
  7. обновляем версию на новом EC2
  8. проверяем, если ок – подключаем его к Load Balancer
  9. отключаем от Load Balancer старый интанс (сам интанс остаётся запущенным)
  10. проверяем работу нового инстанса через Load Balancer
  11. если всё ОК – оставляем старый работать на неделю-две, отключенным от Load Balancer, потом убиваем

Поехали.

tabadmin cleanup

backup

Документация по backupтут>>>, пример выполнения – тут>>>.

Логинимся на сервер, запускаем создание бекапа. Конфигов с данными в бекапе у нас будет 12-13 гиг, бекапится будет долго – можно спокойно идти и пить чай:

[simterm]

> cd D:\Tableau\'Tableau Server'\10.2\bin
> .\tabadmin.bat backup E:\tabbak_before_cleanup -d -v

[/simterm]

Запустил создание бекапа в 12.55, закончился он в 13.30:

stop

Останавливаем сервер (несколько минут):

[simterm]

> .\tabadmin.bat stop

[/simterm]

start

Запускаем, и молимся:

[simterm]

PS D:\Tableau\Tableau Server\10.2\bin> .\tabadmin.bat start
===== Starting service...
===== Unable to determine if all components of the service started properly. See "tabadmin.log" for more information.
Status: RUNNING
'Tableau Server Coordination Service 0' (20016) is running.
'Tableau Server Search and Browse 0' (28172) is running.
'Tableau Server Tabadmin Service 0' (12324) is running.
'Tableau Server Data Engine 0' (28964) is running.
'Tableau Server Application Server 0' (19276) is running.
'Tableau Server Backgrounder 0' (21684) is running.
'Tableau Server Backgrounder 1' (28712) is running.
'Tableau Server CacheServer 0' (15536) is running.
'Tableau Server CacheServer 1' (22136) is running.
'Tableau Server Dataserver 0' (21032) is running.
'Tableau Server Dataserver 1' (11212) is running.
'Tableau Server Vizqlserver 0' (20688) is running.
'Tableau Server Vizqlserver 1' (27436) is running.
'Tableau Server Gateway' (24000) is running.
'Tableau Server Cluster Controller' (26496) is running.
'Tableau Server Repository' (8392) is running (Active Repository).
'Tableau Server File Store' (13564) is running.

[/simterm]

Отлично:

===== Unable to determine if all components of the service started properly. See “tabadmin.log” for more information.

И – ожидаемо, ошибка:

[simterm]

$ curl -I https://tableau.domain.com/
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity
Connection: keep-alive

[/simterm]

Вот тут сейчас взгрустнулось… Да и в D:\Tableau\Tableau Server\logs\tabadmin.log – ошибок нет, только “Successful“…

Но! Да и было уже такое на Dev – после рестарта Tableau надо несколько минут, что бы “ожить” – на самом деле всё ОК:

[simterm]

$ curl -I https://tableau.domain.com/
HTTP/1.1 200 OK

[/simterm]

Хорошо, славай йайкам – поехали дальше.

cleanup

Следующий шаг – выполнить cleanup.

Можно выполнить одной командой – tabadmin cleanup --restart, но я предпочту по очереди, сам.

Сначала выполним полный cleanup, для удаления временных файлов и логов, потом cleanup при запущенном сервере – для очистки базы данных.

Ещё раз останавливаем сервер:

[simterm]

PS D:\Tableau\Tableau Server\10.2\bin> .\tabadmin.bat stop
===== Stopping service...
   -- Service stopped successfully

[/simterm]

Проверяем статус:

[simterm]

PS D:\Tableau\Tableau Server\10.2\bin> .\tabadmin.bat status
Status: STOPPED

[/simterm]

Проверяем свободное место, спасибо нагугленному примеру решению для PowerShell:

[simterm]

PS D:\Tableau\Tableau Server\10.2\bin> Get-WMIObject Win32_Logicaldisk -filter "deviceid='D:'" | Select PSComputername,D
eviceID, @{Name="SizeGB";Expression={$_.Size/1GB -as [int]}}, @{Name="FreeGB";Expression={[math]::Round($_.Freespace/1GB
,2)}}

PSComputerName                DeviceID                                             SizeGB                        FreeGB
--------------                --------                                             ------                        ------
WIN-8OO1QRDVPAL               D:                                                      128                         13.92

[/simterm]

FreeGB == 13.92.

Выполняем cleanup:

[simterm]

PS D:\Tableau\Tableau Server\10.2\bin> .\tabadmin.bat cleanup
===== The service is not running, so http_request logs will not be purged.
===== Removing service logs.
===== Truncating coordination transaction logs.
===== Removing tempdir contents at D:/Tableau/Tableau Server/data/tabsvc/temp

[/simterm]

Ещё раз проверяем свободное место на D::

[simterm]

PS D:\Tableau\Tableau Server\10.2\bin> Get-WMIObject Win32_Logicaldisk -filter "deviceid='D:'" | Select PSComputername,D
eviceID, @{Name="SizeGB";Expression={$_.Size/1GB -as [int]}}, @{Name="FreeGB";Expression={[math]::Round($_.Freespace/1GB
,2)}}

PSComputerName                DeviceID                                             SizeGB                        FreeGB
--------------                --------                                             ------                        ------
WIN-8OO1QRDVPAL               D:                                                      128                         62.87

[/simterm]

Почти 63 ГБ свободно, т.е. удалено почти 50 ГБ временных файлов и логов – отлично.

Запускаем Tableau:

[simterm]

PS D:\Tableau\Tableau Server\10.2\bin> .\tabadmin.bat start
===== Starting service...
===== Unable to determine if all components of the service started properly. See "tabadmin.log" for more information.
Status: RUNNING
'Tableau Server Coordination Service 0' (2384) is running.
...
'Tableau Server File Store' (21896) is running.

[/simterm]

Ошибка, кстати, на месте, но – теперь уже почти спокойно ждём 5-10 минут, пока он заведётся:

[simterm]

$ curl -I https://tableau.domain.com/
HTTP/1.1 200 OK

[/simterm]

Выполняем cleanup ещё раз, для очистки базы данных (на самом деле чистить уже было нечего):

[simterm]

PS D:\Tableau\Tableau Server\10.2\bin> .\tabadmin.bat cleanup
===== Cleaning entries from http_requests log older than 7 days
   -- Deleted 0 rows
===== The service is running. Files in use will not be cleaned up and coordination transaction logs will be truncated, b
ut not removed.  Use the --restart command to have cleanup stop and restart Tableau Server.
===== Removing service logs.
===== Truncating coordination transaction logs.
===== Not removing tempdir contents, as the service is running

[/simterm]

Проверяем место ещё раз – но на этот раз особо ничего не изменилось, те же 63 ГБ:

OK – с этим закончили, переходим к обновлению.

Обновление версии Tableau

Документация по обновлению – тут>>>.

У нас Tableau находится в не-дефолтном каталоге, потому ещё будет полезно глянуть страницу тут>>>.

Есть видео-туториал тут>>>, потребует регистрацию (ну вот нахрена?), правда там про версию 8, но суть особо не меняется.

Вообще процесс обновления выглядит следующим образом:

  1. удаление текущей версии приложения из системы через Панель управления
  2. установка новой версии из установочного файла

Напомню – Tableau запущен на AWS EC2 c4.2xlarge с Windows, сам интанс находится за AWS Load balancer.

Шаги дальше:

  1. стопаем Tableau
  2. делаем ещё один бекап
  3. стопаем EC2 – создаём AWS AMI
  4. запускаем старый EC2, он пока остаётся за Load Balancer и пока продолжает обслуживать пользователей
  5. запускаем новый EC2 из созданного AMI
  6. проверяем Tableau на новом интансе через localhost
  7. обновляем версию на новом EC2
  8. проверяем, если ок – подключаем его к Load Balancer
  9. отключаем от Load Balancer старый интанс (сам интанс остаётся запущенным, но Tableau остановим)
  10. проверяем работу нового инстанса через Load Balancer
  11. если всё ОК – выключаем старый, оставляем на неделю-две отключенным от Load Balancer, потом убиваем (хотя тут вопрос с данными, которые обновятся за это время – в случае, если придётся запускать старый интанс – сможет ли он подтянуть и переварить все изменения за это время?…)

stop

Останавливаем Tableau:

[simterm]

> .\tabadmin.bat stop

[/simterm]

backup

Создаём ещё один бекап:

[simterm]

PS D:\Tableau\Tableau Server\10.2\bin> .\tabadmin.bat backup E:\tabbak_before_version_upgrade -d -v

[/simterm]

Создание AMI

Останавливаем EC2:

Создаём AMI:

Тут диски:

  • /dev/sda: – корневой диск под Windows
  • /dev/xvdf: диск с Tableau, D:
  • /dev/xvdg: диск с бекапами (можно было бы его не добавлять в AMI, но пусть будет, что бы в случае чего не таскать бекапы между интансами, тем более scp тут нет)

Ждём завершения создания AMI:

По завершению – запускаем старый EC2, заходим, проверяем Tableau лицензии – запросил повторную регистрацию (данные в форму подставились автоматом):

И пока оставляем этот EC2 в покое – все дальнейшие действия выполняем на новом интансе.

Запуск нового EC2

Из созданного AMI запускаем новый EC2 интанс:

Настройки сети устанавливаем аналогичные старому инстансу:

Диски будут добавлены автоматом из AMI:

Добавляем теги, обязательно хотя бы Name:

Берём ключи со старого сервера, у нас их два:

Тут первый ключ – основная лицензия, а второй – дополнительная, на 15 пользователей (и с ней как раз случилась небольшая заминка, см. дальше).

Добваляем их на новом сервере:

Вводим основной ключ:

Повторяем регистрацию, как на старом сервере:

Добавляем вторую лицензию, и:

Упс.

Но на самом деле – это лицензия на дополнительных пользователей, на работу сервера не повлияет – поехали дальше.

Логинимся через localhost, проверяем:

Всё ОК.

Upgrade

Загружаем новую версию со страницы загрузок:

Delete current

Через Панель управления Windows – удалем текущую установку Tableau (все данные проектов останутся на месте):

Ждём завершения удаления:

Теперь в папаке с версией 10.2 почти ничего не осталось.

Установка новой версии

Запускаем установку из загруженного файла, у нас Tableau на диске D: – во время установки указываем путь до каталогов с версиями:

Всё ОК – появляется каталог с новой версией, 10.5:

Во время установки – заново выполняем регистрацию (на этот раз ключи не запросило), завершаем установку в окне настроек:

Тут тоже ничего менять не потребовалось, ожидаем завершения копирования данных в новую установку Tableau и перезагружаем машину:

Проверяем:

Проверяем версию:

Сравниваем данные на текущем Production и новом сервере:

Всё отлично.

Завершение

Так как возникла проблема с активацией лицензии для дополнительных пользователей – то новый сервер пока выключаем, что бы по расписанию не внёс изменений в data sources проектов, решаем вопрос с лицензией, отключаем старый сервер, подключаем новый (или повторяем весь процесс заново, т.к. в локальной базе PostgreSQL не будет изменений, сделанных за это время пользователями) к AWS Load Balancer – и процесс обновления версии завершён.