Imagine a world where you can choose self-contained pieces of code (called microservices) and make them run anywhere you want at the push of a button. Where you can remotely control the code that is running on twenty iPhones in workers' pockets, thirty servers running in a factory building, and ten computers running in the trucks that ship your products... and you can do it all with the same single technology. Imagine a world where you move the processing close to where the data is happening, and where you can finally separate streams of information from the end applications that use them. This world will be brought to life by iofog, and a big part of the vision is the ioFog product that runs on the various computers.
This repository is the production code base for the x86 Linux version of the ioFog product.
ioFog is a service that runs constantly in the background on a Linux machine. It is the agent that turns a Linux computer into a piece of the iofog I/O compute fog.
There should be an ioFog code base for every processing platform that becomes part of the I/O compute fog. Network connectivity, process invocation, thread management, and other details of an ioFog will vary from platform to platform. The same ioFog principles apply to every version, but the implementation of the principles should match the native languages and structures best suited for the platform.
- Never go down
- Respond immediately to the fog controller
- Operate flawlessly when offline
- Report status frequently and reliably
- Execute instructions with no understanding of the bigger picture
- Provide a high-performance message bus and local API
- Enforce the configured resource consumption constraints strictly
- Allow the most flexible and powerful processing element model possible
- Be able to instantiate processing elements from any available source
- Be able to communicate with any reachable fog controller
- Allow processing elements to implement security and connectivity as they would natively
- Ensure that complying with the local API is the only requirement placed on a processing element
- Only shutdown or restart processing elements when requested or when absolutely necessary
- Run only processing elements with verified source and integrity
- Never allow a message to reach unauthorized processing elements
- Only allow messages of the proper registered type to reach processing elements
- Guarantee message source and order
See the docs folder in this repository for architecture, project microculture, engineering philosophy, functional specifications, and more.
ioFog Agent Setup
The entire ioFog platform is best deployed through the unified CLI: iofogctl
.
Go to iofog.org to learn how to deploy the ioFog Control Plane and Agents.
Usage
1. To view help menu
sudo iofog-agent help
2. To view current status
sudo iofog-agent status
3. To view version and license
sudo iofog-agent version
4. To view current configuration
sudo iofog-agent info
5. Provision iofog for use
sudo iofog-agent provision ABCDWXYZ
Logs
- Log files are located at '/var/log/iofog-agent'
System Requirements (Recommended)
- Processor: 64 bit Dual Core or better
- RAM: 1 GB minimum
- Hard Disk: 5 GB minimum
- Java Runtime (JRE) 8 or higher
- Docker 1.10 or higher
- Linux kernel 3.10 or higher
Platforms Supported (Ubuntu Linux)
- 14.04 - Trusty Tahr
- 16.04 - Xenial Xerus
- ioFog Agent Update:
sudo service iofog-agent stop
sudo apt-get install --only-upgrade iofog-agent
sudo service iofog-agent start
or
sudo service iofog-agent stop
sudo apt-get install --only-upgrade iofog-agent-dev (developer's version)
sudo service iofog-agent stop