1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/liwooood-Tars

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Install.md 33 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 13:37 8f29851

Оглавление

Этот документ посвящён процессу установки всего Tars-фреймворка на одной серверной машине. Цель — предоставить пользователям общее представление о том, как происходит развертывание, запуск и тестирование Tars.

Для использования в продакшне принципы развертывания остаются такими же, но требуется больше внимания к обеспечению отказоустойчивости и восстановлению после аварий в распределённых системах. Для получения дополнительной информации можно присоединиться к QQ-группе по техническому взаимодействию Tars: 579079160.

1. Зависимые окружения

Программа Требования
Linux ядро версия: 2.6.18 или выше (операционная система)
GCC версия: 4.1.2 или выше, glibc-devel (язык C++)
Bison версия: 2.5 или выше (язык C++)
Flex версия: 2.5 или выше (язык C++)
CMake версия: 2.8.8 или выше (язык C++)
Resin версия: 4.0.49 или выше (система управления web)
Java JDK версия: Java (минимум 1.6), web система управления (минимум 1.8)
Maven версия: 2.2.1 или выше (web система управления, язык Java)
MySQL версия: 4.1.17 или выше (выполнение фреймворка)
RapidJSON версия: 1.0.2 (язык C++)

Требования к серверу: одна обычная машина с установленной операционной системой Linux.## 1.1. Установка glibc-devel

Если glibc-библиотека разработчика ещё не установлена, её следует установить.

Например, в CentOS это делается следующей командой:

yum install glibc-devel

1.2. Установка CMake

CMake является средой компиляции, необходимой для работы Tars-фреймворка.

Скачайте исходники CMake 2.8.8, распакуйте архив:

tar zxvf cmake-2.8.8.tar.gz

Перейдите в директорию:

cd cmake-2.8.8

Выполните следующие шаги (выберите подходящий):

./bootstrap (если CMake ещё не установлен, используется скрипт bootstrap)
make
make install (если make install завершается ошибкой, возможно, нужны права root для установки)

1.3. Установка Resin

Resin рекомендован как среда выполнения системы управления Tars (если Java JDK ещё не установлен, его следует установить, подробнее см. раздел 2.1).

Например, для Resin 4.0.49, установленного в /usr/local/resin:

cd /usr/local/
tar zxvf resin-4.0.49.tar.gz
ln -s resin-4.0.49 resin

1.4. Установка MySQL

Перед установкой убедитесь, что в системе установлены ncurses и zlib. Если нет, выполните следующие команды:

yum install ncurses-devel
yum install zlib-devel

Установите каталог для установки и переключитесь на пользователя root:

cd /usr/local
mkdir mysql-5.6.26
chown ${обычный\_пользователь}:${обычный\_пользователь} ./mysql-5.6.26
ln -s /usr/local/mysql-5.6.26 /usr/local/mysql
```Используйте метод установки с использованием UTF-8.
Скачайте исходный код MySQL (в данном случае используется версия mysql-5.6.26) и установите его с использованием UTF-8. После распаковки скомпилируйте:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.26 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci make make install

**Обратите внимание, что при использовании TARS для разработки на C++, рекомендуется использовать статическую библиотеку MySQL, скомпилированную из исходного кода, чтобы избежать необходимости установки динамической библиотеки MySQL на всех серверах.**Для компиляции и установки TARS разработки на C++ вам следует пройти вышеописанные шаги.

Если вы хотите создать среду выполнения TARS, вам потребуются следующие шаги. Переключитесь на пользователя root и настройте MySQL.
```shell
yum install perl
cd /usr/local/mysql
useradd mysql
rm -rf /usr/local/mysql/data
mkdir -p /data/mysql-data
ln -s /data/mysql-data /usr/local/mysql/data
chown -R mysql:mysql /data/mysql-data /usr/local/mysql/data
cp support-files/mysql.server /etc/init.d/mysql
**Если в директории /etc/ существует my.cnf, удалите этот конфигурационный файл**
yum install -y perl-Module-Install.noarch
perl scripts/mysql_install_db --user=mysql
vim /usr/local/mysql/my.cnf

Пример конфигурации my.cnf:

[mysqld]

# Удалите начальный # и установите размер памяти для наиболее важного кеша данных в MySQL. Начните с 70% от общего объема оперативной памяти для сервера, используемого только для MySQL, а для других — с 10%.
innodb_buffer_pool_size = 128M

# Удалите начальный # для включения очень важной опции целостности данных: логирование изменений в двоичный журнал между резервными копиями.
log_bin

# Эти параметры часто используются, удалите начальный # и установите значения, как требуется.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
# port = .....
# server_id = .....
socket = /tmp/mysql.sock

bind-address={ваш_ip_адрес}

# Удалите начальный # для установки опций, полезных для серверов отчетов. По умолчанию сервер работает быстрее для транзакций и быстрых SELECT. Адаптируйте размеры, как требуется, экспериментируйте, чтобы найти оптимальные значения.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Обратите внимание, что bind-address следует заменить на IP-адрес машины, на которой выполняется развертывание

Запустите MySQL

service mysql start
chkconfig mysql on

Остановите MySQL

service mysql stop

Добавьте путь bin MySQL

vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
export PATH

Измените пароль root (используйте пароль root)

./bin/mysqladmin -u root password 'root@appinside'
./bin/mysqladmin -u root -h ${hostname} password 'root@appinside'

Обратите внимание, что ${hostname} следует заменить на имя вашей машины, которое можно найти в файле /etc/hosts

Добавьте пути к библиотекам MySQL

vim /etc/ld.so.conf
/usr/local/mysql/lib/
ldconfig

========================

Настройка репликации MySQL может быть выполнена с помощью руководства, доступного онлайн.

Присваивание прав доступа для мастера:

GRANT REPLICATION SLAVE ON *.* TO 'mysql-sync'@'%' IDENTIFIED BY 'sync@appinside'

Настройка репликации для слейва:

CHANGE MASTER TO MASTER_HOST='${backup machine ip}',MASTER_USER='mysql-sync',MASTER_PASSWORD='sync@appinside', MASTER_LOG_FILE='iZ94orl0ix4Z-bin.000004', MASTER_LOG_POS=611;
STOP SLAVE;
START SLAVE;
SHOW MASTER STATUS\G;
SHOW SLAVE STATUS\G;

Обратите внимание, что ${backup machine ip} следует заменить на IP-адрес резервной машины

2. Установка среды разработки TARS

2.1. Установка среды разработки для системы управления сайтом

В качестве примера рассмотрим Linux:

Установите JDK Java, распакуйте и установите

Настройте окружение

vim /etc/profile

Добавьте следующие строки:

export JAVA_HOME=${JDK источник}
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH

Выполните команду

source /etc/profile

Проверка

java -version
Скачайте Maven, распакуйте и установите
Настройте переменные окружения

vim /etc/profile

Добавьте следующие строки:

export MAVEN_HOME=${Maven источник} export PATH=$PATH:${MAVEN_HOME}/bin

Выполните команду

source /etc/profile

Проверка

mvn -v

**Обратите внимание, если требуется, измените расположение локального репозитория Maven и источник Maven**

## 2.2. Установка среды разработки для Java-фреймворков

Настройка окружения для JDK Java и Maven аналогична настройке для системы управления сайтами

**Обратите внимание, перед установкой Java-фреймворка убедитесь, что ваша машина имеет доступ к интернету, а также измените конфигурационный файл `setting.xml` в директории `conf` Maven, используя миросервис Maven из Китая, подробные инструкции можно найти в Интернете**

Скачайте исходный код TARS, перейдите в каталог исходного кода Java и установите его в локальный репозиторий

mvn clean install mvn clean install -f core/client.pom.xml mvn clean install -f core/server.pom.xml


Создание веб-проекта
С помощью IDE или Maven создайте Maven веб-проект,
в данном примере используется Eclipse, File -> New -> Project -> Maven Project -> `maven-archetype-webapp`, затем введите `groupId` и `artifactId`, после завершения создания проект можно импортировать через Eclipse, структура директорий следующая:

![tars](docs/images/tars_java_evn1.png)Добавление конфигураций зависимостей Maven
При использовании фреймворка Tars требуются зависимости от библиотек, предоставляемых фреймворком, а также плагинов. В файле pom.xml проекта следует добавить следующие конфигурации зависимостей.
Конфигурация зависимостей фреймворка![tars](docs/images/tars_java_evn2.png)

Конфигурация зависимостей плагинов

![tars](docs/images/tars_java_evn3.png)

## 2.3. Установка среды разработки C++
Скачайте исходный код Tars, затем перейдите в каталог `cpp/thirdparty` и выполните скрипт `thirdparty.sh` для загрузки зависимости `rapidjson`.

Затем перейдите в каталог исходного кода `cpp/build`.

cd {$source_folder}/cpp/build chmod u+x build.sh ./build.sh all


**По умолчанию при компиляции используются пути к библиотекам MySQL разработки: путь include — `/usr/local/mysql/include`, путь lib — `/usr/local/mysql/lib/`. Если пути установки библиотек MySQL разработки отличаются от указанных значений, то потребуется изменение путей MySQL в файле `CMakeLists.txt` в каталоге `build`.**

Если требуется повторная компиляция,

./build.sh cleanall ./build.sh all


Переключитесь на пользователя `root`, создайте каталог установки.

cd /usr/local mkdir tars chown ${пользователь}:${пользователь} ./tars/


Установка

cd {$source_folder}/cpp/build ./build.sh install или make install

**По умолчанию путь установки равен `/usr/local/tars/cpp`.**

**Для изменения пути установки:**

Необходимо изменить пути установки в файле CMakeLists.txt в каталоге build. Необходимо изменить путь TARS_PATH в файле makefile.tars в каталоге servant/makefile. Необходимо изменить путь DEMO_PATH в файле create_tars_server.sh в каталоге servant/script.

## 3.1. Добавление пользователя
```sql
grant all on *.* to 'tars'@'%' identified by 'tars2015' with grant option;
grant all on *.* to 'tars'@'localhost' identified by 'tars2015' with grant option;
grant all on *.* to 'tars'@'${hostname}' identified by 'tars2015' with grant option;
flush privileges;

Обратите внимание, что ${hostname} необходимо заменить на имя вашей машины, которое можно получить с помощью просмотра файла /etc/hosts

3.2. Создание базы данных

SQL-скрипты находятся в директории cpp/framework/sql, необходимо изменить информацию о развертывании IP-адреса.

sed -i "s/192.168.2.131/${ваш_машинный_ip}/g" `grep 192.168.2.131 -rl ./*`
sed -i "s/db.tars.com/${ваш_машинный_ip}/g" `grep db.tars.com -rl ./*`

Обратите внимание, что IP-адрес 192.168.2.131 был использован командой разработки TARS для тестового развертывания сервиса. Замените его на адрес вашего развертывания базы данных, но не используйте 127.0.0.1. Обратите внимание, что db.tars.com — это адрес размещения базы данных для фреймворка TARS. Замените его на адрес вашего размещения базы данных.``` chmod u+x exec-sql.sh ./exec-sql.sh

**Обратите внимание, чтобы заменить `${ваш_ip_машины}$` на IP машины размещения.**

**Если выполнение скрипта `exec-sql.sh` завершается ошибкой, вам потребуется изменить пароль пользователя `root` в базе данных внутри скрипта.**

После выполнения скрипта будут созданы три базы данных: `db_tars`, `tars_stat` и `tars_property`.

База данных `db_tars` является основной базой данных для работы фреймворка и включает информацию о размещении сервисов, шаблонах сервисов и конфигурациях сервисов;

База данных `tars_stat` используется для хранения данных мониторинга сервисов;

База данных `tars_property` используется для хранения данных мониторинга свойств сервисов;

# 4. Установка среды для работы с фреймворком TARS <a id="chapter-bk-4"></a>

## 4.1. Упаковка базовых служб фреймворка

Установка служб фреймворка делится на две категории:

Первая категория — это основные службы (необходимые), которые должны быть установлены вручную,

Вторая категория — это обычные службы (опциональные), которые могут быть установлены через платформу управления (как обычные службы).

Основные службы, которые требуются для установки вручную: tarsAdminRegistry, tarsregistry, tarsnode, tarsconfig, tarspatch

Обычные службы, которые могут быть установлены через платформу управления: tarsstat, tarsproperty, tarsnotify, tarslog, tarsquerystat, tarsqueryproperty ```Сначала подготовьте пакеты установки первой категории услуг, выполнив следующую команду в каталоге cpp/build/:

make framework-tar

Это создаст пакет framework.tgz в текущем каталоге, этот пакет включает файлы, необходимые для размещения tarsAdminRegistry, tarsregistry, tarsnode, tarsconfig, tarspatch.

Для второй категории служб можно отдельно подготовить пакеты установки:

make tarsstat-tar
make tarsnotify-tar
make tarsproperty-tar
make tarslog-tar
make tarsquerystat-tar
make tarsqueryproperty-tar

Полученные пакеты для размещения после завершения их размещения через платформу управления, подробнее см. раздел 4.4.

Обратите внимание при размещении через платформу управления, выбирать правильный шаблон услуги (по умолчанию он есть, если нет подходящего шаблона, вы можете создать его на платформе управления, содержание шаблона услуги можно найти в tars_template.md)!

4.2. Установка основных служб фреймворка

4.2.1. Установка основных служб

Перейдите к пользователю root, создайте директорию размещения основных служб, как показано ниже:

cd /usr/local/app
mkdir tars
chown ${обычный_пользователь}:${обычный_пользователь} ./tars/

Копируйте уже подготовленные пакеты услуг фреймворка в /usr/local/app/tars/, затем распакуйте их, как показано ниже:

cp build/framework.tgz /usr/local/app/tars/
cd /usr/local/app/tars
tar xzfv framework.tgz

Измените конфигурационные файлы в директориях conf для каждого сервиса, убедитесь, что IP адреса в конфигурациях заменены на IP вашего локального компьютера, как показано ниже:```shell cd /usr/local/app/tars sed -i "s/192.168.2.131/${your_machine_ip}/g" $(grep 192.168.2.131 -rl ./) sed -i "s/db.tars.com/${your_machine_ip}/g" $(grep db.tars.com -rl ./) sed -i "s/registry.tars.com/${your_machine_ip}/g" $(grep registry.tars.com -rl ./*)


**Обратите внимание, что IP-адрес 192.168.2.131 был использован командой TARS при тестировании, его следует заменить на IP-адрес вашей базы данных. Не используйте 127.0.0.1**

**Обратите внимание, что db.tars.com является адресом базы данных TARS, его следует заменить на IP-адрес вашей базы данных**

**Обратите внимание, что registry.tars.com является адресом основного сервиса управления TARS, его следует заменить на IP-адрес вашего сервера управления**

Затем выполните скрипт в директории `/usr/local/app/tars/`, чтобы запустить службы TARS:

chmod u+x tars_install.sh tars_install.sh


**Обратите внимание, если несколько служб не установлены на одном сервере, вам потребуется самостоятельно скопировать и обработать скрипт `tars_install.sh`**

Установите платформу управления и запустите веб-платформу управления (платформа управления должна быть установлена на том же сервере, где установлена `tarspatch`). Переключитесь на пользователя root и выполните:

tarspatch/util/init.sh


Настройте `tarspatch` в платформе управления, убедитесь, что указан путь к исполняемому файлу (`/usr/local/app/tars/tarspatch/bin/tarspatch`).

Настройте `tarsconfig` в платформе управления, убедитесь, что указан путь к исполняемому файлу (`/usr/local/app/tars/tarsconfig/bin/tarsconfig`).
```Для `tarsnode` требуется настроить мониторинг, чтобы избежать случайного отключения после которого он не будет запущен. Это можно сделать с помощью `cron`, как показано ниже:
          • /usr/local/app/tars/tarsnode/util/monitor.sh

## 4.2.2 Увеличение количества сервисов перед установкой `tarsnode`

После успешной установки базовых сервисов, если вы хотите развернуть службы на основе `TARS` на других машинах, то перед расширением в платформе управления, вам потребуется установить службу `tarsnode`.

Если вы просто хотите протестировать службу на одной машине, этот шаг можно пропустить до тех пор, пока не понадобится расширение.

Процесс очень похож на предыдущий раздел, как показано ниже:

Переключитесь на пользователя `root`, создайте директорию для установки базовых сервисов, как показано ниже:

```shell
cd /usr/local/app
mkdir tars
chown ${usual_user}:${usual_user} ./tars/

Скопируйте уже подготовленный пакет с сервисами в директорию /usr/local/app/tars/, затем распакуйте его, как показано ниже:

cp build/framework.tgz /usr/local/app/tars/
cd /usr/local/app/tars
tar xzfv framework.tgz

Измените конфигурационные файлы в директориях conf для каждого сервиса, убедитесь, что ip-адреса в конфигурационных файлах заменены на ip-адрес вашего компьютера:

cd /usr/local/app/tars
sed -i "s/192.168.2.131/${your_machine_ip}/g" $(grep 192.168.2.131 -rl .)
sed -i "s/db.tars.com/${your_machine_ip}/g" $(grep db.tars.com -rl .)
sed -i "s/registry.tars.com/${your_machine_ip}/g" $(grep registry.tars.com -rl .)
```**Обратите внимание, что IP-адрес 192.168.2.131 был использован командой TARS при тестировании, его следует заменить на адрес вашего базового сервера, но не на 127.0.0.1**

**Обратите внимание, что db.tars.com является адресом базового сервера для фреймворка TARS, его следует заменить на адрес вашего базового сервера**

**Обратите внимание, что registry.tars.com является адресом базового сервера для основного сервиса TARSRegistry, его следует заменить на адрес вашего базового сервера**

Затем выполните скрипт в каталоге `/usr/local/app/tars`, чтобы запустить службы фреймворка TARS:

chmod u+x tarsnode_install.sh tarsnode_install.sh


Настройте мониторинг, чтобы избежать случайного отключения и автоматического перезапуска. Для этого настройте cron:
          • /usr/local/app/tars/tarsnode/util/monitor.sh

## 4.3. Установка web-системы управления

> **Перед установкой убедитесь, что установлен фреймворк TARS на Java в локальном репозитории, см. раздел 2.2**
> Каталог с исходным кодом системы управления называется **web**

Измените конфигурационные файлы, расположенные в каталоге `web/src/main/resources`.

- app.config.properties
  Измените на реальные данные вашей базы данных.

```ini
# База данных (db_tars)
tarsweb.datasource.tars.addr={$your_db_ip}:3306
tarsweb.datasource.tars.user=tars
tarsweb.datasource.tars.pswd=tars2015

# Путь хранения пакетов
upload.tgz.path=/usr/local/app/patchs/tars.upload/
  • tars.conf Замените registry1.tars.com и registry2.tars.com на реальные IP-адреса. Можно указать один адрес, а несколько адресов разделять двоеточием ":".```xml
locator = tars.tarsregistry.QueryObj@tcp -h registry1.tars.com -p 17890:tars.tarsregistry.QueryObj@tcp -h registry2.tars.com -p 17890 sync-invoke-timeout = 30000 max-invoke-timeout = 30000 refresh-endpoint-interval = 60000 stat = tars.tarsstat.StatObj asyncthread = 3 modulename = tars.system ``` Соберите артефакт в директории `web`, выполнив команду `mvn clean package`. Это создаст `tars.war` в директории `web/target`.

Развертывание веб-приложения Переместите tars.war в /usr/local/resin/webapps/.

cp ./target/tars.war /usr/local/resin/webapps/

Создайте директорию логов

mkdir -p /data/log/tars

Измените конфигурационный файл resin.xml, расположенный в папке установки Resin Замените стандартную конфигурацию

<host id="" root-directory=".">
    <web-app id="/" root-directory="webapps/ROOT"/>
</host>

На следующую

<host id="" root-directory=".">
    <web-app id="/" document-directory="webapps/tars"/>
</host>

Запустите Resin

/usr/local/resin/bin/resin.sh start

Просмотр сайта Введите ${ваш_ip_машины}:8080 в браузере, чтобы просмотреть сайт, как показано ниже:

tars

4.4. Установка базовых сервисов платформы

Номер порта для размещения платформы указан только в качестве примера, важно обеспечить отсутствие конфликтов портов

4.4.1 Развертывание tarsnotifyПо умолчанию информация развертывания tarsnotify уже была инициализирована при установке основной платформы. После установки управления платформой вы можете видеть следующее:

tars

После загрузки пакета развертывания, он будет выглядеть так:

tars

4.4.2 Развертывание tarsstat

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

tars

После загрузки пакета развертывания, он будет выглядеть так:

tars

4.4.3 Развертывание tarsproperty

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

tars

После загрузки пакета развертывания, он будет выглядеть так:

tars

4.4.4 Развертывание tarslog

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

tars

После загрузки пакета развертывания, он будет выглядеть так:

tars

4.4.5 Развертывание tarsquerystat

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

tars

Обратите внимание, что при развертывании службы выберите протокол отличный от TARS, поскольку Web использует JSON протокол для получения данных мониторинга служб

После загрузки пакета развертывания, он будет выглядеть так:

tars### 4.4.6 Развертывание tarsqueryproperty

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

tars

Обратите внимание, что при развертывании службы выберите протокол отличный от TARS, поскольку Web использует JSON-протокол для получения данных мониторинга свойств.

При загрузке публикационного пакета происходит следующее:

tars

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/liwooood-Tars.git
git@api.gitlife.ru:oschina-mirror/liwooood-Tars.git
oschina-mirror
liwooood-Tars
liwooood-Tars
master