lotus/documentation/en/mining/lotus-seal-worker.md

92 lines
3.6 KiB
Markdown
Raw Normal View History

# Lotus Worker
The **Lotus Worker** is an extra process that can offload heavy processing tasks from your **Lotus Miner**. The sealing process automatically runs in the **Lotus Miner** process, but you can use the Worker on another machine communicating over a fast network to free up resources on the machine running the mining process.
## Installation
The `lotus-worker` application is installed along with the others when running `sudo make install` as shown in the [Installation section](en+install-linux). For simplicity, we recommend following the same procedure in the machines that will run the Lotus Workers (even if the Lotus miner and the Lotus daemon are not used there).
## Setting up the Miner
### Allow external connections to the miner API
2020-07-08 10:38:59 +00:00
First, you will need to ensure your `lotus-miner`'s API is accessible over the network.
2020-07-08 10:53:04 +00:00
To do this, open up `~/.lotusminer/config.toml` (Or if you manually set `LOTUS_MINER_PATH`, look under that directory) and look for the API field.
Default config:
```toml
[API]
ListenAddress = "/ip4/127.0.0.1/tcp/2345/http"
2020-05-12 19:09:40 +00:00
RemoteListenAddress = "127.0.0.1:2345"
```
To make your node accessible over the local area network, you will need to determine your machine's IP on the LAN (`ip a`), and change the `127.0.0.1` in the file to that address.
A more permissive and less secure option is to change it to `0.0.0.0`. This will allow anyone who can connect to your computer on that port to access the miner's API, though they will still need an auth token.
`RemoteListenAddress` must be set to an address which other nodes on your network will be able to reach.
2020-05-12 19:09:40 +00:00
### Create an authentication token
Write down the output of:
```sh
lotus-miner auth api-info --perm admin
```
The Lotus Workers will need this token to connect to the miner.
## Connecting the Lotus Workers
On each machine that will run the `lotus-worker` application you will need to define the following *environment variable*:
```sh
export MINER_API_INFO:<TOKEN>:/ip4/<miner_api_address>/tcp/2345`
```
If you are trying to use `lotus-worker` from China. You should additionally set:
```sh
export IPFS_GATEWAY="https://proof-parameters.s3.cn-south-1.jdcloud-oss.com/ipfs/"
```
Once that is done, you can run the Worker with:
```sh
lotus-worker run
```
> If you are running multiple workers on the same host, you will need to specify the `--listen` flag and ensure each worker is on a different port.
On your Lotus miner, check that the workers are correctly connected:
2019-12-18 18:48:15 +00:00
```sh
lotus-miner sealing workers
Worker 0, host computer
CPU: [ ] 0 core(s) in use
RAM: [|||||||||||||||||| ] 28% 18.1 GiB/62.7 GiB
VMEM: [|||||||||||||||||| ] 28% 18.1 GiB/62.7 GiB
GPU: GeForce RTX 2080, not used
Worker 1, host othercomputer
CPU: [ ] 0 core(s) in use
RAM: [|||||||||||||| ] 23% 14 GiB/62.7 GiB
VMEM: [|||||||||||||| ] 23% 14 GiB/62.7 GiB
GPU: GeForce RTX 2080, not used
2019-12-18 01:19:46 +00:00
```
2020-06-10 09:41:58 +00:00
## Running locally for manually managing process priority
2020-06-10 09:41:58 +00:00
You can also run the **Lotus Worker** on the same machine as your **Lotus Miner**, so you can manually manage the process priority.
To do so you have to first __disable all seal task types__ in the miner config. This is important to prevent conflicts between the two processes.
2020-06-10 09:41:58 +00:00
You can then run the miner on your local-loopback interface;
2020-06-10 09:41:58 +00:00
```sh
lotus-worker run
```