backend-deployment.md 7.2 KB
Newer Older
B
bao liang 已提交
1 2 3 4
# Backend Deployment Document

There are two deployment modes for the backend: 

B
bao liang 已提交
5 6
- automatic deployment  
- source code compile and then deployment
B
bao liang 已提交
7

B
bao liang 已提交
8
## Preparations
B
bao liang 已提交
9

B
bao liang 已提交
10
Download the latest version of the installation package, download address: [gitee download](https://gitee.com/easyscheduler/EasyScheduler/attach_files/) or [github download](https://github.com/analysys/EasyScheduler/releases), download escheduler-backend-x.x.x.tar.gz(back-end referred to as escheduler-backend),escheduler-ui-x.x.x.tar.gz(front-end referred to as escheduler-ui)
B
bao liang 已提交
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29



#### Preparations 1: Installation of basic software (self-installation of required items)

 * [Mysql](http://geek.analysys.cn/topic/124) (5.5+) :  Mandatory
 * [JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html) (1.8+) :  Mandatory
 * [ZooKeeper](https://www.jianshu.com/p/de90172ea680)(3.4.6+) :Mandatory
 * [Hadoop](https://blog.csdn.net/Evankaka/article/details/51612437)(2.6+) :Optionally, if you need to use the resource upload function, MapReduce task submission needs to configure Hadoop (uploaded resource files are currently stored on Hdfs)
 * [Hive](https://staroon.pro/2017/12/09/HiveInstall/)(1.2.1) :   Optional, hive task submission needs to be installed
 * Spark(1.x,2.x) :  Optional, Spark task submission needs to be installed
 * PostgreSQL(8.2.15+) : Optional, PostgreSQL PostgreSQL stored procedures need to be installed

```
 Note: Easy Scheduler itself does not rely on Hadoop, Hive, Spark, PostgreSQL, but only calls their Client to run the corresponding tasks.
```

#### Preparations 2: Create deployment users

B
bao liang 已提交
30
- Deployment users are created on all machines that require deployment scheduling, because the worker service executes jobs in `sudo-u {linux-user}`, so deployment users need sudo privileges and are confidential.
B
bao liang 已提交
31

B
bao liang 已提交
32
```
B
bao liang 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
vi /etc/sudoers

# For example, the deployment user is an escheduler account
escheduler  ALL=(ALL)       NOPASSWD: NOPASSWD: ALL

# And you need to comment out the Default requiretty line
#Default requiretty
```

#### Preparations 3: SSH Secret-Free Configuration
Configure SSH secret-free login on deployment machines and other installation machines. If you want to install easyscheduler on deployment machines, you need to configure native password-free login itself.

- [Connect the host and other machines SSH](http://geek.analysys.cn/topic/113)

#### Preparations 4: database initialization

* Create databases and accounts

51
    Execute the following command to create database and account
B
bao liang 已提交
52
    
B
bao liang 已提交
53
    ```
B
bao liang 已提交
54 55 56 57 58 59
    CREATE DATABASE escheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
    GRANT ALL PRIVILEGES ON escheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
    flush privileges;
    ```

60 61
* creates tables and imports basic data
    Modify the following attributes in ./conf/dao/data_source.properties
B
bao liang 已提交
62 63 64 65 66 67

    ```
        spring.datasource.url
        spring.datasource.username
        spring.datasource.password
    ```
B
bao liang 已提交
68
    
B
bao liang 已提交
69
    Execute scripts for creating tables and importing basic data
B
bao liang 已提交
70
    
B
bao liang 已提交
71 72 73 74 75 76
    ```
    sh ./script/create_escheduler.sh
    ```

#### Preparations 5: Modify the deployment directory permissions and operation parameters

77
     instruction of escheduler-backend directory 
B
bao liang 已提交
78 79 80 81 82 83 84 85 86 87

```directory
bin : Basic service startup script
conf : Project Profile
lib : The project relies on jar packages, including individual module jars and third-party jars
script :  Cluster Start, Stop and Service Monitor Start and Stop scripts
sql : The project relies on SQL files
install.sh :  One-click deployment script
```

88
- Modify permissions (please modify the 'deployUser' to the corresponding deployment user) so that the deployment user has operational privileges on the escheduler-backend directory
B
bao liang 已提交
89 90 91 92 93 94 95 96 97

    `sudo chown -R deployUser:deployUser escheduler-backend`

- Modify the `.escheduler_env.sh` environment variable in the conf/env/directory

- Modify deployment parameters (depending on your server and business situation):

 - Modify the parameters in **install.sh** to replace the values required by your business
   - MonitorServerState switch variable, added in version 1.0.3, controls whether to start the self-start script (monitor master, worker status, if off-line will start automatically). The default value of "false" means that the self-start script is not started, and if it needs to start, it is changed to "true".
98
   - 'hdfsStartupSate' switch variable controls whether to start hdfs
B
bao liang 已提交
99
      The default value of "false" means not to start hdfs
100
      Change the variable to 'true' if you want to use hdfs, you also need to create the hdfs root path by yourself, that 'hdfsPath' in install.sh.
B
bao liang 已提交
101 102 103 104

 - If you use hdfs-related functions, you need to copy**hdfs-site.xml** and **core-site.xml** to the conf directory


B
bao liang 已提交
105
## Deployment
B
bao liang 已提交
106 107
Automated deployment is recommended, and experienced partners can use source deployment as well.

B
bao liang 已提交
108
### Automated Deployment
B
bao liang 已提交
109 110 111 112 113 114 115 116 117

- Install zookeeper tools

   `pip install kazoo`

- Switch to deployment user, one-click deployment

    `sh install.sh` 

118
- Use the `jps` command to check if the services are started (`jps` comes from `Java JDK`)
B
bao liang 已提交
119 120 121 122 123 124 125 126

```aidl
    MasterServer         ----- Master Service
    WorkerServer         ----- Worker Service
    LoggerServer         ----- Logger Service
    ApiApplicationServer ----- API Service
    AlertServer          ----- Alert Service
```
127 128

If all services are normal, the automatic deployment is successful
B
bao liang 已提交
129 130 131 132


After successful deployment, the log can be viewed and stored in a specified folder.

B
bao liang 已提交
133
```logPath
B
bao liang 已提交
134 135 136 137 138 139 140 141
 logs/
    ├── escheduler-alert-server.log
    ├── escheduler-master-server.log
    |—— escheduler-worker-server.log
    |—— escheduler-api-server.log
    |—— escheduler-logger-server.log
```

B
bao liang 已提交
142
### Compile source code to deploy
B
bao liang 已提交
143 144 145 146 147 148 149 150 151 152 153

After downloading the release version of the source package, unzip it into the root directory

* Execute the compilation command:

```
 mvn -U clean package assembly:assembly -Dmaven.test.skip=true
```

* View directory

154
After normal compilation, ./target/escheduler-{version}/ is generated in the current directory
B
bao liang 已提交
155 156


B
bao liang 已提交
157
### Start-and-stop services commonly used in systems (for service purposes, please refer to System Architecture Design for details)
B
bao liang 已提交
158

159
* stop all services in the cluster
B
bao liang 已提交
160 161 162
  
   ` sh ./bin/stop_all.sh`
   
163
* start all services in the cluster
B
bao liang 已提交
164 165 166
  
   ` sh ./bin/start_all.sh`

167
* start and stop one master server
B
bao liang 已提交
168

B
bao liang 已提交
169
```master
B
bao liang 已提交
170 171 172 173
sh ./bin/escheduler-daemon.sh start master-server
sh ./bin/escheduler-daemon.sh stop master-server
```

174
* start and stop one worker server
B
bao liang 已提交
175

B
bao liang 已提交
176
```worker
B
bao liang 已提交
177 178 179 180
sh ./bin/escheduler-daemon.sh start worker-server
sh ./bin/escheduler-daemon.sh stop worker-server
```

181
* start and stop api server
B
bao liang 已提交
182

B
bao liang 已提交
183
```Api
B
bao liang 已提交
184 185 186
sh ./bin/escheduler-daemon.sh start api-server
sh ./bin/escheduler-daemon.sh stop api-server
```
187
* start and stop logger server
B
bao liang 已提交
188

B
bao liang 已提交
189
```Logger
B
bao liang 已提交
190 191 192
sh ./bin/escheduler-daemon.sh start logger-server
sh ./bin/escheduler-daemon.sh stop logger-server
```
193
* start and stop alert server
B
bao liang 已提交
194

B
bao liang 已提交
195
```Alert
B
bao liang 已提交
196 197 198 199
sh ./bin/escheduler-daemon.sh start alert-server
sh ./bin/escheduler-daemon.sh stop alert-server
```

B
bao liang 已提交
200
## Database Upgrade
201
Database upgrade is a function added in version 1.0.2. The database can be upgraded automatically by executing the following command:
B
bao liang 已提交
202 203 204 205 206 207

```upgrade
sh ./script/upgrade_escheduler.sh
```